首页
社区
课程
招聘
[原创]菜鸟打狗之域天狗简单脱法
发表于: 2008-11-21 15:29 10826

[原创]菜鸟打狗之域天狗简单脱法

2008-11-21 15:29
10826
来看雪很久了,一直没有发过什么有技术含量的文章,前段时间看了一位大侠的域天狗脱壳文章,也来一个简单的脱壳教程,希望对菜鸟有所帮助,高手请指教。

系统环境:windows xp sp3
工具:PEID 0.94    OD
目标程序:一个商业软件(偷个懒,就用那位大侠提供的例子程序吧,呵呵)

下面开始:
一、首先PEID查壳
普通扫描显示“什么都没找到  *”
深度扫描或核心扫描,提示Anti007 V1.0-V2.X -> NsPacK Private   * Sign.By.fly *壳,应该是域天的狗壳。
二、OD载入
005B3D5A >  9C              pushfd                           ///看过几个域天狗壳,都一样
005B3D5B    60              pushad
005B3D5C    E8 33000000     call    005B3D94
005B3D61    5D              pop     ebp
005B3D62    B8 73060150     mov     eax, 50010673
005B3D67    2D 6C060150     sub     eax, 5001066C
005B3D6C    2BE8            sub     ebp, eax
005B3D6E    8DB5 EEFEFFFF   lea     esi, dword ptr [ebp-112]
005B3D74    8B06            mov     eax, dword ptr [esi]
005B3D76    83F8 00         cmp     eax, 0
005B3D79    74 1D           je      short 005B3D98
005B3D7B    8DB5 FAFEFFFF   lea     esi, dword ptr [ebp-106]
005B3D81    8B06            mov     eax, dword ptr [esi]
005B3D83    83F8 01         cmp     eax, 1
005B3D86    C706 01000000   mov     dword ptr [esi], 1

这个狗壳不能用ESP定律,我们就来简单的。 alt+M
在mian1区段下内存写入断点,F9运行,程序断在
005B3E24    8995 AEFEFFFF   mov     dword ptr [ebp-152], edx          //断在这里
005B3E2A    0195 E2FEFFFF   add     dword ptr [ebp-11E], edx
005B3E30    8DB5 FEFEFFFF   lea     esi, dword ptr [ebp-102]
005B3E36    0116            add     dword ptr [esi], edx
005B3E38    8B36            mov     esi, dword ptr [esi]
005B3E3A    8BFD            mov     edi, ebp

删除内存断点,ctrl+B,查找二进制字串“61 9D”
005B40B0    61              popad                          //就是这里
005B40B1    9D              popfd
005B40B2  - E9 05EEE4FF     jmp     00402EBC      //这里跳往OEP,先下个断

ctrl+S查找命令序列
call eax
add esp,4

来到这里
005B3EBB    FFD0            call    eax                       //这里下断
005B3EBD    83C4 04         add     esp, 4
005B3EC0    58              pop     eax
005B3EC1    5F              pop     edi
005B3EC2    50              push    eax
005B3EC3    68 00000000     push    0
005B3EC8    68 1C000000     push    1C
005B3ECD    05 A7160000     add     eax, 16A7
005B3ED2    57              push    edi
005B3ED3    FFD0            call    eax                     //这里下断
005B3ED5    83C4 10         add     esp, 10
005B3ED8    61              popad
005B3ED9    60              pushad

重新载入程序,F9运行,出现异常时shift+F9,断在005B3EBB,F7进入,F8单步运行
010E2017    55              push    ebp                              ; fuke.<模块入口点>
010E2018    8BEC            mov     ebp, esp
010E201A    83EC 48         sub     esp, 48
......
010E20B6    85C0            test    eax, eax
010E20B8    75 4F           jnz     short 010E2109        //此跳转默认实现,不能让它跳nop
010E20BA    8B4E 20         mov     ecx, dword ptr [esi+20]
010E20BD    8B7E 24         mov     edi, dword ptr [esi+24]
010E20C0    B8 57FAA37C     mov     eax, 7CA3FA57
......
010E2102    85C0            test    eax, eax
010E2104    EB 3E           jmp     short 010E2144       //让它实现,改为jmp
010E2106    8B7D F8         mov     edi, dword ptr [ebp-8]
010E2109    FF45 08         inc     dword ptr [ebp+8]
010E210C    817D 08 FF00000>cmp     dword ptr [ebp+8], 0FF
010E2113  ^ 7C 94           jl      short 010E20A9

继续F8,来到第二个断点call,F7进入,F8单步运行到这里
010E223C    74 19           je      short 010E2257    //让它实现,改为JMP
010E223E    8D45 F4         lea     eax, dword ptr [ebp-C]
010E2241    83C7 40         add     edi, 40
010E2244    50              push    eax
010E2245    53              push    ebx
010E2246    57              push    edi
010E2247    68 801F0E01     push    10E1F80
010E224C    53              push    ebx
010E224D    53              push    ebx
010E224E    FF15 F98A0E01   call    dword ptr [10E8AF9]              ; kernel32.CreateThread
010E2254    50              push    eax
010E2255    FFD6            call    esi
010E2257    53              push    ebx
010E2258    6A 01           push    1

继续一路F8单步,下面机子有些卡,慢慢跑,向上的跳转要打断不要让它实现。
来到了这里,就是我们下断的地方
005B40B2  - E9 05EEE4FF     jmp     00402EBC    //在这里跳往OEP

胜利完成,DUMP,OK,收工。

后记:用此法脱了两个域天的狗壳,但在脱第三个域天狗时出现问题,就是在第二个call,请高手指教。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 147
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
用此法这个程序不能脱,关键在第二个call里面,请高手帮忙分析一下。
上传的附件:
2008-11-21 15:33
0
雪    币: 147
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
希望有对域天狗壳有研究的朋友能够共同探讨一下。谢谢了!!!
2008-11-24 11:32
0
雪    币: 290
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你试试ESP定律  看看能破天狗壳吗?
2008-11-25 09:41
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
ESP定律不可以破天狗?
2008-11-25 11:05
0
游客
登录 | 注册 方可回帖
返回
//