好友
阅读权限20
听众
最后登录1970-1-1
|
声明:
1.只为纪录自己成长历程,高手勿喷
2.您的热心是新手持续发帖的动力
1.载入PEID
ACProtect v1.35 -> risco software Inc. & Anticrack Soft
2.载入OD,需要注意的是,异常选项除了[内存访问异常]外其他全部勾选上,然后shift+F9运行至最后一次异常,是1次之后。第二次程序就跑飞了
[Asm] 纯文本查看 复制代码 1 2 3 4 5 6 7 8 | 00436000 > 60 pushad
00436001 7C 03 jl short QQ个性签.00436006
00436003 7D 01 jge short QQ个性签.00436006
00436005 71 0B jno short QQ个性签.00436012
00436007 C2 66C1 retn 0xC166
0043600A D29E FC4566D3 rcr byte ptr ds :[ esi -0x2C99BA04],>
00436010 D27403 75 sal byte ptr ds :[ ebx + eax +0x75], cl
00436014 0177 66 add dword ptr ds :[ edi +0x66], esi
|
3.落脚点,落脚后右键点堆栈窗口SE句柄---数据窗口跟随---数据窗口第一行下内存访问断点然后shift+F9
[Asm] 纯文本查看 复制代码 1 2 3 4 5 6 7 | 00447B1F CD 01 int 0x1
00447B21 40 inc eax
00447B22 40 inc eax
00447B23 0BC0 or eax , eax
00447B25 75 05 jnz short QQ个性签.00447B2C
00447B27 90 nop
00447B28 90 nop
|
[Asm] 纯文本查看 复制代码 1 | 0012FF44 00447B03 SE处理程序 //堆栈窗口
|
[Asm] 纯文本查看 复制代码 1 | 00447B03 0C245C8B //数据窗口第一行
|
4.落脚点,在落脚点下F2断点,然后shift+F9
[Asm] 纯文本查看 复制代码 1 2 3 4 5 6 | 00447B03 8B5C24 0C mov ebx , dword ptr ss :[ esp +0xC]
00447B07 8383 B8000000 0> add dword ptr ds :[ ebx +0xB8],0x2
00447B0E 33C0 xor eax , eax
00447B10 C3 retn
00447B11 64:67:FF36 0000 push dword ptr fs :[0]
00447B17 64:67:8926 0000 mov dword ptr fs :[0], esp
|
5.落脚点,继续在这里下F2断点,然后shift+F9运行
[Asm] 纯文本查看 复制代码 1 2 3 4 5 6 | 00447B53 8B048E mov eax , dword ptr ds :[ esi + ecx *4]
00447B56 8B5C8E 04 mov ebx , dword ptr ds :[ esi + ecx *4+0>
00447B5A 2BC3 sub eax , ebx
00447B5C C1C0 07 rol eax ,0x7
00447B5F 33C2 xor eax , edx
00447B61 81C2 4B3DF129 add edx ,0x29F13D4B
|
6.落脚点,先清除刚刚下的2个F2断点和1个内存访问断点,然后在最近的retn处F4
[Asm] 纯文本查看 复制代码 1 2 3 4 5 6 7 | 00447B67 89048E mov dword ptr ds :[ esi + ecx *4], eax
00447B6A 49 dec ecx
00447B6B ^ EB E1 jmp short QQ个性签.00447B4E
00447B6D 61 popad
00447B6E 61 popad
00447B6F C3 retn
00447B70 0000 add byte ptr ds :[ eax ], al
|
7.在无StolenCode的帖子中已经说过,正常情况下接下来是在内存窗口的401000处下段然后shift+F9运行就可以到OEP了,但是我们这个壳你这样操作后会发现OEP处的代码好像不对劲,因为被抽取过了,我们要做的是点[调试]按钮---设置条件,或者使用快捷键ctrl+T,在弹出来的界面勾选最下面一个然后输入被偷取的代码,我使用的ximo教程里的壳,被偷取的代码为"push ebp",输入完后点确定,然后使用快捷键ctrl+F11跟踪步入(或者点[调试]--跟踪步入)
8.找到了我们被偷取的代码,在这个壳中被偷取了三行代码,选中这三行,二进制复制
[Asm] 纯文本查看 复制代码 1 2 3 4 5 6 | 004254C8 61 popad
004254C9 55 push ebp
004254CA 8BEC mov ebp , esp
004254CC 83EC 44 sub esp ,0x44
004254CF 60 pushad
004254D0 60 pushad
|
[Asm] 纯文本查看 复制代码 1 | 55 8B EC 83 EC 44 //二进制复制出来的,一共6个字节
|
9.然后到内存窗口,在401000处下断F2,然后shift+F9运行来到假的OEP,向上找6个字节(看代码第二列,两位为一个字节),然后右键--二进制---使用nop填充,填充完毕后再数6个字节,然后使用二进制粘贴
[Asm] 纯文本查看 复制代码 1 2 3 4 5 6 7 | 004010D2 56 push esi
004010D3 FF15 E4634000 call dword ptr ds :[0x4063E4]
004010D9 8BF0 mov esi , eax
004010DB 8A00 mov al , byte ptr ds :[ eax ]
004010DD 3C 22 cmp al ,0x22
004010DF 75 1B jnz short notepad9.004010FC
004010E1 56 push esi
|
10.此时OEP已经补充完整了,接着右键点'push ebp'哪一行---点[此处新建EIP]然后就可以脱壳了,脱壳注意[重建输出表]这一项不勾选,脱壳后使用ImportREC修复,我在脱壳的过程中出现过修复失败的情况,这种情况我一般都是用ImportREC上修复的插件或者别的版本的ImportREC来修复,可以都试试。
[Asm] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 | 004010CC 55 push ebp
004010CD 8BEC mov ebp , esp
004010CF 83EC 44 sub esp ,0x44
004010D2 56 push esi
004010D3 FF15 E4634000 call dword ptr ds :[0x4063E4]
004010D9 8BF0 mov esi , eax
004010DB 8A00 mov al , byte ptr ds :[ eax ]
004010DD 3C 22 cmp al ,0x22
004010DF 75 1B jnz short notepad9.004010FC
004010E1 56 push esi
|
11.运行查壳
运行OK,查壳:Microsoft Visual C++ v6.0 SPx
|
免费评分
-
查看全部评分
|