Android Apk的破解:反編譯、修改資源代碼、重新打包、簽名


工具准備

apktool

  • 下載網址

  • 附上Mac安裝說明:

    • Download Mac wrapper script (Right click, Save Link As apktool)
    • Download apktool-2 (find newest here)
    • Rename downloaded jar to apktool.jar
    • Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
    • Make sure both files are executable (chmod +x)
    • Try running apktool via cli
  • 問題:生成的都是smail 文件,JD-GUI能查看jar文件。

dex2jar

  • Tools to work with android .dex and java .class files
  • 網址

JD-GUI

實驗步驟

提取資源

$apktool d xxx.apk

提取jar

  • 將xxx.apk改名成xxx.apk.zip,用壓縮工具解壓文件,得到classes.dex文件。

  • 運行d2j-dex2jar.sh classes.dex, 得到classes-dex2jar.jar

      $cd dex2jar-2.0/
      $chmod u+x *.sh
      $cd ../xxx.apk/
      $../dex2jar-2.0/d2j-dex2jar.sh classes.dex
    

查看java代碼

使用JD-GUI打開classes-dex2jar.jar,界面中選擇class文件即可查看java代碼。

修改代碼

注意,修改代碼及資源,最好的方式是修改apktool反編譯后的資源級smali代碼。JD-GUI查看的java代碼不適宜修改,因為修改后還需要重新轉換成smali,才能重新編譯打包會apk。

至於smali的修改,則要學習smali語言的語法了,smali是一種類似匯編語言的語言,具體語法可自行上網學習。

重新打包

這個簡單,直接使用以下命令即可。

apktool b xxx

如代碼沒問題,則能正常編譯,生成的apk在dist子目錄里。

重新簽名

以上打包的apk是無簽名的,是不能安裝運行的,需要重新簽名。

簽名第一步是生產密鑰,命令是

keytool -genkey -alias demo -keyalg RSA -validity 40000 -keystore demo.keystore

第二步就是簽名了,命令是:

jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -tsa http://timestamp.digicert.com -keystore demo.keystore -signedjar xxx_signed.apk xxx.apk demo

其中http://timestamp.digicert.com是時間戳認證網站,如失效需另外找。


免責聲明!

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



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