环境配置
- 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
转载请保留本文链接,谢谢