输入表是PE文件结构中不可或缺的部分,输入表也称之为“导入表”。 要想了解输入表,首先还得先从DLL文件入手,dll文件也就是“动态链接库文件”,这些文件中有很多的导入函数,这些函数不会直接被执行,当一个程序 (EXE)运行时,导入函数是被程序调用执行的,其执行的代码是不在主程序(EXE)中的一小部分函数,其真正的代码却在DLL文件中。在PE文件映射到 内存后,windows将相应的DLL文件装入,EXE文件通过“输入表”找到相应的DLL中的导入函数,从而完成程序的正常运行,这一动态连接的过程都 是由“输入表”参与的。
手工重建输入表
用LoadPe查看文件的输入表RVA和大小,记录下来
然后把文件用OD载入,打开ImportREC,选中我们要重建输入表的文件,点“IAT自动搜索”,再填入输入表RVA和大小,点击“获得输入表”, “显示无效”,如果找到了无效的输入表函数就删除掉,最后“修理Dump”,选中你用OD载入的文件,也就是要重建输入表的文件,就可以了。这样改后,用 C32打开重建后的文件,把原来的输入表函数填充掉即可
工具重建输入表
用LoadPe找到输入表RVA,转换为偏移地址。然后打开IAT重建工具,选中全部的输入表dll,导出IAT为一个文本文件,删除IAT,增加区段,重建IAT,选中刚才导出的文本文件就可以了。然后删掉原来的输入表即可(从原来的输入表偏移地址开始填充到末尾)
3. 输入表函数、输入表dll移位
把输入表函数及其前面的两个“提示”机器码复制下来,移动到别的地方,然后记录下现在的位置,转换为内存地址,再减去基址得到RVA,用LoadPe改“Thunk值”为现在的输入表函数地址即可
4. 修改OriginalFirstThunk、日期时间标志、ForwarderChain
这样做可以在一定程度上防止杀毒软件的跟踪查杀,针对国外杀毒软件对输入表的查杀一般是有效果的
5. 输入表dll后加空格
这个方法在以前针对nod32有特效,但现在对付最新版的nod32是没效果的了
还有在对付卡巴启发查杀的时候,也是有效的。但卡巴查杀一个输入表函数的时候,你可以找到这个输入表函数所在的dll,然后在这个dll名称后面加空格,一般是能过掉卡巴启发查杀输入表的。