導航:首頁 > 源碼編譯 > 反編譯關鍵參數

反編譯關鍵參數

發布時間:2024-12-18 11:42:57

『壹』 android編譯(三)— 手動編譯

PS: 最近沒工作,沒工作就沒需求,沒需求就沒什麼技術總結的靈感,那就沒更新什麼。但是兩個月不更新了,要是三個月不更新就會出大事,所以這次打算做一件有意思又不難的事。
之前有發文章寫過反編譯,今天就來試試反編譯之正編譯,開玩笑的,就是試試手動編譯的過程, 平時我們在項目中編譯出包都是使用Gradle直接執行assemble任務就能解決,我打算試試手動模擬整個過程。當然我也是第一次這樣搞,所以如果有寫得不對的地方,還望指出。

眾所周知,apk實質上就是一個壓縮包。復習一下,我們寫個最簡單的Demo,然後打包,然解壓,注意是解壓,不是反編譯,意義是不同的。

注意我這個Demo很簡單,什麼都不引入

然後我們看看整個出包的過程,隨便從網上拿張圖

然後這里我們用Android SDK給我們提供的工具來完成整個流程,工具在sdk文件夾下的build-tools文件夾下,有什麼aapt.exe、dx.bat,用的就是這些

這步應該是整個流程最簡單的吧,我感覺,所以從最簡單的開始。
我們先看看生成的dex有什麼

對比項目,我是一開始最基本的項目,什麼都沒動,所以只有一個MainActivity.clas,所以這里肯定是要先想辦法得到BuildConfig.class和R.class。

輸入命令
aapt p -f -m -J <輸出路徑> -S <res路徑> -I <android.jar路徑> -M <Manifest路徑>

下一步,我們需要BuildConfig.class
這個BuildConfig.java是由gradle在我們配置好gradle之後自己幫我們生成的,所以我們直接拿來用,然後再javac就得到class文件了

然後我們再編譯我們的MainActivity.java並將它們放到同一個文件夾下, MainActivity因為引用了Android.jar和R文件,所以編譯時注意點,我為此被動好好的復習了一遍javac,都是淚

最後一步,我們用dx工具就能打出dex文件了

然後執行命令就得到一個Dex文件,看看這個文件裡面和上面直接打出的apk中的Dex文件有什麼不同:

看圖,我們上一步已經生成.dex了,那麼我們需要和compiled Resource 還有 Other Resource 一起生成APK。

我們先來生成compiled Resource,也就是resources.arsc
發現之前使用aapt生成R文件的時候沒寫完整,當時可以加一個-F參數直接生成arsc和Manifest

導出的abc.zip裡面就有resources.arsc和AndroidManifest.xml。
因為之前寫漏了,所以肯定要重新編一次MainActivity.java和Dex

我們把剛才的dex文件和aapt生成的resources.arsc、AndroidManifest.xml和res放到一個文件夾裡面。
PS:res文件夾也是上面aapt的命令生成的
然後我們對比這個文件夾和之前apk解壓的文件夾

最後運行

看來是成功了。

再說說遇到的還有兩個問題,並說下我解決問題的思路
(1)我把它們都放到一個文件夾之後,我壓縮成壓縮包,然後改後綴成.apk,然後發現安裝不了,我就直接反編譯,發現發編譯失敗,提示包有問題,以我多點玩包的經驗,我感覺就是壓縮工具出了問題,然後我去下個「好壓」(這不是廣告啊),然後就能正常反編譯了。
(2)但是還是安裝不了,再根據我多年的玩包經驗,我感覺是簽名問題,然後我隨便給這個包上一個簽名,就能正常安裝得到上圖的結果了。

總體來說,還真挺好玩的,這整個過程,就是翻車了幾次。做完之後感覺非常牛逼,為什麼這樣說,因為我知道這整個過程,我就可以做到,我不經過gradle來打包,我自己寫個python腳本來調用aapt和dx來打包也是能做到的。
當然上面純屬異想天開,因為這是個什麼都沒有的Demo所以覺得簡單,要是一個真實的項目,我感覺肯定要有很多坑,別的先不說,一個項目那麼多依賴關系,我這javac要搞死人。
最後如果有不對的地方,希望有大佬能夠指出,畢竟能運行也不能證明完全沒問題。然後我使用的build-tools是28的,不敢保證其它版本包括以後版本的玩法都一樣。

『貳』 python生成exe文件與exe文件的反編譯

一、Python生成exe文件

1.使用Anaconda Prompt

通過打開Anaconda Prompt,切換到項目使用的環境,運行pyinstaller命令,生成的exe文件會自動存放於默認路徑下的dist文件夾內。

2.使用命令行窗口cmd

設置好三個環境變數,特別是pyinstaller文件夾路徑,打開cmd後,直接輸入pyinstaller命令,生成的exe文件將會被放置在cmd路徑下的dist文件夾中。

二、exe文件反編譯成py文件

1.從exe文件轉pyc文件

下載pyinstxtractor工具,使用在Prompt或cmd中運行,生成的文件夾main.exe_extracted中可以找到main.pyc文件。

2.從pyc文件轉回exe

安裝反編譯工具uncompyle6,運行在Prompt或cmd中,生成main.py文件。

三、pyinstaller參數總結

-F, –onefile: 打包為單個文件,適用於單個.py文件的代碼。

-D, –onedir: 打包多個文件,適用於框架形式的工具代碼,便於維護。

-K, –tk: 包含TCL/TK。

-a, –ascii: 不包含編碼,默認在支持Unicode的版本上包含所有編碼。

-d, –debug: 生成調試版本的可執行文件。

-w, –windowed, –noconsole: 窗口模式執行,不開啟命令行窗口(僅適用於Windows)。

-c, –nowindowed, –console: 控制台模式執行。

-s, –strip: 通過strip壓縮可執行文件和共享庫,注意Cygwin的strip可能影響普通Win32 DLL。

-X, –upx: 使用UPX壓縮執行文件及Windows中的DLL。

-o DIR, –out=DIR: 指定輸出目錄。

-p DIR, –path=DIR: 設置導入路徑。

-i ICO_PATH, –icon=ICO_PATH: 添加圖標至可執行文件。

-v VERFILE, –version=VERFILE: 添加版本信息。

-n NAME, –name=NAME: 指定項目名稱。

四、參考資料

詳細參考資料包括但不限於官方文檔和社區教程,用於深入理解使用方法和參數細節。

閱讀全文

與反編譯關鍵參數相關的資料

熱點內容
如何將平板上的照片導入安卓手機 瀏覽:637
經濟學原理曼昆pdf下載 瀏覽:972
vc編譯軟體怎麼用 瀏覽:100
蘋果無法驗證app什麼情況 瀏覽:267
觀察伺服器是什麼工作 瀏覽:240
新瑪特用什麼app 瀏覽:888
電腦重置共享文件夾 瀏覽:954
自駕游找窩用什麼app 瀏覽:57
泰拉瑞亞安卓怎麼免費下國服 瀏覽:23
解壓大作戰的視頻 瀏覽:100
手機銀行伺服器地址 瀏覽:770
java線程總結 瀏覽:930
app下單點菜是什麼功能 瀏覽:888
測自己是什麼動物臉型app 瀏覽:733
linuxdb2命令 瀏覽:268
vss編譯器 瀏覽:136
lol手游如何查看伺服器 瀏覽:488
免費反編譯修改 瀏覽:576
linux查看samba用戶 瀏覽:867
bat命令返回值 瀏覽:886