以编程方式检测 UPX

发布于 2024-10-10 13:36:16 字数 403 浏览 1 评论 0原文

我正在尝试找出如何检测二进制文件是否已使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

因为看清所以看轻 2024-10-17 13:36:16

UPX主页下载upx源代码并打开src/p_w32pe.cpp< /代码> 文件;您正在寻找的功能是;

int PackW32Pe::canUnpack()

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

Download upx source code from UPX Homepage and open src/p_w32pe.cpp file; the function you are looking for is;

int PackW32Pe::canUnpack()

This function checks if the file is compressed with win32 upx.

别低头,皇冠会掉 2024-10-17 13:36:16

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

You might try checking the section names of the executable. UPX changes them to UPX0, UPX1, UPX2, I believe.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文