闲来无事,看看keymake的壳吧,老规矩先用peid看看是壳,自己心理也有个数。用peid一看是UPX-Scrambler RC1.x 加的壳,据说upx壳是最容易脱的壳了,呵呵今天运气真好啊!
用od载入,程序挺在如下代码处:
004316AF k> 90 nop
004316B0 61 popad
004316B1 BE 00E04100 mov esi,keymake.0041E000
004316B6 8DBE 0030FEFF lea edi,dword ptr ds:[esi+FFFE3000]
004316BC 57 push edi
以上就是UPX-Scrambler RC1.x壳标志,废话少说按Ctrl+F查找pushad
来到以下代码处:
00431807 60 pushad
00431808 - E9 41B0FDFF jmp keymake.0040C84E
0043180D 0000 add byte ptr ds:[eax],al
0043180F 0000 add byte ptr ds:[eax],al
00431811 0000 add byte ptr ds:[eax],al
00431813 0000 add byte ptr ds:[eax],al
00431815 0000 add byte ptr ds:[eax],al
00431817 0000 add byte ptr ds:[eax],al
00431819 0000 add byte ptr ds:[eax],al
直接按F4运行到00431808处,按F8即可来到如下程序的真实入口点
代码如下:
0040C84E 6A 00 push 0
0040C850 E8 591E0000 call keymake.0040E6AE ; jmp to kernel32.GetModuleHandleA
0040C855 A3 84194200 mov dword ptr ds:[421984],eax
0040C85A E8 EB1E0000 call keymake.0040E74A ; jmp to COMCTL32.InitCommonControls
0040C85F E8 381E0000 call keymake.0040E69C ; jmp to kernel32.GetCommandLineA
0040C864 6A 0A push 0A
0040C866 50 push eax
0040C867 6A 00 push 0
0040C869 FF35 84194200 push dword ptr ds:[421984]
0040C86F E8 07000000 call keymake.0040C87B
程序停在了0040C84E,用od的脱壳插件将其dump出来就行了,根本不用修复就可以运行。
ok ,搞定!
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
出处:hackfree@126.com 作者:沙漠之狐
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)