以编程方式检测UPX

时间:2011-01-03 13:51:46

标签: c windows packing upx

我正在试图弄清楚如何检测二进制文件是否已使用UPX进行压缩。我正在使用一个简单的CRC来检测我的应用程序是否以任何方式改变,如果由于打包器而导致CRC大小失败,我想将其检测为OK。

现在我开始使用UPX。

那么,二进制文件上有标记吗?是否有任何特定的JMP或其他指令我应该搜索? 这将主要在Windows中进行测试,但将来我也可以将它添加到Linux中。

感谢任何帮助(和代码)。

增加:

我发现在10个二进制文件中我检查了

AddressOfEntryPoint
Import Directory RVA
Resouce Directory RVA

指向UPX或具有UPX设置的偏移量。关于这个的任何信息?

由于

2 个答案:

答案 0 :(得分:2)

UPX Homepage下载upx源代码并打开src/p_w32pe.cpp文件;你正在寻找的功能是;

int PackW32Pe::canUnpack()

此函数检查文件是否使用win32 upx进行压缩。

答案 1 :(得分:0)

您可以尝试检查可执行文件的节名称。 UPX将它们更改为UPX0,UPX1,UPX2,我相信。