我之前使用过UPX来减少我的Windows可执行文件的大小,但我必须承认我对这可能产生的任何负面影响都很天真.所有这些包装/拆包的缺点是什么?
是否存在任何人建议NOT UPX-ing可执行文件的情况(例如,在编写DLL,Windows服务或定位Vista或Win7时)?我在Delphi中编写了大部分代码,但我也使用UPX来压缩C/C++可执行文件.
另外,我没有尝试使用UPX来保护我的exe不被反汇编程序,只是为了减少可执行文件的大小并防止粗略的篡改.
我用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) 我找到了一个似乎很紧凑的应用程序.我用一些十六进制编辑器打开它,它包含"UPX1"部分和"3.00 UPX!" 串.不幸的是,我无法使用upx最新解压缩它,它说"不是由UPX打包".有没有办法找出其他PE压缩机/加密器的用途?
我什么时候宣布
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
奇怪的消息:
解包exe会使损坏的exe抛出与此处完全相同的错误.("应用程序无法正确初始化(0xc0000005)")这是针对解压缩的exe,而不是在bug报告中打包.
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)
可能有人会尝试编译和压缩?
有没有一种方法来确定是否已使用UPX压缩了exe文件?
确定exe文件是否已被压缩的函数非常好,除了我发现代码有问题.如果调用函数IsUPXCompressed,则尝试运行upx,upx无法保存它修改的文件.在函数中没有正确共享权限的东西.我已经测试了几个小时.如果我不调用该方法,那么UPX可以毫无问题地编写文件.你调用它然后尝试运行UPX它不会保存文件.尝试写入文件时,UPX报告IOException权限被拒绝错误.
任何人都可以在代码中发现可能导致此问题的错误吗?
谢谢
确定exe文件是否已被压缩的函数非常好,除了我发现代码有问题.如果调用函数IsUPXCompressed,则尝试运行upx,upx无法保存它修改的文件.在函数中没有正确共享权限的东西.我已经测试了几个小时.如果我不调用该方法,那么UPX可以毫无问题地编写文件.你调用它然后尝试运行UPX它不会保存文件.尝试写入文件时,UPX报告IOException权限被拒绝错误.
任何人都可以在代码中发现可能导致此问题的错误吗?
谢谢
我正在使用UPX压缩器来压缩用Delphi XE编写的应用程序.文件大小从大约32 Mb到8 Mb.
但是,我注意到的一件奇怪的事情是,当运行压缩文件时,占用RAM会显着增加.从25/30 Mb到大约80 Mb.这是正常的还是你应该保留的问题?就我而言,由于应用程序在具有多个用户的Windows Server 2008远程桌面模式下运行,因此系统的重量不成比例.
为什么会这样?我怎么解决这个问题?
最新的Windows UPX版本3.09w会抛出UnknownExecutableFormatException,因此它显然不支持ARM的Android .so二进制文件.有Android的UPX分叉吗?
我试图在 gnu/linux amd64 上构建一个带有静态库的基于 qt 的软件,但没有成功(qt 是成功静态构建的)。
现在我看到有人在使用UPX。所以我尝试了动态构建,实际上,“文件”命令将二进制文件识别为静态链接。我可以相信它吗?我应该考虑使用 statifier 代替吗?
提前致谢
抱歉,我说得不够清楚。我正在尝试使用 QT 框架构建一个应用程序,但构建脚本很复杂并且是为共享库制作的。我能够在动态链接的二进制文件中构建应用程序,它正在工作,但我想获得带有静态链接库的二进制文件。我尝试了 UPX 软件(http://upx.sourceforge.net/),正如我在其他主题中看到的那样,它用于将带有动态库的二进制文件转换为带有静态库的二进制文件。
但这对我来说似乎太神奇了,它真的有效还是只是隐藏了一些东西并且linux认为二进制文件现在是静态链接的?
感谢您的回答。
我最近做了一些关于可执行压缩的研究.编译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)
我猜是可执行文件太简单了吗?或者可能是我错过了什么?如果有人知道这个问题,请告诉我原因.如果没有人告诉我,我必须阅读源代码以找出问题.啊! 阅读源代码负担.
我真的缺乏在Windows上开发东西的经验,我可能错过了一些明显的东西,试着保持冷静:)
我有一个应用程序(Qt C++),它使用.dll自己路径中的一些(我的意思是我将这些.dll与.exe一起提供).当我发送应用程序时,我通过upx压缩dll .它极大地压缩了它们,我可以在不解压缩dll的情况下使用它们.
我的印象是我做错了,但它只是偶然的,所以我想确定,使用压缩的dll是否可以?或者我应该在任何时候期待不可预测的问题?(这是主要问题)
如果.dlls可以在压缩模式下使用,那么为什么地球我们首先将它们解压缩.
我在Delphi 2007上使用madExcept + UPX时遇到问题.每当我打开压缩的应用程序时,都会出现一个Windows异常对话框,代码为0xc0000005.有人有解决方案吗?
谢谢!
我试图upx使用--lzma压缩方法减少我的应用程序大小.
但是,每当我upx在压缩后使用和扫描我的应用程序时,它都会显示此应用程序有病毒.这是出现的病毒结果
创:Adware.Heur.RmTfWDj6fzli
如果我在使用前扫描应用程序upx,应用程序是完全干净的,没有检测到病毒.
我该如何避免这个问题?
我在这里使用upx 391 http://upx.sourceforge.net/
upx ×13
delphi ×5
c++ ×3
compression ×3
exe ×2
qt ×2
winapi ×2
android ×1
android-ndk ×1
boost ×1
boost-thread ×1
delphi-xe7 ×1
dll ×1
dynamic ×1
gpl ×1
madexcept ×1
pyinstaller ×1
pyside ×1
python ×1
static ×1
windows ×1