Android逆向流程
2026-09-13 20:12:59 # Android逆向

工具地址:

  1. kstools https://github.com/fourbrother/kstools
  2. 52爱盘工具 https://down.52pojie.cn/Tools/Android_Tools/
  3. AndroidKiller (下面同理都在爱盘里面有)
  4. apkIDE
  5. apktools
  6. dex2jar
  7. jadx
  8. jd-gui

kstools 爆破 签名校验

有一些程序有签名的校验,当你修改完,打包的时候后,可以安装,但是打开闪退,或者弹出提示框,大部分就是有签名校验。

下载kstools工具,没有加固的就使用kstools.bat,直接搞定。注意appt的配置,我是用的apkIDE里面的appt。

AndroidKiller 集成软件

AndroidKiller 集成了常用的软件,配上可视化操作,十分好上手,就是里面的插件有点久了,需要自己手动替换为爱盘里面的最新版插件。

  1. 配置java环境,配置最新版的apktools.
  2. 把爆破签名后生成的apk,拖进去,可自己动反编译。
  3. 如果未修改签名,有一些app无法编译成功,会在编译死,需要关闭再次打开才可以,最好先爆破一下
  4. 修改smail文件,保存
  5. 编译,然后连接手机,安装
  6. 测试是否可用

单独使用工具

apktools 资源编译

1
2
3
4
5
6
java -jar apktool_2.3.1.jar d -f KeyValueTest.apk -o KeyValueTest
参数说明:
-f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。
-o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)。
-s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。
-r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)

dex2jar 代码编译 或者 jadx 代码编译

dex2jar

将apk文件修改后缀为zip然后解压或者直接解压,找到classes.dex

1
d2j-dex2jar.bat classes.dex

生成了classes-dex2jar.jar 一个jar包。

jadx

jadx更加方便快捷,打开bin文件中的jadx-gui.bat然后直接选择APK即可,虽然jadx也可反编译资源文件,但有时候并不准确

jd-gui 查看jar包

启动 jd-gui

1
java -jar jd-gui.jar

把生成的classes-dex2jar.jar 拖进去,就可以查看源码了,但是不能修改,可以帮助理解

重新打包签名

打包
1
java -jar apktool_2.3.1.jar b KeyValueTest

目录下会生成build和dist目录,dist 就有新的apk

生成keystore证书
1
keytool -genkey -v -keystore myApp.keystore -alias myApp.keystore -keyalg RSA -validity 30000
key dec
keytool 工具名称(固定写法)
)-genkey 执行的是生成数字证书操作(固定写法)
-v 打印生成证书的详细信息
-keystore myApp.keystore 生成的证书的文件名为”myApp.keystore”(根据需求,设置你的证书名)
alias myApp.keystore 证书的别名为”myApp.keystore”。(一般和上面的文件名相同,可以不同,但要记好,签名时会用**(A)**)
-keyalg RSA 生成密钥文件采用的算法为RSA(固定写法)
-validity 3000 该数字证书的有效期为30000天,30000天之后该证书将失效
签名
1
jarsigner -verbose -keystore myApp.keystore -signedjar android-release-signed.apk android-release-unsigned.apk myApp.keystore
key dec
jarsigner 工具称名(固定写法)
-verbose 显示出签名详细信息
-keystore myApp.keystore myApp.keystore 要使用的签名证书文件
-signedjar android-release-signed.apk 签名后的文件名
android-release-unsigned.apk 要签名的文件
myApp.keystore 别名,即(A)步中的别名

我这个还是比较简单的流程,还有深入的smail学习,因为逆向主要还是修改smail语句。或者大佬的修改so文件,还有hook,去签名校验,还有去壳等。

路还是很长的。

例如:smail,baksmail这个软件我还没有使用到。

参考:

  1. https://www.cnblogs.com/xiaoshen666/p/11008255.html
  2. https://blog.csdn.net/weitao_666/article/details/97615961