环境准备
-
安装夜神安卓模拟器
-
配置好adb【Android 调试桥】环境(这里需要使用官方的adb环境,设置好环境变量)Android 调试桥 (adb) | Android 开发者 | Android Developers (google.cn)
-
置换夜神模拟器路径下的adb.exe,使环境版本适配。【这一步尽量也配置好】
如图使用官方版本的adb.exe和两个.dll文件 ,覆盖【替换】夜神模拟器目录下的相同文件!同时将nox_adb.exe 也换成官方版本的adb.exe文件,但是命名必须还是nox_adb.exe。
ida .so动调
使用模拟器
adb devices # 查看端口 adb.exe connect 127.0.0.1:62001 adb push F:CTF_ctf_toolRe_toolida_proIDA_7.7_chinesedbgsrvandroid_x86_server /data/local/tmp (IDA的dbgsrv目录下有很多版本,我尝试了这个版本出错,发现还有一个版本叫android_x86_server,可以成功运行) /data/local/tmp/android_server(这个目录其实可以随便放,有的反调试会检测) adb shell cd /data/local/tmp chmod 777 android_x86_server ./android_x86_server # 再开一个终端,进行端口转发 adb forward tcp:23946 tcp:23946 # 一些相关命令 # 查看端口 netstat -ano | findstr "5037" # 杀死进程 taskkill -f -pid 8377 adb kill-server 在关闭adb服务后,要使用如下的命令启动adb服务。 adb start-server
注意:这里.so文件的架构类型,要与ida进行远程调试的文件适配。
做好准备工作后,ida 加载.so文件,并设置好断点。然后用模拟器将要调试的apk程序运行起来,接下来使用ida 附加apk程序,开始动态调试。
完成.so文件的动态调试!
jeb 动调
使用模拟器
使用安卓修改器,在AndroidManifest.xml里修改或添加可调试权限
android:debuggable="true" # AndroidKiller 等工具完成
入口调试【模拟器要处于开发者模式,并且打开USB调试】
# 安装调试应用 adb install app-release.apk nox_adb devices # 查看端口 nox_adb.exe connect 127.0.0.1:62001 adb shell # am start -n 包(package)名/包名.活动(activity)名称 am start -n com.new_star_ctf.u_naive/com.new_star_ctf.u_naive.MainActivity # 启动命令 adb shell am start -d -n com.new_star_ctf.u_naive/com.new_star_ctf.u_naive.MainActivity
模拟器运行后附加:
or
上面的步骤也可以略过!直接模拟器启动apk程序,然后附加。
使用真机
把xxx.apk(待动调程序)安装到安卓手机上,安装后打开APP。
【同样需要使用开发者模式,并打开USB调试,还有手机要是root权限】
(非root 权限似乎也能调,自行尝试)
提示: 手机里面打开设置,对着安卓版本狂点几次,即可打开“开发者模式”, 然后在开发者模式里面打开“USB调试”。
然后使用数据线把手机和电脑连接起来,当弹出“是否允许电脑调试手机”之类的提示时选择允许。
最后手机打开xxx.apk,并使用JEB开始调试。
jadx 动调
使用模拟器
要动调的xxx.apk程序,在模拟器中运行起来。
jadx直接动态调试即可。
然后双击apk程序。
成功动态调试!!!
使用真机
jadx的真机调试和jeb的真机调试做相同的前置准备即可完成!
其余步骤与用模拟器相同。