0x01 adb连接mumu模拟器

不知道为什么我去官方下的adb总是连接不上设备,搜索后发现mumu模拟器之类的模拟器都有自带adb程序,于是直接在mumu模拟器的文件下面打开cmd终端,然后adb 直接连接

1
adb connect 172.0.0.1:16384

16384是我的mumu模拟器的端口,这个端口可以通过下图方式查询

image-20240418210719876

连接成功后出现下面提示

image-20240418210805830

0x02 ctf下的apk调试

这里是为了做一道xyctf 的题目,题目提示说,只要开启了debug,就能得到flag。

首先,安卓设备要开启开发者模式的调试功能,被调试的app在manifest文件里开启debuggable = “ture”

image-20240418211148430

这里我用jadx反编译后,在这个application下手动添加一个android:debuggable = “true”,这里我已经事先添加过了,还是带着看一遍如何添加。

jadx里没法修改反编译后的文件,我们将文件安装到mumu模拟器,然后在商店下载一个MT文件管理器。

打开后点击左上角三横线找到安装包提取

image-20240418211715347

然后点击这个路径直接找到apk文件,点击apk->查看->AndroidManifest.xml,反编译模式打开,然后在如上图的application选项下,把调试选项手打进去

1
android:debuggable="true"

改好后关闭文件,如果出现权限不够的报错,试着把apk文件移动到其他文件夹(跟着报错的提示走就好了)

image-20240418212300637

最后记得把修改后的apk文件覆盖掉电脑上原来的那个apk文件,我通过mumu 的共享文件夹可以把模拟器里面修改后的apk移动到电脑上。

0x03 终端jeb调试

1
abd shell am start -D -n 包名/需要调试的进程名

在终端输入上述命令可以启动调试,然后模拟器上就会waiting for debugger,这时候在windows上用jeb打开apk,然后在mainactivity里面调试(这个方法是朋友试的)

0x04 jadx直接启动调试

jadx调试时看不到正在指向的调试的指令(我也不知道为什么,等大神解答),但是能很方便的启动调试程序,直接在mumu模拟器打开app,然后jadx直接启动调试

image-20240418213045141

双击红色框里面的app 的包名就能启动调试了,这时候在模拟器的app里就能检测到调试爆出flag。