MAC反编译APK

环境配置

Apktool的安装

  1. 在官网链接里下载一个shell脚本,保存的名字就是”apktool”,不要带.sh后缀。
  2. 下载最新的apktool-2,在bitbucket上,并重命名为:"apktool.jar"。
  3. 将”apktool”和”apktool.jar”放到 “/usr/local/bin”目录下
  4. 增加这两个文件可执行权限,chmod a+x apktool ;chmod a+x apktool.jar
  5. 执行apktool(测试:apktool -version可以看到版本信息)。

dex2jar和JD-GUI的安装

直接下载并解压:dex2jar JD-GUI

反编译步骤

  1. 新建个apk文件夹,将待破译的apk放进去,之后进到这个目录运行命令: apktool d test.apk
  2. 再运行命令回编译apk: apktool b test,build和dist就是回编译apk过程中生成的东西,dist里的apk文件是没有签名的。
  3. 我们要用dex2jar将apk转成jar文件,将dex2jar里的d2j_invoke.sh、d2j-dex2jar.sh增加可执行权限。然后进到dex2jar这个文件夹下运行: ./d2j-dex2jar.sh /Users/xxx/apk/test.apk ,得到test-dex2jar.jar文件。
  4. 打开JD-GUI,将hongbao-dex2jar.jar拖进去就看到源码了。通过看java源码对比smali文件,修改后回编译就ok了!

回编译apk签名

回编译后的apk是安装不成功的,总是提示:Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION] 实质是没签名。

  1. 生成签名:keytool -genkey -keystore test.keystore -keyalg RSA -validity 10000 -alias test
  2. 为apk增加签名:jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa https://timestamp.geotrust.com/tsa -keystore test.keystore -signedjar test-signed.apk test.apk test

注意:

  • 最后的”test”就是-alias后面带的,必须保持一致。
  • 如果不带-digestalg SHA1 -sigalg MD5withRSA签名后的apk安装也是不成功的,说INSTALL_PARSE_FAILED_NO_CERTIFICATES的错误,如果不带-tsa会报一个时间方面的警告。

你可能感兴趣的:(MAC反编译APK)