标签: upx

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

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

是否存在任何人建议NOT UPX-ing可执行文件的情况(例如,在编写DLL,Windows服务或定位Vista或Win7时)?我在Delphi中编写了大部分代码,但我也使用UPX来压缩C/C++可执行文件.

另外,我没有尝试使用UPX来保护我的exe不被反汇编程序,只是为了减少可执行文件的大小并防止粗略的篡改.

c++ compression delphi winapi upx

37
推荐指数
5
解决办法
2万
查看次数

使用pyInstaller/UPX进行的可执行文件遇到QtCore4.dll错误

我用pyInstaller编译的python程序结果超过400 MB.该程序的GUI基于htmlPY,它是"PySide的QtWebKit库的包装器".该程序的大尺寸部分归功于它利用numpy,scipy和nltk,部分原因是图形库.

为了最小化程序的大小,我安装了UPX.这将程序的大小减小到略超过100MB,这很大,但可以接受.

第一个问题是pyInstaller没有检测到htmlPy,并且没有将它包含在已编译的程序中.这可以通过将我的Python安装中的htmlPy模块复制到pyInstaller创建的'dist'目录中来解决.这样做之后,没有UPX编译的程序版本运行正常.

将htmlPy添加到'dist'目录后,运行可执行文件会在创建GUI时崩溃程序.我不确定这是否是由于UPX和QT之间或UPX,QT和htmlPy之间存在问题.Windows"问题签名"如下:

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: main.exe
  Application Version:  0.0.0.0
  Application Timestamp:    00000000
  Fault Module Name:    QtCore4.dll
  Fault Module Version: 4.8.7.0
  Fault Module Timestamp:   561e435a
  Exception Code:   c0000005
  Exception Offset: 000000000010883a
Run Code Online (Sandbox Code Playgroud)

关于这里发生了什么,以及如何解决它的想法?

编辑:

这些是我的.spec文件的内容:

# -*- mode: python -*-

block_cipher = None

added_files = [
     ( 'htmlPy/binder.js', 'htmlPy' ),
     ( 'templates/*', 'templates' ),
   ]
a = Analysis(['main.py'],
             pathex=['C:\\..\\My_App'],
             binaries=None,
             datas=added_files,
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=['rthook_pyqt4.py'],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher) …
Run Code Online (Sandbox Code Playgroud)

python qt pyinstaller upx pyside

15
推荐指数
1
解决办法
1194
查看次数

如何检测给定exe上使用的PE包装器是什么?

我找到了一个似乎很紧凑的应用程序.我用一些十六进制编辑器打开它,它包含"UPX1"部分和"3.00 UPX!" 串.不幸的是,我无法使用upx最新解压缩它,它说"不是由UPX打包".有没有办法找出其他PE压缩机/加密器的用途?

winapi exe upx

14
推荐指数
1
解决办法
2万
查看次数

提升线程和UPX压缩==无效的win32应用程序?

我什么时候宣布

boost::thread t1, t2;
Run Code Online (Sandbox Code Playgroud)

在我的程序中然后使用UPX压缩.exe文件,压缩成功.但是当我尝试启动压缩的exe时,Windows告诉我它是"无效的win32应用程序".

UPX有一个错误报告(类似的错误),但它有不同的错误消息("应用程序无法正确初始化(0xc0000005)").

在我的情况下,操作系统认为文件已损坏或其他东西,所以它甚至无法启动显示错误!为什么??

Win7x64,C++,VisualStudio,boost 1.47,UPX3.07

奇怪的消息:

  1. 解包exe会使损坏的exe抛出与此处完全相同的错误.("应用程序无法正确初始化(0xc0000005)")这是针对解压缩的exe,而不是在bug报告中打包.

  2. extern "C" void tss_cleanup_implemented(void) {} 在包含boost的线程头之前并不重要.结果是一样的.

main.cpp中:

#include <boost/thread.hpp>

