中了个马,OD跟了下,发现不太一样。难倒我这新手了,大牛们来研究一下。
参考了同志们一个文章:http://bbs.pediy.com/showthread.php?t=64813
-------------------------------------------------------------------------------------------
壳入口还是一样。
。。。。
loadlibrary下断,
跟到了DLL里,在retn F2下断,SHIFT F9,ALT F9,
回到程序领空:
0048AC6D 59 pop ecx
0048AC6E 46 inc esi
0048AC6F AD lods dword ptr [esi]
0048AC70 85C0 test eax, eax
0048AC72 74 1F je short 0048AC93
0048AC74 51 push ecx
0048AC75 56 push esi
0048AC76 97 xchg eax, edi
0048AC77 FFD1 call ecx
0048AC79 93 xchg eax, ebx ; lima.0048ACA8
0048AC7A AC lods byte ptr [esi]
0048AC7B 84C0 test al, al
0048AC7D ^ 75 FB jnz short 0048AC7A
0048AC7F 3806 cmp byte ptr [esi], al
0048AC81 ^ 74 EA
je short 0048AC6D
0048AC83 8BC6 mov eax, esi
0048AC85 79 05 jns short 0048AC8C
0048AC87 46 inc esi
0048AC88 33C0 xor eax, eax
0048AC8A 66:AD lods word ptr [esi]
0048AC8C 50 push eax
0048AC8D 53 push ebx
0048AC8E FFD5 call ebp
0048AC90 AB stos dword ptr es:[edi]
0048AC91 ^ EB E7 jmp short 0048AC7A
0048AC93 C3 retn
0048AC94 0040 08 add byte ptr [eax+8], al
0048AC97 0000 add byte ptr [eax], al
0048AC99 1000 adc byte ptr [eax], al
0048AC9B 00F0 add al, dh
0048AC9D 0100 add dword ptr [eax], eax
0048AC9F 0010 add byte ptr [eax], dl
0048ACA1 0000 add byte ptr [eax], al
0048ACA3 0075 AA add byte ptr [ebp-56], dh
跟其他脱壳文章不同,这个壳用RETN返回了,返回到00401000,程序退出。。。。
返回堆栈数据:
大牛给点思路,这壳是原装壳还是手动修改过的。
原理会不会是先判断是不是DEBUG了,是就给个错误返回地址,否压入正确的地址?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)