安卓逆向环境配置
均在模拟器环境下运行apk
这里使用雷电9↗
0.adb
参考:ADB安装及使用详解(非常详细)从零基础入门到精通,看完这一篇就够了-CSDN博客↗
下载:dl.google.com/android/repository/platform-tools-latest-windows.z…↗
解压后要将解压目录添加到系统环境变量,方便直接在cmd里输入adb
实现调用
常用指令:
adb version :显示 adb 版本
adb devices:查看当前连接的设备,已连接的设备会显示出来(重要)
adb root:获取Android管理员(root用户)的权限。
adb shell:登录设备 shell,该命令将登录设备的shell(内核),登录shell后,可以使用 cd,ls,rm 等Linux命令
adb shell getprop ro.product.cpu.abi #查看系统架构
exit:退出shell
其他指令在动态调试介绍
1.jadx
略
2.jeb
下载及使用教程:JEB动态调试Smali-真机/模拟器(详细,新手必看) - 吾爱破解 - 52pojie.cn↗
静态分析
一些使用技巧
jeb加载apk后显示的是smali语言界面,要查看反编译后的Java语言,使用
右键-转换(Tab)
下断点
Ctrl+b
步过
f6
、跳出f7
、步入^f6
(?)
动态调试
示例:[NewStarCTF2023]Week3 Andronative
- 模拟器端
- 开启root权限
打开USB调试(这种应该适用于实体机,但还是打开,没坏处)
设置里找到关于-版本号,连点几次版本号,进入开发者模式
找到USB调试,打开
- 确保apk的debugger权限
使用MT管理器修改runfaraway.apk
中的AndroidManifest.xml
确保android:debuggable="true"
具体步骤:
提取安装包
定位到安装包
查看
打开方式选反编译
修改保存编译后重新签名APP
导出到共享文件夹中(可以在模拟器-更多-共享文件夹-高级选项 设置共享文件夹目录)
在模拟器中是/sdcard/Pictures
在windows中是D:\用户名\Documents\leidian9\Pictures
导入jeb
- Window端
调试需要先在smali代码里下断点
然后先在模拟器里打开要调试的软件,然后启动调试
可以查看局部变量的值等
over
3.ida(动调.so)
找到ida目录下的dbgsrv
文件夹
把这四个文件都push
进模拟器里:
adb push "D:\CTF\tools\IDA\dbgsrv\android_server" /data/local/tmp
adb push "D:\CTF\tools\IDA\dbgsrv\android_server64" /data/local/tmp
adb push "D:\CTF\tools\IDA\dbgsrv\android_x64_server" /data/local/tmp
adb push "D:\CTF\tools\IDA\dbgsrv\android_x86_server" /data/local/tmp
#(注意后面的目录可以随便选,有时候反调试会检测)
adb shell #进入shell
su #拿root权限
ls -l #查看执行权限
#给执行权限
chmod +x android_serverx64
chmod +x android_serverx86
对于这4个版本,有些运行会出错,我的是运行前两个都会报错
所以我选择另外两个,这里用x64的(改了一下名字)
再开一个终端,执行adb forward tcp:23946 tcp:23946转发端口
# 再开一个终端,进行端口转发
adb forward tcp:23946 tcp:23946
# 一些相关命令
# 查看端口
netstat -ano | findstr "5037"
# 杀死进程
taskkill -f -pid 8377
adb kill-server
#在关闭adb服务后,要使用如下的命令启动adb服务。
adb start-server
注意要调试的.so文件的架构要与ida进行远程调试文件的架构要匹配
模拟器里打开要调试的app,ida
里下好断点,然后附加进程
找到要附加的程序,双击
选same
成功断下,变量的值、调用堆栈都能看到
over
参考资料
Apk_动态调试方案 - Only-xiaoxiao - 博客园↗(主)
JEB动态调试Smali-真机/模拟器(详细,新手必看) - 吾爱破解 - 52pojie.cn↗
Android 「动态分析」IDA 调试 so - 吾爱破解 - 52pojie.cn↗