- UID
- 61793
注册时间2009-5-2
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
在unpack的『 脱壳申请 』区看见有人求脱MoleBox 的壳,我看了一下,还能脱,跟大家分享一下
http://www.unpack.cn/viewthread.php?tid=39091&extra=page%3D1
1脱壳
OD载入,入口如下:-
- 00B34BD3 > B8 00000000 mov eax,0
- 00B34BD8 60 pushad
- 00B34BD9 E8 4F000000 call LUNAClie.00B34C2D
复制代码 F8单步到call LUNAClie.00B34C2D后在命令窗口 hr ESP下一个硬件断点
先不要运行,在下一 BP VirtualProtect断点
然后Shift+F9运行,看堆栈,出现"KERNEL32.dll"(Shift+F9 8次)
取消断点,Alt+F9返回
来到-
- 00B3C66C 85C0 test eax,eax
- 00B3C66E 75 0A jnz short LUNAClie.00B3C67A
复制代码 Ctrl+B,在HEX+02 右边的那个框里面输入8901(注意整个段块前面的复选框不要选上)
搜索到:
00B3C682 8901 mov dword ptr ds:[ecx],eax
把这句NOP掉
Shift+F9 运行(此时的硬件断点还在),来到-
- 00B347B1 58 pop eax ; kernel32.7C816FE7
- 00B347B2 58 pop eax
- 00B347B3 FFD0 call eax
- 00B347B5 E8 F5CB0000 call LUNAClie.00B413AF
复制代码 在call eax 处F7进入
005B2FA0 /E9 AB8C3000 jmp LUNAClie.008BBC50
跳向OEP-
- 008BBC50 55 push ebp
- 008BBC51 8BEC mov ebp,esp
- 008BBC53 6A FF push -1
- 008BBC55 68 783D9200 push LUNAClie.00923D78
- 008BBC5A 68 E0775A00 push LUNAClie.005A77E0
复制代码 用LoadPe脱壳
2手动查找IAT
在008BBC99 FF15 40F8B200 call dword ptr ds:[B2F840] ; kernel32.GetVersionExA
处右键->数据窗口中跟随->内存地址
此时保证数据窗口的显示方式是地址形式(如果不是,右键->长型->地址)
往上翻,直到:
00B2F5E4 00000000
00B2F5E8 6D18D926 DINPUT8.DirectInput8Create
再往上就没有系统API了,记录数据1:00B2F5E4
再往下翻,直到:
00B2FAC4 769B2A54 ole32.CoInitialize
00B2FAC8 00000000
再往下就没有系统API了,记录数据2:00B2FAC8
我们的RVA=00B2F5E4-00400000=72F5E4
IAT大小=00B2FAC8-00B2F5E4=4E4
OEP=4BBC50
用importRec修复,指针全部有效 |
|