首先声明
1.我是菜菜.
2.我自己发现的技巧.(也许大家都知道了)
进入正题。新手入门经常脱记事本的壳。例如,UPX ASPACK PECompact等等,
这是记事本Microsoft Visual C++ 7.0 Method2版本的入口
0100739D > $ 6A 70 PUSH 70
0100739F . 68 98180001 PUSH 01001898
010073A4 . E8 BF010000 CALL 01007568
010073A9 . 33DB XOR EBX, EBX
010073AB . 53 PUSH EBX ; /pModule => NULL
010073AC . 8B3D CC100001 MOV EDI, DWORD PTR DS:[<&kernel32.Ge>; |kernel32.GetModuleHandleA
010073B2 . FFD7 CALL EDI ; \GetModuleHandleA
010073B4 . 66:8138 4D5A CMP WORD PTR DS:[EAX], 5A4D
这是记事本Microsoft Visual C++ 6.0 SPx Method 1版本的入口
004010CC 55 PUSH EBP
004010CD 8BEC MOV EBP, ESP
004010CF 83EC 44 SUB ESP, 44
004010D2 56 PUSH ESI
004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] ; kernel32.GetCommandLineA
004010D9 8BF0 MOV ESI, EAX
004010DB 8A00 MOV AL, BYTE PTR DS:[EAX]
两个入口处第5行都调用系统kernel32.GetModuleHandleA 函数。
我试过了(只试过简单压缩壳),直接下 BP GetModuleHandleA 等堆栈框数值里面显示到文件调用函数时。
就可以ALT+F9返回了。就可以脱壳/DUMP了。
也许可用这个方法脱掉一些强壳,或者给强壳脱壳提供一些想法。
全是个人想法,望大牛多多指教。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)