-
-
脱壳之未知加密壳
-
发表于:
2018-12-20 09:30
14030
-
拿到一个程序之后首先用PEID查看一下有什么有用的信息。
只能发现链接器版本是VC6.0。根据经验可以推论出此程序的OEP特征。
平衡堆栈的汇编代码:SUB esp,0x58
第一个调用的函数是:GetVersion()。
类似的程序特征如下图。
程序入口有标准的pushad/pushfd,使用ESP定律下硬件执行断点。
运行之后依次找到pushfd pushad之后,单步几下就会到达oep位置。
到达程序入口点,ctrl+A进行分析之后发现,第一个函数没有显示Getversion()。推测可能被加密了。
壳当中生成加密IAT的步骤是:
获取原始IAT的函数地址,并保存到一定位置。
申请空间,构造新的IAT函数。
原始函数地址填充代码段,构造新IAT函数代码进行加密。
将新构造的函数地址填充到IAT表。
跟进去这个地址查看一下,发现返回值弹出真正的函数地址。
设置硬件断点,重新运行程序。
断到壳代码中填充IAT表的地方。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)