繫結 UPX 顯著減少 Qt 生成檔案體積

2021-06-03 05:21:44 字數 667 閱讀 7305

我已經測試過了,是很好用

upx 是著名的 開源 可執行檔案壓縮工具,可以壓縮 linux, win32, macos, dos... 等系統下的可執行檔案體積。 

壓縮後檔案還是可執行的。

論壇裡有很多人說,qt生成的檔案體積太大,所以 upx可以幫大忙。如何 自動化的完成這個壓縮過程呢?

這裡僅以 windows 下的 mingw32 為例。 有興趣的朋友可以 推而廣之。

解壓縮後,只有 upx.exe 是有用的,可以將它放在 mingw32\bin 或 windows\system32 下,省去設定路徑的煩惱

然後 在你的 pro 檔案 中的最後加上這麼一句。

release:qmake_post_link += upx -9 $(destdir_target)

這句表明,在 編譯後,會自動執行 upx -9 $(destdir_target)

-9 的意思是,最大壓縮率。

前面的release 只針對 release 版本有效。因為debug版本 被壓縮後 會丟失除錯資訊。

這個對dll 同樣有效。所以就放心的加吧。

當然,你也可以加在 qt\mkspecs\win32-g++\qmake.conf 裡,這樣 以後所有的 工程就自動 被壓縮了。

upx可以將qt可執行檔案壓縮為 原來的 40%大小,還是很誘人的。

upx 手動脫殼

查殼 upx這類壓縮殼手動脫殼非常簡單。一 查詢oep 二 dump 修復iat way1 首先在程式入口發現pushad指令,接下來可以直接查詢指令popad 在jmp指令處下斷,執行。jmp之後來到oep 當然可以在單步pushad後,轉到esp的記憶體視窗,設定硬體斷點,執行,找到jmp處。執...

datagridview 修改繫結資料集顯示的問題

呵呵,今天又碰到這個問題了,不過這次要委託回主線程修改不麻煩了,要修改的字段太多了。上網搜了一下,找到了這個 dg.dispatcher.invoke new action dg.items.refresh dg.dispatcher.begininvoke new action dg.items....

upx加殼原理

upx的功能有兩種描述。一種叫做給程式加殼,另一種叫壓縮程式。其實這兩種表述都是正確的,只是從不同的 角度 對upx的描述。upx的工作原理其實是這樣的 首先將程式壓縮。所謂的壓縮包括兩方面,一方面在程式的開頭或者其他合適的 地方 插入一段 另一方面是將程式的其他地方做壓縮。壓縮也可以叫做加密,因為...