frozenrain 发表于 2008-11-6 09:07:45

脱飘云老大密码学综合工具2.0

今天拿飘云老大的密码学工具2.0来脱壳 希望老大见谅 没办法 咔吧老是要杀他 总想把他免杀 前天才读了
某牛人文章 有点启发遂尝试了一番 有点心得 与大家一起分享
首先查壳 MoleBox V2.3X -> MoleStudio.com   * Sign.By.fly * 这个壳我有恐惧证
找打包的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:
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: 一般大致都一样的,偏移不同而已
要是你找不到,你就老实往下找,发现类似call dword ptr ss: 跟就去就是了
然后在这里下个断 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:
00CAD874   0000                        add byte ptr ds:,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:
004FAD67   AC                            lods byte ptr ds:
004FAD68   68 5191B1BC                   push BCB19151
004FAD6D   C109 C5                     ror dword ptr ds:,0C5
004FAD70   B2 FB                         mov dl,0FB
004FAD72   F1                            int1
004FAD73   D7                            xlat byte ptr ds:
004FAD74   0398 0F5B8986               add ebx,dword ptr ds:
004FAD7A   2C B2                         sub al,0B2
004FAD7C   36:8D29                     lea ebp,dword ptr ss:
004FAD7F   C7                            ???                                          ; 未知命令
代码很乱 凭直觉不是OEP估计又是一层壳,在这里ESP定律我也试过,貌似不行
打开内存镜像 CODE段F2 ,经过几次后到这里
00DE043A   881C01                        mov byte ptr ds:,bl
00DE043D   E9 4A010000                   jmp 00DE058C
00DE0442   8D8C7E B0010000               lea ecx,dword ptr ds:
00DE0449   E8 46FCFFFF                   call 00DE0094
00DE044E   85C0                        test eax,eax
00DE0450   75 05                         jnz short 00DE0457
00DE0452   8B45 EC                     mov eax,dword ptr ss:

代码还是比较乱 不像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:
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:
004887D5   8B00                        mov eax,dword ptr ds:
004887D7   E8 1882FDFF                   call 密码学综.004609F4
004887DC   A1 F4A84800                   mov eax,dword ptr ds:
004887E1   8B00                        mov eax,dword ptr ds:
004887E3   BA 20884800                   mov edx,密码学综.00488820
004887E8   E8 177EFDFF                   call 密码学综.00460604
004887ED   8B0D 04AA4800               mov ecx,dword ptr ds:                  ; 密码学综.0048C104
004887F3   A1 F4A84800                   mov eax,dword ptr ds:


DELPHI的入口(其实老大已经说了他这个是用DELPHI写的)运行,一切正常
终于结束了,要是一次不行,多跑两次就好了
然后准备免杀 用咔吧扫了下 很平静 省了免杀功夫了 原来是壳在做怪 脱掉就OK了
全过程到此完毕   多谢飘云老大的东西

mojingtai 发表于 2008-11-6 21:41:51

兄弟,还是你厉害。动老大的东东/:017

杨家将 发表于 2008-11-6 22:01:30

飘云老大也下了个,哈哈··

兰花草 发表于 2008-11-7 09:50:11

hyperchem 发表于 2008-11-7 15:31:29

molebox最简单的方法就是esp定律 中间有个API要修复~

qifeon 发表于 2008-11-7 17:56:51

脱的好,下载个。

Lancia 发表于 2008-11-7 18:52:13

脱得不错!/:good

小生我怕怕 发表于 2008-11-7 19:25:39

带解**的,不错学习下!

toufyqin 发表于 2008-11-8 21:18:47

强,学到了几样东西,手头有一些卡吧报的东东,有空也脱壳看看是不是壳的原因.

cjteam 发表于 2009-1-20 19:46:32

/:good /:good /:good 這個 工具总是提示病毒,麻烦,脱过几次搞不定
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 脱飘云老大密码学综合工具2.0