int main(int argc, char** argv)
{
    boost::thread t;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

可能有人会尝试编译和压缩?

c++ boost boost-thread upx visual-studio

7
推荐指数
1
解决办法
704
查看次数

确定exe文件是否已使用UPX压缩的方法

有没有一种方法来确定是否已使用UPX压缩了exe文件?

确定exe文件是否已被压缩的函数非常好,除了我发现代码有问题.如果调用函数IsUPXCompressed,则尝试运行upx,upx无法保存它修改的文件.在函数中没有正确共享权限的东西.我已经测试了几个小时.如果我不调用该方法,那么UPX可以毫无问题地编写文件.你调用它然后尝试运行UPX它不会保存文件.尝试写入文件时,UPX报告IOException权限被拒绝错误.

任何人都可以在代码中发现可能导致此问题的错误吗?

谢谢


确定exe文件是否已被压缩的函数非常好,除了我发现代码有问题.如果调用函数IsUPXCompressed,则尝试运行upx,upx无法保存它修改的文件.在函数中没有正确共享权限的东西.我已经测试了几个小时.如果我不调用该方法,那么UPX可以毫无问题地编写文件.你调用它然后尝试运行UPX它不会保存文件.尝试写入文件时,UPX报告IOException权限被拒绝错误.

任何人都可以在代码中发现可能导致此问题的错误吗?

谢谢

compression delphi exe upx

6
推荐指数
2
解决办法
3660
查看次数

为什么我的应用程序在使用UPX压缩后会占用更多内存,我该怎么办呢?

我正在使用UPX压缩器来压缩用Delphi XE编写的应用程序.文件大小从大约32 Mb到8 Mb.

但是,我注意到的一件奇怪的事情是,当运行压缩文件时,占用RAM会显着增加.从25/30 Mb到大约80 Mb.这是正常的还是你应该保留的问题?就我而言,由于应用程序在具有多个用户的Windows Server 2008远程桌面模式下运行,因此系统的重量不成比例.

为什么会这样?我怎么解决这个问题?

delphi upx

5
推荐指数
1
解决办法
613
查看次数

是否可以使用UPX打包Android应用程序的原生二进制文件(为ARM构建)?

最新的Windows UPX版本3.09w会抛出UnknownExecutableFormatException,因此它显然不支持ARM的Android .so二进制文件.有Android的UPX分叉吗?

android upx android-ndk

5
推荐指数
0
解决办法
1134
查看次数

UPX 是否神奇地将二进制文件从动态链接转换为静态链接的 libarires?

我试图在 gnu/linux amd64 上构建一个带有静态库的基于 qt 的软件,但没有成功(qt 是成功静态构建的)。

现在我看到有人在使用UPX。所以我尝试了动态构建,实际上,“文件”命令将二进制文件识别为静态链接。我可以相信它吗?我应该考虑使用 statifier 代替吗?

提前致谢

编辑

抱歉,我说得不够清楚。我正在尝试使用 QT 框架构建一个应用程序,但构建脚本很复杂并且是为共享库制作的。我能够在动态链接的二进制文件中构建应用程序,它正在工作,但我想获得带有静态链接库的二进制文件。我尝试了 UPX 软件(http://upx.sourceforge.net/),正如我在其他主题中看到的那样,它用于将带有动态库的二进制文件转换为带有静态库的二进制文件。

但这对我来说似乎太神奇了,它真的有效还是只是隐藏了一些东西并且linux认为二进制文件现在是静态链接的?

感谢您的回答。

c++ qt static dynamic upx

5
推荐指数
1
解决办法
1233
查看次数

UPX NotCompressibleException

我最近做了一些关于可执行压缩的研究.编译test.cC语言源并在Linux中使用UPX压缩它而不是windows.它是终端列表:UPX: test.so NotCompressibleException.源代码test.c是:

int main(){
    int i = 0;
    printf("HelloWorld\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我猜是可执行文件太简单了吗?或者可能是我错过了什么?如果有人知道这个问题,请告诉我原因.如果没有人告诉我,我必须阅读源代码以找出问题.啊! 阅读源代码负担.

upx

4
推荐指数
1
解决办法
5829
查看次数

是否可以使用压缩的dll?

我真的缺乏在Windows上开发东西的经验,我可能错过了一些明显的东西,试着保持冷静:)

我有一个应用程序(Qt C++),它使用.dll自己路径中的一些(我的意思是我将这些.dll与.exe一起提供).当我发送应用程序时,我通过upx压缩dll .它极大地压缩了它们,我可以在不解压缩dll的情况下使用它们.

我的印象是我做错了,但它只是偶然的,所以我想确定,使用压缩的dll是否可以?或者我应该在任何时候期待不可预测的问题?(这是主要问题)

如果.dlls可以在压缩模式下使用,那么为什么地球我们首先将它们解压缩.

windows dll dynamic-linking upx

4
推荐指数
1
解决办法
4129
查看次数

我可以使用upx打包程序来压缩商业程序吗?

我可以使用upx打包程序来压缩商业程序吗?或者GPL是否限制我这样做?

gpl upx

2
推荐指数
1
解决办法
1049
查看次数

madExcept + UPX

我在Delphi 2007上使用madExcept + UPX时遇到问题.每当我打开压缩的应用程序时,都会出现一个Windows异常对话框,代码为0xc0000005.有人有解决方案吗?

谢谢!

delphi madexcept upx

1
推荐指数
2
解决办法
1014
查看次数

我如何安全地使用UPX?

我试图upx使用--lzma压缩方法减少我的应用程序大小.

但是,每当我upx在压缩后使用和扫描我的应用程序时,它都会显示此应用程序有病毒.这是出现的病毒结果

创:Adware.Heur.RmTfWDj6fzli

如果我在使用前扫描应用程序upx,应用程序是完全干净的,没有检测到病毒.

我该如何避免这个问题?

我在这里使用upx 391 http://upx.sourceforge.net/

compression delphi upx delphi-xe7

-1
推荐指数
1
解决办法
638
查看次数