环境配置
- ROOT真机或者带完整ROOT的模拟器
- IDE,推荐使用
VS Code
或者Android Studio
- JAVA环境(各种工具需要使用到)
- ADB(建议加到
PATH
中)
常用工具介绍
@> 基本都可以在52破解的网盘里找到:链接
- Jadx
功能比较简单,速度比较快,反编译和反混淆的结果比JEB容易看一点。
只支持smali,不支持JNI,也就是Native层的反编译。
-
JEB
相比Jadx功能更多,支持反编译JNI。支持动态调试,支持脚本和插件。
-
IDA
跨平台的反编译工具,反编译JNI比较好用。支持动态调试,支持脚本和插件。
-
ADM (Android Device Monitor)
ADM
是安卓SDK中附带的实用工具,路径为\android-sdk\tools\lib\monitor-x86_64\monitor.exe
。
动态调试方法
开启调试模式
i> 如果出现了debug
标志代表该设备开启了调试模式,可以跳过本节
-
确保设备已经刷入
Magisk
并激活 -
安装
Busybox for Android NDK
和MagiskHide Props Config
模块,重启后生效。 -
使用
ADB Shell
或者Termux
等软件,运行命令:su props
依次选择
Edit MagiskHide props
->ro.debuggable
,然后输入y
修改值,最后输入y
,重启系统后生效。@> 系统有可能会重启2次,是正常现象。
-
验证是否成功
如果在
ADM
中可以看到debug
标志说明修改成了。
使用ADB启动调试会话
-
查看应用包名和启动入口
-
构造
ADB
调试命令adb shell am start -D -n [包名]/[启动Activity名]
例如上面的例子,构造以后是这样的:
adb shell am start -D -n com.example.easyre/com.example.easyre.MainActivity
-
等待附加调试器
如果命令正确,将会弹出等待调试的提示:
ADM
的设备列表中也会在对应进程前面显示一个调试图标:
使用 JEB 进行附加调试
-
确保已经使用'ADB'连接到了设备
-
使用
JEB
打开APK
,并在手机或者模拟器上运行对应应用。 -
在
JEB
中启动附加调试 -
下断点方法
在
Java
视图定位到代码以后,按TAB
切换到Smali
视图,使用调试器
->打开或关闭断点
添加或者移除断点。
使用 IDA 进行动态调试
-
部署
IDA
调试工具默认路径在
dbgsrv
下,android_server
和android_server64
适用于ARM架构32位和64位应用,android_x86_server
和android_x64_server
适用于x86架构32位和64位应用,如果都不能正常工作,可以试试android_server_nonpie
。使用ADB传到安卓系统中
adb push [本地文件路径] [远程文件路径]
,例如:adb push Desktop\IDA\dbgsrv\android_server /data/ida_server adb push Desktop\IDA\dbgsrv\android_server64 /data/ida_server64
修改文件权限,可以使用
adb shell
或者Termux
:cd /data chmod 755 ida_server*
启动调试工具
./android_server &
@> 加 & 可以让进程在后台运行。
-
在
IDA
中启动附加调试
使用 Android Studio 进行动态调试
-
使用
Apktool
生成逆向后的工程文件apktool d [APK路径]
i> 如果
Apktool
反编译失败,可以试试Jadx
-
在 Android Studio 中打开
APK
文件 -
导入安卓工程
-
创建调试配置
-
在
Android Studio
中启动调试会话
本文链接:https://blog.chrxw.com/archives/2020/07/27/1330.html
转载请保留本文链接,谢谢