| 
注册时间2008-3-1
阅读权限20
最后登录1970-1-1UID47764 以武会友  
 
 该用户从未签到 | 
 
| 今天拿飘云老大的密码学工具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本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?加入我们 
  评分
查看全部评分
 |