本帖最后由 wgz001 于 2011-11-29 21:39 编辑
第一步:bp VirtualProtect
按F9 运行直到栈出现: PAGE_READONLY 如图: 第二步:到代码段下内在访问断点如图: F9 断下后,删除内在断点:如图 然后单步F7往下:直到看见一个JNZ ,JMP连在一起,运行到JNZ后,在JMP处下一个F2断点,F9运行,断下后自效验完了,要删除这个断点 ,再去代码段下一个内在访问断点,F9运行,就到OEP了,册除内存断点 把OEP记下,要配置用的如图: 配置脚本: Mov first,
这里填OEP 所以到OEP了以后要记录它的地址 接下来F7单步往下找第二个要填写的地址,一直F7过几JMP长跳后会到这里:如图: 0046617A
- 0F84 495CFFFF
JE delphi7?0045BDC9 这句很有特点,但我们要记录的是这句: 00466171
BD 92E94300
MOV EBP,delphi7?0043E992 记录完F7几次继续往下就到这里: 这里我们要记录一句: 0045BDCE
8BAD 42850100
MOV EBP,DWORD PTR SS:[EBP+18542] 然后F7单步到第一句后看 信息窗口见: 在信息窗口对准:EDAE30E1 右键选在数据窗口中跟随,然后下第一个字节的 硬件写入断点如图: F7到这一句: 0045BDDB
8DAD 6086D28E
LEA EBP,DWORD PTR SS:[EBP+8ED28660] 并记录下来,这些都是填充的地址 接下来,重载,然后ctr+G去下这个函数:VirtualProtect断点,如图: F9几次好象是8次左右,这时看堆栈: 刚才这里有VirtualProtect的调用过程,但现在没有了,说明到了解压的地方了, 再F9一次,然后,鼠标往上翻一下看见下图:这里是填充的地方了 记录这一句: 004B5B72
8910
MOV DWORD PTR DS:[EAX],EDX 它的地址就是脚本要填的第二个配置项了: Mov write ,
004B5B72 接下来找getAP脚本第三项: 我们在这句: 004B5B72
8910
MOV DWORD PTR DS:[EAX],EDX 下断,然后删除硬件断点和函数点,F9四次到信息窗口如 下图: 打开 执行:open
run tract, 再执行:tract
into , 然后F9两次断下后,打开View,执行:run tract 查看记录, 然后右键执行:Log
to
file
,打开如图: 注意:上面的钩要选完才行 执行:打开铵钮,再右键:执行: close log file,然后,去debug菜单执行:close run tract, 然后关闭记录窗口,可以查看记录文件 了。这时在记录文件中查找这一句: MOV EAX,DWORD PTR SS:[EAX] 找到的是: 004B372E
Main
MOV EAX,DWORD PTR SS:[EAX]
EAX=2855286C 把上面这地址:004B372E填到脚本第三项得:mov getapi,004B372E 下面找最后两项: 把上面的断点删除,ctrl+G 输入:004B372E,然后这里下F2断点,执行F9五次,信息窗口出现: 然后在这信息窗口的函数上右键,执行:Follow Address in Dump,接下来,在数据窗口右键执行:long
Address,这里见到的是伪函数,所以,往下接找到: 地址:0012F7FC就是 脚本 里:mov begin
填的地址:所以: mov begin,0012F7FC 再往下拉,找到函数尾:如图: 这里的地址:0012FB98 就是脚本,最一个要找的变量地址了:填写好: mov end,0012FB98 保存好脚本,删除所有的断点,重载程序,然后跟脚本就行了 跑完脚本,到OEP后,用LordPE
来Dump,注意LordPE的设置如图: 主要是去掉:完整转存:从磁盘粘贴文件头,这一项不要。然后,修正镜像,再完整转存。即可。 Dump完以后用LordPE 打开它修改入口点:如图: 修改前: 修改后: 保存一下,打开目录项:见图: 这里要修改好几个: 1、
输出表,填零,保存。如图: 2、点Tls表:后面的 按钮打开如图: 修改回调表 这项:改成零:如图: 保存。 接下来把IAT也改成零:如图: 保存,退出 来到: 点保存,再点区段查看一下没有什么问题了。 现在我脱出来的文件在本机可以运行了,但不能跨平台运行。 所以等下要修复跨平台。 打开 CFF工具,把脱壳修复过的文件拖进CFF工具里,然后,点 :引入添加器, 再点添加按钮: 再点: 然后点: 再点: 点确定,点CFF的保存。关闭CFF工具。完成任务了。只要我们拷贝这三个文件 : 另一台电脑就可能运行了。 到这里可能跨平台运行了。 |