把ddztool.exe拖到fi.exe的图标上用fi监测信息:ASPack v2.12 加过壳的
这个好像很容易,瞎猫也能撞到死老鼠。hehe
od载入ddztool.exe,单步跳过pushad
双击右边寄存器窗口中ESP,得到它的值:0012FFC4
在命令行窗口输入 HR 0012FFC4 ,回车下内存访问断点
F9运行,中断在一条跳转指令处,F7单步,3次到了这里:
0045E410 55 push ebp
0045E411 8BEC mov ebp,esp
0045E413 83C4 F0 add esp,-10
0045E416 53 push ebx
0045E417 56 push esi
0045E418 33C0 xor eax,eax
0045E41A 8945 F0 mov dword ptr ss:[ebp-10],eax
0045E41D B8 A8E14500 mov eax,DdzTool.0045E1A8
0045E422 E8 1182FAFF call DdzTool.00406638
wk!很熟悉啊,YES! 正是我要的。在cpu窗口右健选择脱壳在当前调试的进程。
获取eip值作为oep,脱克之,给个名字:unpack.exe,搞定。运行一下,可以正常工作。
把unpack.exe拖到fi.exe的图标上,用fi监测程序信息:Borland Delphi
现在把它的5次运行限制去掉。
是delphi的就好了,用DeDe来打开unpack.exe,可以得到很多有用信息
在procedures里面,看TForm1的事件,竟然有一个事件的名字叫做ReadDeskControl1GameOver
这看起来很象判断结束的地方,果然在里面发现一下指令:
* Reference to: controls.TControl.SetText(TControl;TCaption);
|
0045D212 E839B8FCFF call 00428A50
0045D217 833D3496470005 cmp dword ptr [$00479634], +$05
0045D21E 7C4B jl 0045D26B
0045D220 803D1196470000 cmp byte ptr [$00479611], $00
0045D227 7432 jz 0045D25B
0045D229 8D55F0 lea edx, [ebp-$10]
比较是否已使用超过5次。。。。。。。用od打开unpack.exe,在cpu窗口 ctrl+G 前往:0045D21E
双击,修改成:jmp short 0045D26B
右健选择复制到可执行文件。保存到cracked.exe,搞定。
运行cracked.exe看看成果。。。。。:-D
islq 2005-7-16