-
-
[旧帖] [求助]版主请进 关于Yoda's Crypter v1.3的脱壳 0.00雪花
-
发表于: 2008-4-29 17:34 3110
-
不会的时候可以请别人来小小的帮助我们一下,我现在正在接触加密壳,比起原来的压缩壳来说,这加密壳实在是不好办呀。现在提出几个问题,希望版主能回答我一下呀。
我调试的程序是QQ空间人精灵只不过版本改变了。现在是3.95了,使用peid检查一看是使用Yoda's Crypter v1.3加的壳,我还是没有顺利的从加密壳中出来,我看离oep就有一段的距离的时候,我又倒下了。现在贴上代码大家能帮帮我看看。
00514060 > 55 push ebp ==使用flyOD停在这里。
00514061 8BEC mov ebp,esp
00514063 53 push ebx
00514064 56 push esi
00514065 57 push edi
00514066 60 pushad
00514067 E8 00000000 call QQ空间人.0051406C
0051406C 5D pop ebp
0051406D 81ED 6C2840>sub ebp,QQ空间人.0040286C
00514073 B9 5D344000 mov ecx,QQ空间人.0040345D
00514078 81E9 C62840>sub ecx,QQ空间人.004028C6
0051407E 8BD5 mov edx,ebp
00514080 81C2 C62840>add edx,QQ空间人.004028C6
00514086 8D3A lea edi,dword ptr ds:[edx]
00514088 8BF7 mov esi,edi
然后我下断点 bp IsDebuggerPresent
也确实断下了。断下的代码是这样的。
7C812E03 > 64:A1 18000>mov eax,dword ptr fs:[18] ==断在这里。
7C812E09 8B40 30 mov eax,dword ptr ds:[eax+30]
7C812E0C 0FB640 02 movzx eax,byte ptr ds:[eax+2]
7C812E10 C3 retn
到现在我还比较自在呀。 但是好日子就要到头了。我还在这里“沾沾自喜”呢。
按F8跟进到7C812E10处的RETN指令程序后,程序将返回并出现下列代码,我们开始寻找POPAD指令。到这里还是在我控制的范围以内呀。往下看。
0051488A 0BC0 or eax,eax ==返回这里了。
0051488C 74 02 je short QQ空间人.00514890
0051488E 61 popad
0051488F C3 retn
00514890 8BD5 mov edx,ebp
00514892 81C2 133240>add edx,QQ空间人.00403213
00514898 F702 010000>test dword ptr ds:[edx],1
0051489E 74 5F je short QQ空间人.005148FF
005148A0 8BD5 mov edx,ebp
005148A2 81C2 8B3340>add edx,QQ空间人.0040338B
005148A8 8D32 lea esi,dword ptr ds:[edx]
005148AA 8BD5 mov edx,ebp
005148AC 81C2 D73040>add edx,QQ空间人.004030D7
005148B2 8D02 lea eax,dword ptr ds:[edx]
005148B4 3E:8946 08 mov dword ptr ds:[esi+8],eax
在这里我们找popad找到以后我们一共找3次,我也找到了。就是使用ctrl+l继续查找,一共找3次。
00514972 AA stos byte ptr es:[edi]
00514973 ^ E2 FD loopd short QQ空间人.00514972
00514975 61 popad ===这里就是第三次的popad了。我的噩梦就要开始了。go on
00514976 50 push eax
00514977 33C0 xor eax,eax
00514979 64:FF30 push dword ptr fs:[eax]
0051497C 64:8920 mov dword ptr fs:[eax],esp
0051497F EB 01 jmp short QQ空间人.00514982
00514981 CC int3
00514982 0000 add byte ptr ds:[eax],al
第三次出现的POPAD指令正是我们需要的!鼠标选中 00514975 按F2下断点后按F9
运行到这里,之后按F8步进。我们步进到 00514982 会跳转到系统领空,会出现下面的代码:
7C92EAF0 |. 8B1C24 mov ebx,dword ptr ss:[esp]
7C92EAF3 |. 51 push ecx
7C92EAF4 |. 53 push ebx
7C92EAF5 |. E8 C78C02>call ntdll.7C9577C1
7C92EAFA |. 0AC0 or al,al
7C92EAFC |. 74 0C je short ntdll.7C92EB0A
7C92EAFE |. 5B pop ebx
7C92EAFF |. 59 pop ecx
7C92EB00 |. 6A 00 push 0
7C92EB02 |. 51 push ecx
7C92EB03 |. E8 11EBFF>call ntdll.ZwContinue
使用F8键步进到 7C92EB03 ,观察寄存器窗口,注意EDI中出现的值,我们要在寻找内存中此值出现的地址。到这里我还是可以明白的。我们往下看。我的噩梦就要开始了。
EAX 00000001
ECX 0012FCE0
EDX 7C9237D8 ntdll.7C9237D8
EBX 0012FCC4
ESP 0012FCBC
EBP 0012FFC0
ESI FFFFFFFF
EDI 7C930738 ntdll.7C930738
EIP 7C92EB03 ntdll.7C92EB03
我这里的edi 是7C930738 继续往下走看吧。
我的内存中的信息是这个样子的。
0012FD7C 7C930738 ntdll.7C930738
0012FD80 FFFFFFFF
0012FD84 2E00A260
0012FD88 7C92EB94 ntdll.KiFastSystemCallRet
0012FD8C 0012FFB0
0012FD90 00000000
0012FD94 0012FFC0
0012FD98 00513017 QQ空间人.00513017
我按照里面说的也这么做了我使用bp 00513017确实中断下来了。但是噩梦就此开始了往下看00513017 90 nop
00513018 90 nop ; This is the OEP! Found by hacnho/VCT2k4
00513019 B8 40065100 mov eax,QQ空间人.00510640
0051301E FFE0 jmp eax
也确实想我找的教程上面的一样,但是看件两个nop了吗,我只要使用F8走到00513018这个地址,就告诉我被调试的程序无法处理异常,当我在使用F8步过的使用,程序挂起,和教程上面说的怎么不一样呀。我调试了很多变,还什么只用了令一个版本的od结果还不如flyod顺手了。不知道怎么往下调试了,我看教程上面的就可以往下走呀。是不是我的步骤错了,还是忘记了在”异常选项卡“里面少了什么,可我都是直接忽略所有的异常呀。因为这不是加密壳吗,希望论坛版主帮助了。谢谢了。
我调试的程序是QQ空间人精灵只不过版本改变了。现在是3.95了,使用peid检查一看是使用Yoda's Crypter v1.3加的壳,我还是没有顺利的从加密壳中出来,我看离oep就有一段的距离的时候,我又倒下了。现在贴上代码大家能帮帮我看看。
00514060 > 55 push ebp ==使用flyOD停在这里。
00514061 8BEC mov ebp,esp
00514063 53 push ebx
00514064 56 push esi
00514065 57 push edi
00514066 60 pushad
00514067 E8 00000000 call QQ空间人.0051406C
0051406C 5D pop ebp
0051406D 81ED 6C2840>sub ebp,QQ空间人.0040286C
00514073 B9 5D344000 mov ecx,QQ空间人.0040345D
00514078 81E9 C62840>sub ecx,QQ空间人.004028C6
0051407E 8BD5 mov edx,ebp
00514080 81C2 C62840>add edx,QQ空间人.004028C6
00514086 8D3A lea edi,dword ptr ds:[edx]
00514088 8BF7 mov esi,edi
然后我下断点 bp IsDebuggerPresent
也确实断下了。断下的代码是这样的。
7C812E03 > 64:A1 18000>mov eax,dword ptr fs:[18] ==断在这里。
7C812E09 8B40 30 mov eax,dword ptr ds:[eax+30]
7C812E0C 0FB640 02 movzx eax,byte ptr ds:[eax+2]
7C812E10 C3 retn
到现在我还比较自在呀。 但是好日子就要到头了。我还在这里“沾沾自喜”呢。
按F8跟进到7C812E10处的RETN指令程序后,程序将返回并出现下列代码,我们开始寻找POPAD指令。到这里还是在我控制的范围以内呀。往下看。
0051488A 0BC0 or eax,eax ==返回这里了。
0051488C 74 02 je short QQ空间人.00514890
0051488E 61 popad
0051488F C3 retn
00514890 8BD5 mov edx,ebp
00514892 81C2 133240>add edx,QQ空间人.00403213
00514898 F702 010000>test dword ptr ds:[edx],1
0051489E 74 5F je short QQ空间人.005148FF
005148A0 8BD5 mov edx,ebp
005148A2 81C2 8B3340>add edx,QQ空间人.0040338B
005148A8 8D32 lea esi,dword ptr ds:[edx]
005148AA 8BD5 mov edx,ebp
005148AC 81C2 D73040>add edx,QQ空间人.004030D7
005148B2 8D02 lea eax,dword ptr ds:[edx]
005148B4 3E:8946 08 mov dword ptr ds:[esi+8],eax
在这里我们找popad找到以后我们一共找3次,我也找到了。就是使用ctrl+l继续查找,一共找3次。
00514972 AA stos byte ptr es:[edi]
00514973 ^ E2 FD loopd short QQ空间人.00514972
00514975 61 popad ===这里就是第三次的popad了。我的噩梦就要开始了。go on
00514976 50 push eax
00514977 33C0 xor eax,eax
00514979 64:FF30 push dword ptr fs:[eax]
0051497C 64:8920 mov dword ptr fs:[eax],esp
0051497F EB 01 jmp short QQ空间人.00514982
00514981 CC int3
00514982 0000 add byte ptr ds:[eax],al
第三次出现的POPAD指令正是我们需要的!鼠标选中 00514975 按F2下断点后按F9
运行到这里,之后按F8步进。我们步进到 00514982 会跳转到系统领空,会出现下面的代码:
7C92EAF0 |. 8B1C24 mov ebx,dword ptr ss:[esp]
7C92EAF3 |. 51 push ecx
7C92EAF4 |. 53 push ebx
7C92EAF5 |. E8 C78C02>call ntdll.7C9577C1
7C92EAFA |. 0AC0 or al,al
7C92EAFC |. 74 0C je short ntdll.7C92EB0A
7C92EAFE |. 5B pop ebx
7C92EAFF |. 59 pop ecx
7C92EB00 |. 6A 00 push 0
7C92EB02 |. 51 push ecx
7C92EB03 |. E8 11EBFF>call ntdll.ZwContinue
使用F8键步进到 7C92EB03 ,观察寄存器窗口,注意EDI中出现的值,我们要在寻找内存中此值出现的地址。到这里我还是可以明白的。我们往下看。我的噩梦就要开始了。
EAX 00000001
ECX 0012FCE0
EDX 7C9237D8 ntdll.7C9237D8
EBX 0012FCC4
ESP 0012FCBC
EBP 0012FFC0
ESI FFFFFFFF
EDI 7C930738 ntdll.7C930738
EIP 7C92EB03 ntdll.7C92EB03
我这里的edi 是7C930738 继续往下走看吧。
我的内存中的信息是这个样子的。
0012FD7C 7C930738 ntdll.7C930738
0012FD80 FFFFFFFF
0012FD84 2E00A260
0012FD88 7C92EB94 ntdll.KiFastSystemCallRet
0012FD8C 0012FFB0
0012FD90 00000000
0012FD94 0012FFC0
0012FD98 00513017 QQ空间人.00513017
我按照里面说的也这么做了我使用bp 00513017确实中断下来了。但是噩梦就此开始了往下看00513017 90 nop
00513018 90 nop ; This is the OEP! Found by hacnho/VCT2k4
00513019 B8 40065100 mov eax,QQ空间人.00510640
0051301E FFE0 jmp eax
也确实想我找的教程上面的一样,但是看件两个nop了吗,我只要使用F8走到00513018这个地址,就告诉我被调试的程序无法处理异常,当我在使用F8步过的使用,程序挂起,和教程上面说的怎么不一样呀。我调试了很多变,还什么只用了令一个版本的od结果还不如flyod顺手了。不知道怎么往下调试了,我看教程上面的就可以往下走呀。是不是我的步骤错了,还是忘记了在”异常选项卡“里面少了什么,可我都是直接忽略所有的异常呀。因为这不是加密壳吗,希望论坛版主帮助了。谢谢了。
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!
赞赏
他的文章
赞赏
雪币:
留言: