-
-
MSLRHv0.31加壳记事本脱壳(又一脱壳实例,高手莫入)
-
发表于:
2005-2-23 23:24
7912
-
MSLRHv0.31加壳记事本脱壳(又一脱壳实例,高手莫入)
【破解作者】 clide2000[DFCG][OCN]
【作者邮箱】 54arma@sina.com
【使用工具】 OD;LoadPe;ImportREC
【破解平台】 Win9x/NT/2000/XP
【软件名称】 MSLRHv0.31加壳记事本脱壳
【下载地址】 见附件附件:unpackme.rar
【软件简介】 MSLRHv0.31加壳英文版记事本(中文的加壳后运行不了)
【加壳方式】 MSLRHv0.31
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
方法是参照peaceclub兄的[真正快速脱壳方法],个人认为此种方法很好,特别适合我们这些小菜.在此也表示对pecaceclub兄的感谢
为广大和我一样的小菜,能真正对付MSLRHv0.31加壳的软件,特以记事本来演示一下。高手莫笑。
1 用OD载入加壳后的启事本unpackme.exe停在:
00411000 > $ 60 pushad
00411001 . D1CB ror ebx, 1
00411003 . 0FCA bswap edx
00411005 . C1CA E0 ror edx, 0E0 ; Shift constant out of range 1..31
00411008 . D1CA ror edx, 1
0041100A . 0FC8 bswap eax
0041100C . EB 01 jmp short unpackme.0041100F
0041100E . F1 int1
0041100F > 0FC0C9 xadd cl, cl
00411012 . D2D1 rcl cl, cl
Ctrl+B,在HEX+00框中输入: 68????????c3,点OK后来到:
0041D0A0 |. 68 8ECB9A00 push 9ACB8E
0041D0A5 \. C3 retn ;就是要把这里改成cc啊
0041D0A6 33 db 33 ; CHAR '3'
0041D0A7 C9 db C9
0041D0A8 E8 db E8
将0041D0A5 \. C3 retn改成 CC ,即int 3
下面,右击0041D0A5这一行,选择"Copy to executable"->"Selection",
接着在新弹出的窗口中,右击,在快捷菜单中选择"Save file",最后启个文件名(我这里的新文件名为up.exe),按保存(即完成了修改保存)
现在关闭OD。
2 双击运行之前保存的up.exe文件,发生异常,ollydbg调试 (注意,到这里之前,与脱MSLRHv0.31主程序一致)
这时会停在0041D0A5
注意,这里已经是被加壳开头的程序,即Stolen Code的处理位置
0041D087 83C4 08 add esp, 8
0041D08A 892C24 mov dword ptr ss:[esp], ebp
0041D08D 54 push esp
0041D08E 55 push ebp
0041D08F /EB 01 jmp short un.0041D092
0041D091 |E8 83C4045D call 5D469519
0041D096 83EC 44 sub esp, 44
0041D099 56 push esi
0041D09A FF15 E0634000 call dword ptr ds:[4063E0] ; kernel32.GetCommandLineA
0041D0A0 68 D9104000 push un.004010D9
0041D0A5 CC int3
下面我们做如下修改
1)恢复0041D0A5处数据为C3
2)去除 0041D091的花指令
修改后结果如下
0041D087 83C4 08 add esp, 8 ;#
0041D08A 892C24 mov dword ptr ss:[esp], ebp ;#
0041D08D 54 push esp ;#
0041D08E 55 push ebp ;#
0041D08F EB 01 jmp short un.0041D092
0041D091 90 nop ;花指令,nop掉
0041D092 83C4 04 add esp, 4 ;#
0041D095 5D pop ebp ;#
0041D096 83EC 44 sub esp, 44 ;*
0041D099 56 push esi ;*
0041D09A FF15 E0634000 call dword ptr ds:[4063E0] ; kernel32.GetCommandLineA ;*
0041D0A0 68 D9104000 push un.004010D9 ;伪OEP
0041D0A5 C3 retn ;从这里返回到伪OEP处
注意上面加了*号的地方,是被Stolen Code的字节
根据经验OEP前两句应该是push ebp, mov ebp,esp, 上面加#号的完成的就是这两句的功能。
加上带*号的一共有13字节,即完整的Stolen Code内容为:
push ebp
mov ebp, esp
sub esp, 44
push esi
call dword ptr ds:[4063E0]
现在Ctrl+G,输入4010cc,并将EIP改为4010cc,补全被Stolen Code的字节。
最后close up.exe file handle 用一些进程管理器:http://www.sysinternals.com/files/procexpnt.zip这个选择up进程,然后查看handle,把up.exe的handle给关闭掉。
现在即可用OD的脱壳插件直接脱壳,方式1或方式2脱壳均可正常运行
--------------------------------------------------------------------------------
【破解总结】
此文章算是peaceclub兄的[真正快速脱壳方法]的又一实例,文中有多处基本引用了原文的内容。在此向peaceclub兄还有fly,csjwaman等人表示感谢。谢谢一直以来对我的指点和帮助。
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)