手动脱壳----PECompact 2.x -> Jeremy Collake
2013-04-21 00:36
1031 查看
网上也有很多手动脱壳的教程,但是光看不写总觉的像自己没学过似的。
操作环境:
操作系统:Windows 7 Ultimate
OD版本:Olldbg 1.10
被脱壳软件:文章最后提供下载
下边利用ESP原理脱壳。
首先使用OD载入图标王程序,出现提示确定即可。开头的代码如下:
单步执行完00405A9E处的PUSH EAX后,观察ESP寄存器为:
下一步就在ESP指向的位置设置硬件访问断点,在命令框中输入:
按下F9,使程序直接运行,在我运行时出现违规异常,按下Shift+F9忽略异常。
程序运行到这里中断:
那么在这之后一直单步执行直到:
当执行完0x0042C89B中JMP EAX指令后,程序就会跳到程序入口点执行:
这时,使用OllyDump插件进行脱壳即可。
注意的是,并不是程序刚刚运行到程序入口点才能够使用OllyDump脱壳,如果一不小心运行过了之后,在脱壳设置时,手动将入口点地址处的数值修改为入口点地址-起始地址即可,如本程序中入口点地址应该是405A99 - 400000 = 5A99
好了,到这里就脱壳完毕了。
软件下载:实验程序----图标王
在此感谢图标王编写作者~
操作环境:
操作系统:Windows 7 Ultimate
OD版本:Olldbg 1.10
被脱壳软件:文章最后提供下载
下边利用ESP原理脱壳。
首先使用OD载入图标王程序,出现提示确定即可。开头的代码如下:
00405A99 > $ B8 D0C74200 MOV EAX,图标王.0042C7D0 00405A9E . 50 PUSH EAX 00405A9F . 64:FF35 00000>PUSH DWORD PTR FS:[0] 00405AA6 . 64:8925 00000>MOV DWORD PTR FS:[0],ESP 00405AAD . 33C0 XOR EAX,EAX 00405AAF . 8908 MOV DWORD PTR DS:[EAX],ECX 00405AB1 . 50 PUSH EAX 00405AB2 . 45 INC EBP
单步执行完00405A9E处的PUSH EAX后,观察ESP寄存器为:
ESP 0012FF8C
下一步就在ESP指向的位置设置硬件访问断点,在命令框中输入:
hr 12ff88
按下F9,使程序直接运行,在我运行时出现违规异常,按下Shift+F9忽略异常。
程序运行到这里中断:
76DC8D0B 3B45 F8 CMP EAX,DWORD PTR SS:[EBP-8] 76DC8D0E 72 09 JB SHORT ntdll.76DC8D19 76DC8D10 3B45 F4 CMP EAX,DWORD PTR SS:[EBP-C] 76DC8D13 0F82 E9EF0400 JB ntdll.76E17D02
那么在这之后一直单步执行直到:
0042C87D 8985 23120010 MOV DWORD PTR SS:[EBP+10001223],EAX 0042C883 8BF0 MOV ESI,EAX 0042C885 59 POP ECX 0042C886 5A POP EDX 0042C887 03CA ADD ECX,EDX 0042C889 68 00800000 PUSH 8000 0042C88E 6A 00 PUSH 0 0042C890 57 PUSH EDI 0042C891 FF11 CALL DWORD PTR DS:[ECX] 0042C893 8BC6 MOV EAX,ESI 0042C895 5A POP EDX 0042C896 5E POP ESI 0042C897 5F POP EDI 0042C898 59 POP ECX 0042C899 5B POP EBX ; 7FFD6000 0042C89A 5D POP EBP 0042C89B FFE0 JMP EAX
当执行完0x0042C89B中JMP EAX指令后,程序就会跳到程序入口点执行:
00405A99 > $ 55 PUSH EBP 00405A9A ? 8BEC MOV EBP,ESP 00405A9C ? 6A FF PUSH -1 00405A9E . 68 089D4100 PUSH 图标王.00419D08 00405AA3 ? 68 D08B4000 PUSH 图标王.00408BD0 00405AA8 ? 64:A1 0000000>MOV EAX,DWORD PTR FS:[0] 00405AAE ? 50 PUSH EAX 00405AAF . 64:8925 00000>MOV DWORD PTR FS:[0],ESP
这时,使用OllyDump插件进行脱壳即可。
注意的是,并不是程序刚刚运行到程序入口点才能够使用OllyDump脱壳,如果一不小心运行过了之后,在脱壳设置时,手动将入口点地址处的数值修改为入口点地址-起始地址即可,如本程序中入口点地址应该是405A99 - 400000 = 5A99
好了,到这里就脱壳完毕了。
软件下载:实验程序----图标王
在此感谢图标王编写作者~
相关文章推荐
- 如何脱壳:PECompact 1.68 - 1.84 -> Jeremy Collake [Overlay]
- ASPack 2.x (without poly) -> Alexey Solodovnikov [Overlay] 手动脱壳
- ESP定律 和手动脱壳原理分析 <转>
- 脱 PECompact 2.x -> Jeremy Collake 壳
- UPX 0.89.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo 手动脱壳
- UPX 0.89.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo 手动脱壳
- 手动脱壳UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo教程
- 手脫 -- PECompact 2.x -&gt; Jeremy Collake
- UPX 0.80 - 1.24 DLL -> Markus & Laszlo [Overlay]脱壳后修复出问题
- 手动脱ASPack 2.12 -> Alexey Solodovnikov
- 脱《唐诗三百首1.2》壳(PEBundle 0.2 - 3.x -> Jeremy Collake)并提取MID数据
- HTML5 2D游戏引擎研发系列 第四章 <Canvas技术篇-画布技术-基于手动切片动画>
- 手动脱UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo+修复
- 脱壳脚本_手脱壳ASProtect 2.1x SKE -> Alexey Solodovnikov
- 【图】脱壳ASProtect 2.1x SKE -> Alexey Solodovnikov
- 12->手动创建数据库
- 脱壳第二讲,手动脱壳PECompact 2.x
- DataGridView分页功能的实现<纯手动方式>
- 手动脱壳之PECompact
- <转>美能达手动镜头——版本问题