PRE: 查壳没有,C++ 6.0 ,编译时发现内存解压代码。SEH N多。 调试运行失败。
问题:如何继续或是如何下手?
具体症状:
00AF1030 A8 01 test al, 1
00AF1032 74 10 je short 00AF1044 //横也是死,竖也是死
00AF1034 33C0 xor eax, eax
00AF1036 8B00 mov eax, dword ptr [eax] //Shift+F7进
00AF1038 C745 FC FFFFFFFF mov dword ptr [ebp-4], -1
00AF103F E9 88000000 jmp 00AF10CC
00AF1044 33C0 xor eax, eax
00AF1046 8B00 mov eax, dword ptr [eax] //Shift+F7 进
00AF1048 C745 FC FFFFFFFF mov dword ptr [ebp-4], -1
/////////////////////////////////////////////////////////////////////////////
00AF12F1 33C0 xor eax, eax
00AF12F3 8B00 mov eax, dword ptr [eax] // 必死
00AF12F5 E9 E0000000 jmp 00AF13DA
/////////////////////////////////////////////////类似的陷阱还有不少///////////////////
处理 SEH 的程序都是 mov eax,1 //ExceptionContinueExcetion=1,然后返回
PS:下面是内存解压的代码
00B87057 5D pop ebp
00B87058 B8 01000000 mov eax, 1
00B8705D 5D pop ebp
00B8705E 5F pop edi
00B8705F 5E pop esi
00B87060 5B pop ebx
00B87061 8BE5 mov esp, ebp
00B87063 5D pop ebp
00B87064 C3 retn
一般的软件都用的 SEH Anti-debug,所以上面不是重点,重点是N次异常后,到下面这个地方就会出错
7C958567 E8 23E8FFFF call ntdll.ZwContinue
到
7C9585E8 > 8BD4 mov edx, esp
7C9585EA 0F34 sysenter //OD报错: 不知如何继续,内存地址为0
7C9585EC > C3 retn
PS:关掉所有忽略异常.有时一次也过不了,有时能过几次
开所忽略异常,过了十几次后,最后还是死在那这里了。
//PS:软件是很有名的 Radmin Server 3.1 ,客方下载
Last :希望高手指点一二
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课