飘云 发表于 2007-8-12 00:07:07

打狗棒------一只土狗 简单脱壳分析

【破文标题】一只土狗 简单脱壳分析
【破文作者】飘云
【作者邮箱】[email protected]
【作者主页】www.chinapyg.com
【破解工具】Peid0.94,OllyDbg,LordPE,Import REC
【破解平台】Win9x/NT/2000/XP
【软件名称】CrackMe
【软件大小】328kb
【原版下载】https://www.chinapyg.com/viewthread.php?tid=16246
【保护方式】狗狗
【软件简介】应该是一个工程上分离出来的吧?不管了,反正就是脱狗狗~~
【破解声明】我是一只菜菜鸟,偶得一点心得,愿与大家分享 !^_^
------------------------------------------------------------------------
【破解过程】OD载入程序:
00407049 >55            push    ebp
0040704A    8BEC            mov   ebp, esp
0040704C    83EC 7C         sub   esp, 7C
0040704F    53            push    ebx
00407050    56            push    esi
00407051    57            push    edi
00407052    C745 C8 A5A5000>mov   dword ptr , 0A5A5
00407059    66:C745 C0 0A00 mov   word ptr , 0A
0040705F    E9 550D0000   jmp   00407DB9             //留意这里,不要搞太快了~~
00407064    E9 4C070000   jmp   004077B5
00407069    EB 01         jmp   short 0040706C




00407CE1    8B45 E0         mov   eax, dword ptr
00407CE4    5F            pop   edi
00407CE5    5E            pop   esi
00407CE6    5B            pop   ebx
00407CE7    8BE5            mov   esp, ebp
00407CE9    5D            pop   ebp
00407CEA    FF20            jmp   dword ptr        //★这里F2下断,重新载入~~
00407CEC    E9 CD000000   jmp   00407DBE
00407CF1^ E9 E6FFFFFF   jmp   00407CDC
00407CF6^ E9 E1FFFFFF   jmp   00407CDC
00407CFB^ E9 9EF3FFFF   jmp   0040709E
00407D00^ E9 D7FFFFFF   jmp   00407CDC
00407D05^ E9 A5FFFFFF   jmp   00407CAF
00407D0A^ E9 14FEFFFF   jmp   00407B23
00407D0F^ E9 0FFEFFFF   jmp   00407B23
00407D14^ E9 C3FFFFFF   jmp   00407CDC
00407D19^ E9 05FEFFFF   jmp   00407B23
00407D1E^ E9 B9FFFFFF   jmp   00407CDC
00407D23^ E9 FBFDFFFF   jmp   00407B23
00407D28^ E9 F6FDFFFF   jmp   00407B23
00407D2D^ E9 F1FDFFFF   jmp   00407B23
00407D32^ E9 DAFCFFFF   jmp   00407A11
00407D37^ E9 D8FDFFFF   jmp   00407B14
00407D3C^ E9 C4FDFFFF   jmp   00407B05
00407D41^ E9 DDFDFFFF   jmp   00407B23
00407D46^ E9 E7FCFFFF   jmp   00407A32
00407D4B^ E9 4EF3FFFF   jmp   0040709E
00407D50^ E9 CEFDFFFF   jmp   00407B23
00407D55^ E9 C9FDFFFF   jmp   00407B23
00407D5A^ E9 3FF3FFFF   jmp   0040709E
00407D5F^ E9 97FDFFFF   jmp   00407AFB
00407D64^ E9 29FAFFFF   jmp   00407792
00407D69^ E9 23FFFFFF   jmp   00407C91
00407D6E^ E9 79FDFFFF   jmp   00407AEC
00407D73^ E9 46FFFFFF   jmp   00407CBE
00407D78^ E9 88FBFFFF   jmp   00407905
00407D7D^ E9 1EFFFFFF   jmp   00407CA0
00407D82^ E9 55FFFFFF   jmp   00407CDC
00407D87^ E9 42F6FFFF   jmp   004073CE
00407D8C^ E9 88FBFFFF   jmp   00407919
00407D91^ E9 8DFDFFFF   jmp   00407B23
00407D96^ E9 41FFFFFF   jmp   00407CDC
00407D9B^ E9 3CFFFFFF   jmp   00407CDC
00407DA0^ E9 26F4FFFF   jmp   004071CB
00407DA5^ E9 32FFFFFF   jmp   00407CDC
00407DAA^ E9 2DFFFFFF   jmp   00407CDC
00407DAF^ E9 EAF2FFFF   jmp   0040709E
00407DB4^ E9 6AFDFFFF   jmp   00407B23
00407DB9^ E9 F7F9FFFF   jmp   004077B5         //★跳到这里了,,哈哈,上面很多的Jmp 很可爱哦~~找到最上面一个~~ Go~~
00407DBE    5F            pop   edi
00407DBF    5E            pop   esi
00407DC0    5B            pop   ebx
00407DC1    C9            leave
00407DC2    C3            retn


