以编程方式检测 UPX
我正在尝试找出如何检测二进制文件是否已使用 UPX 压缩。我正在使用一个简单的 CRC 来检测我的应用程序是否以任何方式发生了更改,如果 CRC 由于打包程序而在大小上失败,我希望检测为正常。
现在我开始使用 UPX。
那么,二进制文件上有任何标记吗?我应该搜索任何特定的 JMP 或其他指令吗?
这将主要在 Windows 中进行测试,但将来我可能也会将其添加到 Linux 中。
任何帮助(和代码)表示赞赏。
添加:
我发现在 10 个二进制文件中我检查了
AddressOfEntryPoint
导入目录 RVA
资源目录 RVA
要么指向 UPX,要么具有由 UPX 设置的偏移量。有这方面的信息吗?
谢谢
I'm trying to figure out how to detect whether a binary has been compressed with UPX. I am using a simple CRC to detect whether my app was in any way changed and if the CRC failed on the size due to a packer I would like to detect that as OK.
Right now I am starting with UPX.
So, is there any marker on the binary? are there any specific JMP or other instructions that I should search?
This will mainly be tested in Windows, but in the future I might add it to Linux as well.
Any help (and code) is appreciated.
ADDED:
I found that in the 10 binaries I checked the
AddressOfEntryPoint
Import Directory RVA
Resouce Directory RVA
either point to UPX or have an offset that is set by UPX. Any information on this?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从UPX主页下载
upx
源代码并打开src/p_w32pe.cpp< /代码> 文件;您正在寻找的功能是;
此函数检查文件是否使用 win32 upx 压缩。
Download
upx
source code from UPX Homepage and opensrc/p_w32pe.cpp
file; the function you are looking for is;This function checks if the file is compressed with win32 upx.
您可以尝试检查可执行文件的节名称。我相信 UPX 将它们更改为 UPX0、UPX1、UPX2。
You might try checking the section names of the executable. UPX changes them to UPX0, UPX1, UPX2, I believe.