- 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修复,指针全部有效 |   
 
 
 
 |