是Themida的壳,用okdodo的那个脚本脱的,程序太大,无法上传空间。
我用OD跟踪原程序和脱完壳的程序,代码都是一样,在调用HeapAlloc的时候
7C9305D4 > 68 04020000 push 204 ;HeapAlloc入口
7C9305D9 68 F006937C push 7C9306F0
7C9305DE E8 DFE7FFFF call 7C92EDC2
7C9305E3 8B5D 08 mov ebx, dword ptr [ebp+8]
7C9305E6 895D E4 mov dword ptr [ebp-1C], ebx
7C9305E9 33FF xor edi, edi
7C9305EB 897D D0 mov dword ptr [ebp-30], edi
7C9305EE C645 E2 00 mov byte ptr [ebp-1E], 0
7C9305F2 897D CC mov dword ptr [ebp-34], edi
7C9305F5 8B45 0C mov eax, dword ptr [ebp+C]
7C9305F8 0B43 10 or eax, dword ptr [ebx+10] ;这条指令脱壳后的程序不能通过
原程序能通过,而脱壳后的程序一到最后这条指令就莫名其妙的跳转到
7C92EAF0 8B1C24 mov ebx, dword ptr [esp] ; 跳转到这里来了
7C92EAF3 51 push ecx
7C92EAF4 53 push ebx
7C92EAF5 E8 C78C0200 call 7C9577C1
7C92EAFA 0AC0 or al, al
7C92EAFC 74 0C je short 7C92EB0A
7C92EAFE 5B pop ebx
7C92EAFF 59 pop ecx
7C92EB00 6A 00 push 0
7C92EB02 51 push ecx
7C92EB03 E8 11EBFFFF call ZwContinue
7C92EB08 EB 0B jmp short 7C92EB15
7C92EB0A 5B pop ebx
7C92EB0B 59 pop ecx
7C92EB0C 6A 00 push 0
7C92EB0E 51 push ecx
7C92EB0F 53 push ebx
7C92EB10 E8 3DF7FFFF call ZwRaiseException ;然后从这里返回到发生跳转的7c9305f8就程序终止了
请高手帮忙解决下问题,脱壳后的程序前面开的几个线程都运行正常,到这就过不去了,是不是我程序的修复有问题啊?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)