JADX
(把apk jar class dex等直接转化为java代码)
通过文件名可以先自己猜一下文件的作用
利用好搜索功能
一些使用经验(内存不足/代码展示不全)
APKTOOL
(.dex是Android虚拟机可执行的字节码文件,通过反编译成可读文件,APKTOOL反编译apk包里面的所有内容,而不光是解压 .dex->.smali)
命令行操作
apktool d test.apk # 解压
apktool b 目录 # 重新打包,打包完放在目录下的dist文件夹里
大厂安全人员可能利用APKTOOL的漏洞,让我们反编译APP失败。方法:1.搞老版本 2.等APKTOOL升级 3.自己改APKTOOL(开源)
关于smali
- 一个.smali文件对应一个原java文件
- .smali可以和.dex相互转换
- 修改APK代码通常修改smali文件(重新修改.java源代码 重新编译的困难太大)
- baksmali.jar smali.jar可以对dex 和 smali文件做转换
Dalvik 虚拟机(Dalvik VM)是 Google 专门为 Android 平台设计的一套虚拟机。区别于标准 Java 虚拟机 JVM 的 class 文件格式,Dalvik VM 拥有专属的 DEX 可执行文件格式和指令集代码。反汇编后 DEX 文件会产生.smali 后缀的代码文件,smali 代码拥有特定的格式与语法,smali 语言是对 Dalvik 虚拟机字节码的一种解释
反编译后的AndroidManifest.xml
- APP权限配置
- 程序入口
- 逆向的关键线索
<application>标签(一个apk只有一个)
<activity>标签
关键找<action>带main特征的,然后反向找到<activity>上写的关键类
签名
keytool jarsigner 工具是JAVA JDK自带的
用keytool生成证书(命令行 -validity是证书有效期)
keytool -genkey -keystore my-release-key.keystore -alias my_alias -keyalg RSA -keysize 4096 -validity 10000
用生成的证书给apk签名(命令行)
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -signedjar
com.dahuodong.veryevent_4.6.2_60_sign.apk com.dahuodong.veryevent_4.6.2_60.apk my_alias