- UID
 - 47764
 
 注册时间2008-3-1
阅读权限20
最后登录1970-1-1
以武会友 
   
 
 
 
该用户从未签到  
 | 
 
今天拿飘云老大的密码学工具2.0来脱壳 希望老大见谅 没办法 咔吧老是要杀他 总想把他免杀 前天才读了 
某牛人文章 有点启发  遂尝试了一番 有点心得 与大家一起分享 
首先查壳 MoleBox V2.3X -> MoleStudio.com   * Sign.By.fly [Overlay] * 这个壳我有恐惧证 
找打包的DLL十分麻烦,脱起来也不是很好脱。 
bp GetFileTime    查看打包的DLL名和个数,断下后返回,可以看到PYG2.DLL 
只有一个,还比较好,多了就麻烦了。 
OD载入 
0054D7F3 密>  E8 00000000                  call 密码学综.0054D7F8 
0054D7F8     60                            pushad               ESP定律下个断点 
0054D7F9     E8 4F000000                   call 密码学综.0054D84D 
0054D7FE     D4 C7                         aam 0C7 
0054D800     86ED                          xchg ch,ch 
0054D802     84CF                          test bh,cl 
0054D804     3B79 69                       cmp edi,dword ptr ds:[ecx+69] 
0054D807     EB 39                         jmp short 密码学综.0054D842 
 
然后bp VirtualProtect 返回3次后 将89 01 nop掉,大家都很熟练的,不详细说了,但是老大这工具 
有点特殊 不用这步,IAT修复的时候,跟踪等级1可以搞定。好了不说了,继续 
 
取消VirtualProtect断点 bp GreateFileA  
0012FCA0   00555696  /CALL 到 CreateFileA 来自 密码学综.00555690 
0012FCA4   00AD1A30  |FileName = "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\MBX@BF8@A53010.###" 
0012FCA8   40000000  |Access = GENERIC_WRITE 
0012FCAC   00000000  |ShareMode = 0 
0012FCB0   00000000  |pSecurity = NULL 
0012FCB4   00000002  |Mode = CREATE_ALWAYS 
0012FCB8   00000000  |Attributes = 0 
0012FCBC   00000000  \hTemplateFile = NULL 
 
将他随机创建的文件MBX@BF8@A53010.###  改为PYG2.DLL 
bp GetModuleHandleA中断两次后返回 
0012F484   0055398E  /CALL 到 GetModuleHandleA 来自 密码学综.00553988 
0012F488   00000000  \pModule = NULL 
0012F48C   00000001 
在这里就是F8往下找了,这里有个特征码就是call dword ptr ss:[ebp-58] 一般大致都一样的,偏移不同而已 
要是你找不到,你就老实往下找,发现类似call dword ptr ss:[ebp-X] 跟就去就是了 
然后在这里下个断 F7进去 
00CC5000    /EB 06                         jmp short PYG2.00CC5008 
00CC5002    |68 5CD80500                   push 5D85C 
00CC5007    |C3                            retn 
00CC5008    \9C                            pushfd 
00CC5009     60                            pushad 
00CC500A     E8 02000000                   call PYG2.00CC5011 
00CC500F     33C0                          xor eax,eax 
00CC5011     8BC4                          mov eax,esp 
00CC5013     83C0 04                       add eax,4 
 
到了DLL的OEP了,一个跳,还有pushfd pushad 大家最熟悉的,上面的push 5D85C retn 大家也很熟悉 
后面大家就知道了 那在这里就在用下ESP定律吧,完了后就到OEP了,DLL解包完成 
00CAD85C     55                            push ebp 
00CAD85D     8BEC                          mov ebp,esp 
00CAD85F     83C4 C4                       add esp,-3C 
00CAD862     B8 7CD6CA00                   mov eax,PYG2.00CAD67C 
00CAD867     E8 7090FAFF                   call PYG2.00C568DC 
00CAD86C     E8 876BFAFF                   call PYG2.00C543F8 
00CAD871     8D40 00                       lea eax,dword ptr ds:[eax] 
00CAD874     0000                          add byte ptr ds:[eax],al 
 
