我怎么知道可执行文件缺少什么来运行?

逆向工程 恶意软件 静态分析 动态分析 资源
2021-06-24 21:27:45

MZ从内存中提取了一个文件,这些文件恰好在 VirusTotal 中可用(可能是恶意的可执行文件)。但是,我无法运行该程序。它似乎缺少一些资源。它声称缺少调试信息,并且 PDB 不完整(用 Visual Studio 编译的可执行文件)。我仍然是初学者,我想知道这是否与程序无法运行有关?我认为调试信息不​​是运行程序所必需的,对吗?我有一个假设,该程序在某处被标记以使其在调试模式下运行,直到它收到一些东西?不确定我的假设是否可能。

如果有人可以通过回答我的问题或建议我去哪里寻找丢失的东西来指导我。即使回答说我的主张无关紧要也可以帮助我很多。

1个回答

通常我会将二进制文件加载到 PE 编辑器中,看看它是否看起来不错。您可以将其加载到 LordPE 并单击四周,看看它是否会引发错误。在LordPE中打开导入浏览器看看有没有报错,打开资源表,查看section数据。

然后你也可以跳转到入口点代码,看看它是否合理。

也就是说,如果您从内存中提取二进制文件并实际加载了它,则很可能需要进行一些简单的修复才能将其转换为合适的可执行文件。

原因是加载 PE 文件与磁盘上的 PE 文件相比会稍微改变布局(文件对齐与节对齐),但是如上所述,将内存转储加载到 PE 编辑器会很快显示出来,LordPE 将无法正确显示导入表,入口点的代码没有意义等等。