我正在试图弄清楚如何检测二进制文件是否已使用UPX进行压缩。我正在使用一个简单的CRC来检测我的应用程序是否以任何方式改变,如果由于打包器而导致CRC大小失败,我想将其检测为OK。
现在我开始使用UPX。
那么,二进制文件上有标记吗?是否有任何特定的JMP或其他指令我应该搜索? 这将主要在Windows中进行测试,但将来我也可以将它添加到Linux中。
感谢任何帮助(和代码)。
增加:
我发现在10个二进制文件中我检查了
AddressOfEntryPoint
Import Directory RVA
Resouce Directory RVA
指向UPX或具有UPX设置的偏移量。关于这个的任何信息?
由于
答案 0 :(得分:2)
从UPX Homepage下载upx
源代码并打开src/p_w32pe.cpp
文件;你正在寻找的功能是;
int PackW32Pe::canUnpack()
此函数检查文件是否使用win32 upx进行压缩。
答案 1 :(得分:0)
您可以尝试检查可执行文件的节名称。 UPX将它们更改为UPX0,UPX1,UPX2,我相信。