能力值:
( LV4,RANK:50 )
|
-
-
2 楼
|
能力值:
( LV9,RANK:170 )
|
-
-
3 楼
这个壳貌似见过,不像yoda's
飘过
ANTI我没细看,貌似只是些常规检测,没多大研究意义
楼主你具体说说有啥问题?
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
还请教兄弟 ANTI在怎么产生的
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
我学脱壳不是为了脱它 而是为了能学到新东西
希望哪位朋友不吝赐教 惭愧!
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
忽略所有异常 SHIFT+F9运行 没用 程序不会运行
CRTL+F2重来 下断PROCESS32NEXT SHIFT+F9运行
再过一些单步就异常
然后进入了个SEH的循环跳不出来了 搞不懂!
|
能力值:
( LV9,RANK:170 )
|
-
-
7 楼
hideod 不要patch PROCESS32NEXT,试试
|
能力值:
( LV6,RANK:90 )
|
-
-
8 楼
00421331 33C0 XOR EAX,EAX
00421333 64:FF30 PUSH DWORD PTR FS:[EAX]
00421336 64:8920 MOV DWORD PTR FS:[EAX],ESP ;安置异常处理
00421339 4B DEC EBX
0042133A CC INT3 ;产生异常
0042133B C3 RETN
0042133C E8 03000000 CALL TwidoKey.00421344
00421341 EB 01 JMP SHORT TwidoKey.00421344
在这句-》0042133A CC INT3 ;产生异常
如果对异常机制不熟悉,走下一句就会跟飞了。我只知道这么点了,请高手指点。
|
能力值:
( LV9,RANK:170 )
|
-
-
9 楼
最初由 zhujian 发布 00421331 33C0 XOR EAX,EAX 00421333 64:FF30 PUSH DWORD PTR FS:[EAX] 00421336 64:8920 MOV DWORD PTR FS:[EAX],ESP ;安置异常处理 00421339 4B DEC EBX 0042133A CC INT3 ;产生异常 ........
走到这里时,不要步过那个INT3,安装完异常处理程序后(也就是在421339处)
查看堆栈:
0012FFB4 0012FFE0 指向下一个 SEH 记录的指针
0012FFB8 004212A2 SE处理程序
0012FFBC 0042129A 返回到 TwidoKey.0042129A 来自 TwidoKey.0042129D
0012FFC0 0042128D 返回到 TwidoKey.0042128D 来自 TwidoKey.00421290 你可以看到SE处理在4212A2处,也就是说程序后面产生的异常会抛到4212A2处的
代码来处理,预先在4212A2处下断点,然后shift + F9,程序就会断在那里了。
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
这我知道 我觉得问题不是在SEH
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
问题就在PATCH Process32Next上了
7C863EEF > 33C0 xor eax, eax
7C863EF1 C2 0800 retn 8
上面是Patch后的代码 而应该是
7C863D64 > 8BFF mov edi, edi ; TwidoKey.00423A2F
7C863D66 55 push ebp
7C863D67 8BEC mov ebp, esp
7C863D69 83EC 10 sub esp, 10
7C863D6C 53 push ebx
7C863D6D 56 push esi
7C863D6E 57 push edi
7C863D6F 8B7D 0C mov edi, dword ptr [ebp+C]
7C863D72 33F6 xor esi, esi
7C863D74 3BFE cmp edi, esi
7C863D76 8975 FC mov dword ptr [ebp-4], esi
7C863D79 0F84 86000000 je 7C863E05
7C863D7F 813F 2C020000 cmp dword ptr [edi], 22C
7C863D85 75 7E jnz short 7C863E05
7C863D87 6A 04 push 4
7C863D89 56 push esi
7C863D8A 33DB xor ebx, ebx
7C863D8C 43 inc ebx
7C863D8D 53 push ebx
7C863D8E 8D45 F8 lea eax, dword ptr [ebp-8]
7C863D91 50 push eax
7C863D92 8D45 F0 lea eax, dword ptr [ebp-10]
7C863D95 50 push eax
7C863D96 56 push esi
7C863D97 56 push esi
7C863D98 8D45 0C lea eax, dword ptr [ebp+C]
7C863D9B 50 push eax
7C863D9C 6A FF push -1
7C863D9E FF75 08 push dword ptr [ebp+8]
7C863DA1 8975 F0 mov dword ptr [ebp-10], esi
7C863DA4 8975 F4 mov dword ptr [ebp-C], esi
7C863DA7 8975 F8 mov dword ptr [ebp-8], esi
7C863DAA 8975 0C mov dword ptr [ebp+C], esi
7C863DAD FF15 5412807C call dword ptr [<&ntdll.NtMapViewOfSe>; ntdll.ZwMapViewOfSection
7C863DB3 3BC6 cmp eax, esi
7C863DB5 7D 03 jge short 7C863DBA
7C863DB7 50 push eax
7C863DB8 EB 50 jmp short 7C863E0A
7C863DBA 8B45 0C mov eax, dword ptr [ebp+C]
7C863DBD 3970 04 cmp dword ptr [eax+4], esi
7C863DC0 75 21 jnz short 7C863DE3
7C863DC2 8B0F mov ecx, dword ptr [edi]
7C863DC4 83E9 04 sub ecx, 4
7C863DC7 8BD1 mov edx, ecx
7C863DC9 C1E9 02 shr ecx, 2
7C863DCC 83C7 04 add edi, 4
7C863DCF 33C0 xor eax, eax
7C863DD1 F3:AB rep stos dword ptr es:[edi]
7C863DD3 8BCA mov ecx, edx
7C863DD5 83E1 03 and ecx, 3
7C863DD8 6A 12 push 12
7C863DDA F3:AA rep stos byte ptr es:[edi]
7C863DDC E8 CF54FAFF call 7C8092B0
7C863DE1 EB 12 jmp short 7C863DF5
7C863DE3 8B70 14 mov esi, dword ptr [eax+14]
7C863DE6 03F0 add esi, eax
7C863DE8 B9 8B000000 mov ecx, 8B
7C863DED F3:A5 rep movs dword ptr es:[edi], dword p>
7C863DEF 8958 24 mov dword ptr [eax+24], ebx
7C863DF2 895D FC mov dword ptr [ebp-4], ebx
7C863DF5 FF75 0C push dword ptr [ebp+C]
7C863DF8 6A FF push -1
7C863DFA FF15 6012807C call dword ptr [<&ntdll.NtUnmapViewOf>; ntdll.ZwUnmapViewOfSection
7C863E00 8B45 FC mov eax, dword ptr [ebp-4]
7C863E03 EB 0C jmp short 7C863E11
7C863E05 68 040000C0 push C0000004
7C863E0A E8 5C55FAFF call 7C80936B
7C863E0F 33C0 xor eax, eax
7C863E11 5F pop edi
7C863E12 5E pop esi
7C863E13 5B pop ebx
7C863E14 C9 leave
7C863E15 C2 0800 retn 8
上面的是不Patch的结果 要是Patch了
会漏过好多解码 特别是那个[00423627]的值 它是决定走向的
大大小小也脱过不少壳 竟然被这么简单的东西给整了
真不如死了!
|