Apk反编译
Apk反编译使用到的工具:
1、apktool (https://bitbucket.org/iBotPeaches/apktool/downloads/)
2、enjarify (https://github.com/google/enjarify)
3、Java Decompiler (http://jd.benow.ca)
1、apktool
功能:用于拆解安装包、重新打包。
下载地址: (https://bitbucket.org/iBotPeaches/apktool/downloads/)
安装方法: (https://ibotpeaches.github.io/Apktool/install/)
使用方法: (https://ibotpeaches.github.io/Apktool/documentation/)
apktool安装时注意几点:
1、检查是否安装java环境,如果没有,请先安装java环境
2、将apktool脚本变成可执行文件
图1:
图2:
图1红框内的脚本当右键保存的如果是apktool.txt格式的文件,本人保存的时候就是txt格式,见图2。当我使用Sublime Text编辑器将其保存为apktool.sh时,无法通过’chmod +x’将其变为可执行文件。最终使用Atom编辑器将其保存为apktool,此时这可使用’chmod +x’将其变为可执行文件。
Sublime Text2编辑器
Atom编辑器
最终得到如下结果
其实apktool脚本并不是必须的,作用就是在执行apktool.jar时,不必每次都要不厌其烦的输入:java -jar apktool.jar
关于这一点网站上也Note出来了:
Note - Wrapper scripts are not needed, but helpful so you don’t have to type java -jar apktool.jar over and over.
未使用apktool.sh wrapper shell script时的格式java -jar apktool.jar yourapp.apk -o yourapp
使用enjarify.sh wrapper shell script时的格式apktool yourapp.apk -o yourapp
2、enjarify
功能:用于反编译dex文件,得到java源代码,与dex2jar类似。
下载地址:(https://github.com/google/enjarify)
这个工具是谷歌官方开源的用于反编译dex文件的。
enjarify安装注意几点:
1、检查是否安装python3
因为enjarify是一个纯的python3应用,所以必须确保已经安装了python3,如果没有,则需要安装。
此时又要祭出大杀器 Homebrew
安装Python 2.7的话,请输入:$ brew install python
如果你选择使用Python3,只需要将python替换成python3即可。$ brew install python3
想查看可以安装哪些Python版本的话,可以通过下面的命令在Homebrew上搜索。$ brew search python
这个命令会列出可以安装的全部Python版本。
2、为了方便原则,方便使用enjarify.sh脚本窍门
在终端里执行以下语句ln -s "$PWD/enjarify.sh" usr/local/bin/enjarify
$PWD指enjarify所在的物理位置,我的电脑位置如下:/Users/yuntai01/Desktop/下载/enjarify-1.0.3
执行完,则可在对应的文件夹中找到:
未使用enjarify.sh wrapper shell script时的格式python3 -O -m enjarify.main yourapp.apk -o yourapp.jar
使用enjarify.sh wrapper shell script时的格式enjarify yourapp.apk -o yourapp.jar
3、Java Decompiler
功能:查看java源代码
下载地址:(http://jd.benow.ca)选择jd-gui即可。
用法:启动jd-gui,直接将enjarify反编译出来得到jar包拖进jd-gui中即可。
Apk重新打包
1、使用前文提到的apktool工具解开test.apk$ apktool d testapp.apk -o testapp
2、查看解开的目录下的 META-INF/CERT.RSA,该文件存储有原应用的签名$ keytool -printcert -file test/original/META-INF/CERT.RSA
3、重新打包应用为 new_testapp.apk$ apktool b test -o new_testapp.apk
4、生成一个新的 keystore$ keytool -genkey -v -keystore androidse.keystore -alias androidsekey -keyalg RSA -keysize 2048 -validity 365
5、用刚刚生成的 keystore 对重新打包生成的 new_testapp.apk 进行重新签名$ jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore androidse.keystore new_testapp.apk androidsekey
6、验证签名是否正确打到应用上$ jarsigner -verify -verbose -certs new_testapp.apk
7、对齐 apk,应用要想上 Google Play 必须进行对齐操作,对齐后生成新的应用 new_testapp_align.apk$ ANDROID_HOME/build-tools/23.0.2/zipalign -v 4 new_testapp.apk new_testapp_align.apk
以上就完成了最简单的重新打包操作。
Mac上安装apk到Android设备
使用Google官方推荐的工具 Android File Transfer:
Android File Transfer:(https://www.android.com/filetransfer/)