- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
【破文标题】一只土狗 简单脱壳分析
【破文作者】飘云[PYG]
【作者邮箱】[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 [ebp-38], 0A5A5
- 00407059 66:C745 C0 0A00 mov word ptr [ebp-40], 0A
- 0040705F E9 550D0000 jmp 00407DB9 //留意这里,不要搞太快了~~
- 00407064 E9 4C070000 jmp 004077B5
- 00407069 EB 01 jmp short 0040706C
- 00407CE1 8B45 E0 mov eax, dword ptr [ebp-20]
- 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 [eax] //★这里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:[0040E0E0]=00405634 (DOG.00405634)
- 00407CEA FF20 jmp dword ptr [eax] //这个跳转地址是动态的,,由[eax]决定,现在是调向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 [eax] 正常情况应该是调向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 [40E104]
- 00407A85 0F84 0A000000 je 00407A95
- 00407A8B C705 E0E04000 3>mov dword ptr [40E0E0], 00405634 //★~~ MessageBox 入口点~~~
- 我们现在要向上找能跳过此段代码的地方,,注意:存在花指令,所以我们用小键盘 的 “上箭头”进行翻阅~
- 马上看到这里:
- 00407A4C 833D F0E04000 0>cmp dword ptr [40E0F0], 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 [eax] ; DOG.00401760
- 此时 OD提示信息为:
- ds:[0040E0E0]=00401760 (DOG.00401760)
- Ok! 马上要到光明之巅了!
- F8一次~
- LordPE dump出来~
- Import REC 修复:
- 0EP:00001760
- 其他自动获取~
- Get Imports 有部分无效~~ 使用Trace Level1(Disasm) 修复即可~
复制代码
------------------------------------------------------------------------
【破解总结】没什么总结的,OD生锈了,拿出来磨磨~~
各位看官慢慢研究吧~~
------------------------------------------------------------------------
【版权声明】本文纯属技术交流,转载请注明作者信息并保持文章的完整,谢谢! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|