好熟悉DELPHI的入口,看OEP就像刚才的吧,这里就可以dump了,选取DLL 
修复IAT,选取DLL 选项里去掉使用磁盘PE头的勾,OEP填5D8DC 然后就可以了,记下模块加载的基础地址 
C50000 
完了后用PE编辑器将DLL ImageBase 改为C50000  名字改为PYG2.DLL 
打包的DLL到此找完了 
删除刚才解压DLL的硬件断点 继续往下跑,开始的硬件断点还在的 SHIFT+F9跑中间有异常不管 
0054D3D1     58                            pop eax                                        ; 密码学综.004FAD5B 
0054D3D2     FFD0                          call eax 
0054D3D4     E8 6BA70000                   call 密码学综.00557B44 
0054D3D9     CC                            int3 
0054D3DA     CC                            int3 
0054D3DB     CC                            int3 
 
到这里停下来 很熟悉了吧  脱主程序经常见到的 call eax进去就是OEP了 
004FAD5B     68 1CB0D5FF                   push FFD5B01C 
004FAD60   - E9 F7F50400                   jmp 密码学综.0054A35C 
004FAD65     8B1F                          mov ebx,dword ptr ds:[edi] 
004FAD67     AC                            lods byte ptr ds:[esi] 
004FAD68     68 5191B1BC                   push BCB19151 
004FAD6D     C109 C5                       ror dword ptr ds:[ecx],0C5 
004FAD70     B2 FB                         mov dl,0FB 
004FAD72     F1                            int1 
004FAD73     D7                            xlat byte ptr ds:[ebx+al] 
004FAD74     0398 0F5B8986                 add ebx,dword ptr ds:[eax+86895B0F] 
004FAD7A     2C B2                         sub al,0B2 
004FAD7C     36:8D29                       lea ebp,dword ptr ss:[ecx] 
004FAD7F     C7                            ???                                            ; 未知命令 
代码很乱 凭直觉不是OEP  估计又是一层壳,在这里ESP定律我也试过,貌似不行 
打开内存镜像 CODE段F2 ,经过几次后到这里 
00DE043A     881C01                        mov byte ptr ds:[ecx+eax],bl 
00DE043D     E9 4A010000                   jmp 00DE058C 
00DE0442     8D8C7E B0010000               lea ecx,dword ptr ds:[esi+edi*2+1B0] 
00DE0449     E8 46FCFFFF                   call 00DE0094 
00DE044E     85C0                          test eax,eax 
00DE0450     75 05                         jnz short 00DE0457 
00DE0452     8B45 EC                       mov eax,dword ptr ss:[ebp-14] 
 
代码还是比较乱 不像OEP F8跑吧 不要回跳,你会发现VirtualFree函数调用,表示壳即将要处理完了 
到这里后 比较熟悉的出口点 
004FAFC1     61                            popad 
004FAFC2     9D                            popfd 
004FAFC3     B8 01000000                   mov eax,1 
004FAFC8     C2 0C00                       retn 0C 
004FAFCB     61                            popad 
004FAFCC     9D                            popfd 
004FAFCD   - E9 EED7F8FF                   jmp 密码学综.004887C0 
004FAFD2     8BB5 41FBFFFF                 mov esi,dword ptr ss:[ebp-4BF] 
004FAFD8     0BF6                          or esi,esi 
那个jmp 过去就是OEP了 dump吧  
004887C0     55                            push ebp 
004887C1     8BEC                          mov ebp,esp 
004887C3     83C4 F0                       add esp,-10 
004887C6     B8 20854800                   mov eax,密码学综.00488520 
004887CB     E8 9CD8F7FF                   call 密码学综.0040606C 
004887D0     A1 F4A84800                   mov eax,dword ptr ds:[48A8F4] 
004887D5     8B00                          mov eax,dword ptr ds:[eax] 
004887D7     E8 1882FDFF                   call 密码学综.004609F4 
004887DC     A1 F4A84800                   mov eax,dword ptr ds:[48A8F4] 
004887E1     8B00                          mov eax,dword ptr ds:[eax] 
004887E3     BA 20884800                   mov edx,密码学综.00488820 
004887E8     E8 177EFDFF                   call 密码学综.00460604 
004887ED     8B0D 04AA4800                 mov ecx,dword ptr ds:[48AA04]                  ; 密码学综.0048C104 
004887F3     A1 F4A84800                   mov eax,dword ptr ds:[48A8F4] 
 
 
 DELPHI的入口(其实老大已经说了他这个是用DELPHI写的)运行,一切正常 
终于结束了,要是一次不行,多跑两次就好了 
然后准备免杀 用咔吧扫了下 很平静 省了免杀功夫了 原来是壳在做怪 脱掉就OK了 
全过程到此完毕   多谢飘云老大的东西 |   
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们 
 
 
 
x
 
 
评分
- 
查看全部评分
 
 
 
 
 
 |