apk解包+修改原始碼+重新打包 修改Android端app教程 修改apk檔案教程
修改之前一定要先安裝java開發環境,不會裝的去自行百度。文章較長,耐心閱讀。
一直在做Android應用開發,但對於從自己手中輸出的apk包,瞭解並不是很深。最近想研究一下,消除下自己的一些技術盲點。
好吧,廢話少說,先切入主題。這篇文章主要介紹如何獲取apk包中的dex檔案,並簡單修改裡面的原始碼,再重新打包生成apk檔案。
下面提供對HelloWorld.apk的解包,修改原始碼,重新打包的過程。
1 需要用到的工具:
baksmali:把dex檔案轉換成smali檔案的工具(dex檔案無法修改,要想修改原始碼,必須把把dex檔案轉換成smali檔案)
smali:把smali檔案轉換成為dex檔案的工具(修改完smali檔案,自然需要把它還原到最初的dex檔案)
signapk.jar :對apk進行簽名(沒經過簽名的包最終會安裝失敗,提示“解析程式包出現問題”)
工具在文章最後會提供下載連結。
2操作步驟:
a 解壓apk檔案,(把apk的字尾名改為zip,用普通的解壓工具即可,winrar或者7zip)
b 使用baksmali工具將classes.dex轉為smali檔案,在cmd視窗輸入:java -jar baksmali-2.0.3.jar -x classes.dex
執行完後會生成out目錄,目錄結構跟原始碼相同,在對應目錄下查詢對應的smali檔案。如果找不到,把整個out資料夾放到編輯器裡搜尋即可。
如圖,找到"hello world"字串,把它修改為"modify successful" ,ctrl+s儲存後關閉檔案。
c 使用smali-2.0.3.jar工具把smali檔案轉為dex檔案,cmd中輸入命令: java -jar smali-2.0.3.jar -o classes.dex out
執行完後會生成並替換掉根目錄下的classes.dex檔案,這樣就修改成功了。
d 用生成的新的classes.dex檔案替換掉原先HelloWorl.apk解壓出來的classes.dex檔案,並用壓縮工具把這些檔案壓縮為HelloWorld.zip,並把zip字尾改為apk。
此處試驗過壓縮成為HelloWorld.rar,然後改為apk是不可以的。因為在簽名階段會報錯。
此時的apk包無法正常安裝,提示解析程式包錯誤。(原因是隻有簽名包才能正常安裝)
e 使用簽名工具對apk進行簽名,把apk拷貝到資源根目錄下的sign_tool目錄,cmd中輸入命令:
java -jar signapk.jar platform.x509.pem platform.pk8 HelloWorld.apk Signed.apk
執行完後會在該目錄下生成Signed.apk檔案,這個檔案就是最終的檔案了
安裝後試驗成功,HelloWorld字串已被成功替換。因為我們只是做簡單的修改,所以很容易。假如對大程式做比較複雜的修改,那就沒那麼容易了。大家有興趣的可以嘗試下,也可以研究下smali的語法。
工具連結如下:
密碼:0m4w