重新载入后中断在 00407CEA

OD提示信息~~~

ds:=00405634 (DOG.00405634)

00407CEA    FF20            jmp   dword ptr //这个跳转地址是动态的,,由决定,现在是调向00405634:


00405634    55            push    ebp
00405635    8BEC            mov   ebp, esp
00405637    53            push    ebx
00405638    56            push    esi
00405639    57            push    edi
0040563A    6A 40         push    40
0040563C    B8 D8E04000   mov   eax, 0040E0D8
00405641    05 54010000   add   eax, 154
00405646    50            push    eax
00405647    B8 D8E04000   mov   eax, 0040E0D8
0040564C    05 92010000   add   eax, 192
00405651    50            push    eax
00405652    6A 00         push    0
00405654    FF15 0CD14100   call    dword ptr [<&USER32.MessageBoxA>]; USER32.MessageBoxA
0040565A    E9 00000000   jmp   0040565F
0040565F    5F            pop   edi
00405660    5E            pop   esi
00405661    5B            pop   ebx
00405662    C9            leave
00405663    C3            retn


//这里出来之后,很明显就判断没有狗了~~~ ,那么我们猜测一下~~:
00407CEA    FF20            jmp   dword ptr     正常情况应该是调向OEP的~~ 而看了glts 版主提供的图片,知道程序为 VFP 编写,故想到了~ 00401760(VFP特有入口点) Ctrl+G过去看看,果然是的~~ 当然还可以用PEID插件求证~ 结果当然是一样啦~

现在我们在OD数据窗口 Ctrl+G 输入“0040E0E0”(或者 在 命令行输入 D 0040E0E0)   然后下硬件写入断点~-byte


Ctrl+F2重新来过~~

F9几次之后断在:
00407A7A    E8 9D030000   call    00407E1C
00407A7F    3B05 04E14000   cmp   eax, dword ptr
00407A85    0F84 0A000000   je      00407A95
00407A8B    C705 E0E04000 3>mov   dword ptr , 00405634 //★~~ MessageBox 入口点~~~

我们现在要向上找能跳过此段代码的地方,,注意:存在花指令,所以我们用小键盘 的 “上箭头”进行翻阅~

马上看到这里:
00407A4C    833D F0E04000 0>cmp   dword ptr , 0
00407A53    0F85 66000000   jnz   00407ABF            //★,这里有一个大跳~ F2下断
00407A59    76 03         jbe   short 00407A5E
00407A5B    77 01         ja      short 00407A5E

取消之前的硬件断点,程序运行程序,F9断在了 刚刚下断的地方~

00407A53    0F85 66000000   jnz   00407ABF//★改为jmp之后,F9

来到:
00407CEA- FF20            jmp   dword ptr                   ; DOG.00401760


此时 OD提示信息为:
ds:=00401760 (DOG.00401760)

Ok! 马上要到光明之巅了!

F8一次~

LordPE dump出来~

Import REC修复:

0EP:00001760

其他自动获取~

Get Imports有部分无效~~使用Trace Level1(Disasm) 修复即可~
------------------------------------------------------------------------
【破解总结】没什么总结的,OD生锈了,拿出来磨磨~~
各位看官慢慢研究吧~~
------------------------------------------------------------------------
【版权声明】本文纯属技术交流,转载请注明作者信息并保持文章的完整,谢谢!

laccer 发表于 2007-8-12 00:53:00

老大就是不同,分析得透彻,学习了

lgjxj 发表于 2007-8-13 14:10:17

跟了一下还是很有意思的,学习

tigerisme 发表于 2007-8-13 16:21:13

不知道这是什么狗/:001

fing 发表于 2007-8-15 10:21:24

对狗狗很陌生/:011

bwin 发表于 2007-8-17 17:44:56

打狗的文章要看下
打好基础先 。。。

glts 发表于 2007-8-17 18:09:51

原帖由 tigerisme 于 2007-8-13 16:21 发表 https://www.chinapyg.com/images/common/back.gif
不知道这是什么狗/:001


都说了是土 狗

a__p 发表于 2007-8-17 18:17:32

向 飘云哥哥 学习,下载来练练手/:018

yosen2001 发表于 2007-8-19 21:21:15

原帖由 fing 于 2007-8-15 10:21 发表 https://www.chinapyg.com/images/common/back.gif
对狗狗很陌生/:011


同意,我也是

我对狗一向不敢动,怕怕~!

shuaig81 发表于 2007-8-28 13:24:14

分析的很好,学习了~~
页: [1] 2 3 4 5
查看完整版本: 打狗棒------一只土狗 简单脱壳分析