一、解包(查看资源文件)/ 打包:apktool
apktool.jar:应用于apk的解压以及反编译打包
拆解Apk文件,反编译其中的资源文件,将它们反编译为可阅读的AndroidManifest.xml文件和res文件。
值得注意的是,apktool反编译出来只能得到apk的smali文件,即汇编语言版本,并不能得到源代码。
可以看到 APK 里面的声明文件、布局文件、图片资源文件、由 dex 解包出来的 smali 文件、语言文件等。如果你要汉化、修改界面、修改代码的话,apktool 可以帮你一站式完成。
assets (未被编译)项目的assets文件夹
res (未被编译)项目的res文件夹 里面可以清楚的看到values, layout, drawble,anim,mipmap文件夹
smali (被编译)项目的Java文件,这里表现的不是.Java格式,是.smali格式
Android 的 assets 和 res 文件都不会编译为二进制文件,所以反编译后,基本都是能看到它的全貌.
Android 中 .Java 文件,在 JVM 编译之后变成 .class 文件,然后再经过Android 的虚拟机 Dalvik,代码编译为 .smali 文件
下载地址:
https://bitbucket.org/iBotPeaches/apktool/downloads/
解包 APK(apktool):
java -jar apktool_2.3.3.jar d -f app-release.apk -o outapkdir
其中 app-release.apk是被解包的 APK 文件名, outapkdir是输出目录名称
修改源码
修改res、AndroidManifest的package,icon、app_name 、smali等,即可以修改APP相关内容。
重新打包(apktool):
java -jar apktool_2.3.3.jar b outapkdir -o new.apk
outapkdir 就是上面的输出目录, new.apk 是重新打的包
注意: 重新打的包不可以直接安装,需要签名。
签名(jarsigner):
jarsigner是JDK提供的针对jar包签名的通用工具 , 位于JDK/bin/jarsigner.exe
1、需要删除apk包中的签名文件,META-INF(更改apk格式为压缩包形式,删除META-INF文件夹,改回.apk格式);
2、将签名证书(xuqiang.keystore)复制到与需要重新签名的apk文件相同的目录下(如:复制到D:\Sign);
3、进入cmd模式,进入D:\Sign目录;
4、运行下面的命令:
jarsigner -verbose -keystore xuqiang.keystore -storepass xq666
-signedjar signed.apk -digestalg SHA1 -sigalg MD5withRSA unsign.apk xq.con
jarsigner :Java的签名工具
-verbose :显示签名的详细信息
-keystore xuqiang.keystore :签名证书文件
-storepass xq666 :签名证书密码
-signedjar signed.apk :已签名apk的命名(signed apk),输出apk
-digestalg SHA1
-sigalg MD5withRSA unsign.apk :待签名apk的命名(unsigned apk)
xq.con:签名证书文件的别名(alias),这里要注意是别名,可能和签名证书,名称不一样,写错会报错:找不到证书链错误
二、查看源码:dex2jar 和 jd-gui
dex2jar
这个工具用于将dex文件转换成jar文件
下载地址:
https://sourceforge.net/projects/dex2jar/files/
jd-gui
这个工具用于将jar文件转换成java代码
下载地址:
http://jd.benow.ca/
使用步骤:
1、将要反编译的APK后缀名改为.rar或者 .zip,并解压,得到其中的classes.dex文件
(它就是java文件编译再通过dx工具打包而成的)
dex是Android平台上(Dalvik虚拟机)的可执行文件, 相当于Windows平台中的exe文件, 每个Apk安装包中都有dex文件, 里面包含了该app的所有源码, 通过反编译工具可以获取到相应的java源码。
2、将classes.dex文件放在d2j-dex2jar.bat同级目录,cmd执行以下命令生成classes-dex2jar.jar文件。
d2j-dex2jar.bat classes.dex
3、打开jd-gui.exe,File –> open File 打开classes-dex2jar.jar
就可以使用【jd-gui】工具将class文件反编译成java源代码
三、查看当前的activity
cmd输入:
adb shell dumpsys activity top
//或
adb shell dumpsys activity | findstr "mFocusedActivity"
推荐:
(郭霖)http://blog.youkuaiyun.com/guolin_blog/article/details/49738023
(鸿洋)http://blog.youkuaiyun.com/lmj623565791/article/details/23564065
(玉刚)http://blog.youkuaiyun.com/singwhatiwanna/article/details/18797493
集成反编译工具:
apkIDE(连之理)
androidkiller
jadx:https://download.youkuaiyun.com/download/sinat_31057219/10459674
jeb