什么是UPX最好的压缩方法

jim*_*web 5 c# windows delphi

我最近一直在尝试不同的EXE包装工.我尝试了ASPack,UPX,mPress等.在尝试了六个打包机时,我发现大多数打包的EXE都会触发虚假的病毒签名.甚至UPX也不例外.不过,我的选择是UPX.请问任何人,建议我UPX中可用的最佳压缩/包装方法是什么?

我对UPX很满意--lzma myEXE.eXE仍然很乐意听到这个人的意见.我不喜欢UPX --ultra --brute myEXE.EXE,因为它需要花费数小时来完成这个技巧.

Arn*_*hez 15

我经常使用UPX,版本之间差别不大.

最新的--lzma设置产生了非常好的结果,并且--ultra --brute确实不值得花时间.充其量,压缩率提高1%......您应该更好地对内部位图进行子采样或重构代码.

但是,特别是对于Delphi应用程序,我不再使用UPX了.你谈到了反病毒软件误报,这是一个很大的问题.例如,听起来好像一些"便宜"的反病毒软件引入了非常简单(和错误)的启发式模式,如"UPX + Delphi =潜在恶意软件"或"Delphi +大小<300KB =潜在恶意软件".

如果您尝试将此类可执行文件提交到http://virustotal.com,您会发现大约8%的反病毒引擎正在做出错误的猜测.

我看到我的一些网站被标记为"恶意软件URI",因此.我看到有些客户抱怨我的送货会感染他们的电脑.不值得.

为了减少可执行文件的大小,我因此依赖:

  • .exe中嵌入大多数资源(文本,位图,甚至外部dll)作为.zip,并故意解压缩它们;
  • 使用我们的LVCL库,它能够创建一些非常小的可执行文件(如果您的UI需求很简单,例如设置或更新程序) - 请参阅Delphi 5-2007 的最新源代码.

  • +1非常好的答案,我实际上反对压缩可执行文件,老实说,现在,如果有必要,甚至可以提供20MB的可执行文件...... (4认同)
  • 您还可以通过7Zip文件或LZMA压缩安装程序交付您的EXE,这样可以毫不费力地将大小缩小到可比较的水平. (2认同)
  • @MarcovandeVoort你是对的,值得说UPX将解压缩然后将整个可执行文件存储在RAM中,而没有UPX,它将被4 KB块映射,仅在需要时 - 这是你在使用"加载时"所指的部分地".某些地方的某些UPX将使用更多的RAM,特别是在库中(正常的`.dll`是共享的,而UPXed` .dll`在调用它们的可执行文件之间不共享).所以UPX绝对不是21世纪的工具. (2认同)