飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 28836|回复: 84

[原创] 脱飘云老大密码学综合工具2.0

    [复制链接]

该用户从未签到

发表于 2008-11-6 09:07:45 | 显示全部楼层 |阅读模式
今天拿飘云老大的密码学工具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

评分

参与人数 1威望 +1 飘云币 +1 收起 理由
yp124202453 + 1 + 1 万水千山总是情,给个评分最贴心!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 709 天

    [LV.9]以坛为家II

    发表于 2008-11-6 21:41:51 | 显示全部楼层
    兄弟,还是你厉害。动老大的东东/:017
    PYG19周年生日快乐!
    回复 支持 1 反对 0

    使用道具 举报

    该用户从未签到

    发表于 2008-11-6 22:01:30 | 显示全部楼层
    飘云老大也下了个,哈哈··
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-11-7 09:50:11 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-11-7 15:31:29 | 显示全部楼层
    molebox最简单的方法就是esp定律 中间有个API要修复~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-12-18 12:34
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2008-11-7 17:56:51 | 显示全部楼层
    脱的好,下载个。
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2015-8-24 20:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-11-7 18:52:13 | 显示全部楼层
    脱得不错!/:good
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2015-8-12 00:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-11-7 19:25:39 | 显示全部楼层
    带解**的,不错学习下!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-11-8 21:18:47 | 显示全部楼层
    强,学到了几样东西,手头有一些卡吧报的东东,有空也脱壳看看是不是壳的原因.
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2009-1-20 19:46:32 | 显示全部楼层
    /:good /:good /:good 這個 工具总是提示病毒,麻烦,脱过几次搞不定
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表