以下是為大家介紹的《中端技術系列教程第二講——反編譯、編譯和簽名》詳細內容,希望對大家有所幫助!
№.1 反編譯
1、反編譯:高級語言源程序經過“編譯”變成可執行文件,反編譯就是逆過程。
但是通常不能把可執行文件變成高級語言源代碼,只能轉換成彙編程序。
2、通過反編譯我們都能做什麼:
簡單的說通過反編譯我們可以修改任意參數來使其達到我們預想中的效果,比如修改APP名字
3、APK的反編譯(APKTool)
3.1、APKTool的使用環境配置請參見第一講:在PC端搭建JAVA環境
3.2、下載所需附件
①打開地址:鏈接地址見原文
②下載兩個文件“apktool1.4.3.tar.bz2”和“apktool-install-windows-r04-brut1.tar.bz2”
3.3、安裝APKTool(其實算不上“安裝”)
①解壓上一步下載的兩個文件,得到三個文件,如圖所示
②將解壓出來的三個文件移動到C盤的windows目錄下
③打開CMD命令(方法在第一講中有介紹),直接輸入“apktool”,然後“回車”
如果沒有提示錯誤信息,就說明安裝成功(如下圖)
3.4、反編譯.apk文件(以“MiuiMusic.apk ”為例)
①打開CMD命令(方法在第一講中有介紹),輸入代碼:apktool dD:\MiuiMusic.apk D:\APK
▲這裡第一個D表示要反編譯的apk文件所在的目錄,所以首先要將apk文件放到D盤裡
再舉個例子,假如我把apk文件放到了D盤的“ abcd ”文件夾裡了,
那麼我要輸入的代碼就應該是:apktool dD:\abcd\MiuiMusic.apk D:\APK
▲這裡第二個D表示反編譯apk後的目錄,意思就反編譯到D盤的APK文件夾裡
再舉個例子,假如我要把apk文件反編譯到E盤的“ abcd ”文件夾裡,
那麼我要輸入的代碼就應該是:apktool dD:\MiuiMusic.apk E:\abcd
②對於這段代碼的詳細解釋,如下圖所示
▲輸出目錄文件夾名字可以自定義,輸入代碼後,會自動在指定目錄下創建文件夾
③代碼輸入完成後“回車”,稍等片刻,即可反編譯完成
那麼這個時候在代碼中所指定的目錄裡就可以找到反編譯後的文件了!
3.5、有些apk需要framework框架支持,下面說說如何導入該框架
①用壓縮軟件打開apk文件所在ROM(這裡以MIUI ROM為例)如圖所示
②打開文件夾system\framework,找到文件“framework-res.apk”,並將它複製到C盤的Windows文件夾裡
③打開CMD命令,輸入代碼:apktool ifC:\windows\framework-res.apk,然後“回車”
瞬間就會完成,如下圖所示,即導入框架成功!
4、JAR的反編譯(JD-GUI)
這裡僅介紹JD-GUI這個軟件,其他更復雜的修改在以後我會繼續為大家帶來教程
這款反編譯器叫"JavaDecompiler",由Pavel Kouznetsov開發,目前最新版本為0.3.3;
它由C++開發,並且官方可以下載windows、linux和蘋果Mac Os三個平臺的可執行程序。
下載地址:(鏈接地址見原文)
№.2 編譯
反編譯掌握後,編譯就相對簡單許多了,只是一句代碼的事情,下面詳細來說
在上面的反編譯教程中,我將MiuiMusic.apk反編譯到了D盤的APK文件夾裡了,
那麼我現在要編譯回來,該如何操作呢?
1、打開CMD命令,直接輸入代碼:apktool b D:\APK 然後“回車”,稍等片刻
▲這裡要注意的仍然是代碼中的路徑
2、編譯完成後會在D盤的APK目錄下自動生成新文件夾“dist”,編譯後的apk就在這裡啦!
3、重新編譯後的APK需要簽名之後才能正常使用,那麼下面就開始說說簽名的相關事項
№.3 簽名
目前網絡上的簽名工具是玲琅滿目,非常之多,這裡我只給大家介紹一種,原理基本相同
1、簽名有什麼用?
使用特殊的key簽名可以獲取一些不同的特殊權限
APK如果使用一個key簽名,發佈時另一個key簽名的文件將無法安裝或覆蓋老的版本APK
這樣可以防止已安裝的應用被惡意的第三方覆蓋或替換掉
當然了,這裡我們不介紹使用key簽名的方法,做為一個普及給大家看看吧
2、簽名apk
①推薦簽名工具APKSign(目前我也在使用):173835n2arn0qrzrna7221.zip(1.88 MB,下載地址見原文)
②下載附件後解壓,打開文件夾“ APKSign ”,並打開程序“APKSign.exe”(如圖所示)
③至於它的使用方法,就不用我多說了吧?