apk解包+修改源碼+重新打包


一直在做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文件。

   

如圖,找到"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的語法。

  

工具鏈接如下:

http://download.csdn.net/detail/cwx01perfect/9268253


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM