使用 UPX 压缩 Windows 可执行文件有什么缺点吗?

新手上路,请多包涵

我以前使用 UPX 来减小我的 Windows 可执行文件的大小,但我必须承认我对这可能产生的任何负面影响都很天真。所有这些打包/拆包的缺点是什么?

是否有人会建议不要对可执行文件进行 UPX 处理(例如,在编写 DLL、Windows 服务或针对 Vista 或 Win7 时)?我的大部分代码都是用 Delphi 编写的,但我也使用 UPX 来压缩 C/C++ 可执行文件。

附带说明一下,我 没有 运行 UPX 以试图保护我的 exe 免受反汇编程序的攻击,只是为了减小可执行文件的大小并防止粗略的篡改。

原文由 Mick 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

… 使用 EXE 压缩器也有缺点。最为显着地:

  • 在启动压缩的 EXE/DLL 时,所有代码都会一次性从磁盘映像解压缩到内存中,如果系统内存不足并被迫访问交换文件,这可能会导致磁盘抖动。相反,对于未压缩的 EXE/DLL,操作系统根据需要(即在执行它们时)为代码页分配内存。

  • 压缩 EXE/DLL 的多个实例在内存中创建代码的多个实例。如果您有一个包含 1 MB 代码(压缩前)的压缩 EXE,并且用户启动了 5 个它的实例,则浪费了大约 4 MB 的内存。同样,如果您有一个 1 MB 的 DLL,并且它被 5 个正在运行的应用程序使用,那么大约会浪费 4 MB 的内存。使用未压缩的 EXE/DLL,代码仅在内存中存储一次,并在实例之间共享。

http://www.jrsoftware.org/striprlc.php#execomp

原文由 Lars Truijens 发布,翻译遵循 CC BY-SA 4.0 许可协议

如今,磁盘上可执行文件的最终大小在很大程度上无关紧要。您的程序加载速度可能会快几毫秒,但一旦开始运行,差异就无法区分了。

有些人可能对您的可执行文件更加怀疑,因为它是用 UPX 压缩的。根据您的最终用户,这可能是也可能不是重要的考虑因素。

原文由 Greg Hewgill 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题