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是时间戳认证网站,如失效需另外找。

posted @ 2017-09-21 16:55  Zen_Garden  阅读(6965)  评论(0编辑  收藏  举报