我正在尝试弄清楚如何检测二进制文件是否已被UPX压缩。我正在使用一个简单的CRC来检测我的应用程序是否以任何方式被更改,如果CRC在大小上由于打包程序而失败,我想检测为OK。
现在我开始使用UPX。
那么,二进制文件上有什么标记吗?是否有任何特定的JMP或其他说明需要我搜索?
这将主要在Windows中进行测试,但将来我可能也会将其添加到Linux中。
感谢任何帮助(和代码)。
添加:
我发现在我检查的10个二进制文件中
AddressOfEntryPoint
Import Directory RVA
Resouce Directory RVA
指向UPX或具有由UPX设置的偏移量。有关于这个的信息吗?
谢谢
发布于 2011-01-04 00:35:35
您可以尝试检查可执行文件的节名。我相信,UPX会把它们改成UPX0,UPX1,UPX2。
发布于 2011-01-03 22:08:59
从UPX Homepage下载upx源码,打开src/p_w32pe.cpp文件,你要找的函数是;
int PackW32Pe::canUnpack()此功能用于检查文件是否用win32 upx压缩。
https://stackoverflow.com/questions/4584981
复制相似问题