1. 程式人生 > >apk解包+修改原始碼+重新打包 修改Android端app教程 修改apk檔案教程

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