-
-
MSLRHv0.31加壳记事本脱壳(又一脱壳实例,高手莫入)
-
发表于:
2005-2-23 23:24
8024
-
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 用一些进程管理器:8e8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4&6M7$3W2F1N6r3g2J5L8X3q4D9M7#2)9J5k6h3y4G2L8g2)9J5c8X3k6A6L8r3g2K6i4K6u0r3M7s2u0G2j5$3g2^5M7r3&6@1i4K6u0W2P5X3W2H3i4@1f1^5i4@1u0r3i4K6V1&6i4@1f1@1i4@1t1^5i4@1q4m8i4@1f1&6i4K6R3H3i4K6R3&6i4@1f1$3i4K6S2n7i4@1p5&6N6i4m8Q4c8e0S2Q4b7V1k6Q4z5f1u0Q4c8e0N6Q4b7e0S2Q4z5p5u0Q4x3V1y4Q4c8e0N6Q4z5o6c8Q4b7U0k6Q4c8e0g2Q4z5e0m8Q4z5p5g2Q4c8e0k6Q4z5f1k6Q4b7e0g2Q4c8e0N6Q4z5f1y4Q4z5p5u0Z5j5h3&6V1L8r3g2Q4x3V1y4Q4c8e0k6Q4z5p5q4Q4z5p5q4#2M7q4)9J5k6h3g2^5k6g2!0q4y4#2)9&6b7g2)9^5y4r3S2S2L8X3c8D9k6g2!0q4y4#2!0n7b7W2)9&6z5g2!0q4y4g2)9^5y4g2!0n7x3#2!0q4z5g2)9&6y4#2!0m8c8q4!0q4y4W2)9^5c8g2)9^5z5g2!0q4x3#2)9^5x3q4)9^5x3R3`.`.
现在即可用OD的脱壳插件直接脱壳,方式1或方式2脱壳均可正常运行
--------------------------------------------------------------------------------
【破解总结】
此文章算是peaceclub兄的[真正快速脱壳方法]的又一实例,文中有多处基本引用了原文的内容。在此向peaceclub兄还有fly,csjwaman等人表示感谢。谢谢一直以来对我的指点和帮助。
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[培训]科锐逆向工程师培训第53期2025年7月8日开班!