0x00 前言
DDCTF安卓题调试
上一次是静态修改,后来我在想能不能动态调试得到Flag,于是就有了这篇文章。
0x01 准备工作
下载、安装android studio
非常神奇,可以不翻(河蟹)墙下载,看来G(河蟹)F(河蟹)W对程序员还是很友善的。
android studio集成了所需要的东西,以前eclipse需要另外装各种东西方便很多。
下载、安装模拟器
推荐使用这款模拟器
https://www.yeshen.com/
模拟器安装就不赘述了。
改之理
很多apk解包使用apktools.jar会出现各种问题,直接用ide会方便很多。
0x02 实战操作
解包与导入工程到Android Studio
首先使用apk改之理解包,直接用改之理打开apk包即可,改之理目录下就会有解包后的文件。
work目录下是解包后的文件
打开Android Studio选Import project
选择刚才的解包目录
直接next到底
导入后会有一段时间的加载文件。
安装smalidea
File--->Settings--->Install plugin from disk
下载smalidea-0.05.zip(这一步只需要做一次)
https://bitbucket.org/JesusFreke/smali/downloads/
选择刚下载的smalidea-0.05.zip
导入需要重启一下。
寻找命令行启动参数
改之理解包目录下打开AndroidManifest.xml,记录activity层的android:name值。
adb shell启动apk
运行模拟器,在Android Studio中启动android device monitor
一般会自动链接到ADM中,如果没有自动链接上去使用以下命令进行链接。
我推荐的这个模拟器是链接62001其他模拟器自查
adb connect 127.0.0.1:62001
安装apk到模拟器(apk直接拉进去就自动安装了),并使用命令启动apk(adb如果未找到命令,请百度如何解决。)
adb shell am start -D -n com.didictf.hellolibs/com.didictf.hellolibs.MainActivity
运行命令后可通过adm看到有个红色的虫子图标,这个时候apk已经挂起等待调试了。
在MainActivity下的OnCreate函数下断点
点击如图的三角,选择Edit Configurations
点击加号,选择Remote
修改port为8700点击OK
点击调试按钮挂载到模拟器中
已经断在我们下的断点。
0x03 调试
上一篇文章分析得出关键位置在MainActivity中的onClickTest函数,这次我们直接在这里下断点,动态调试。
模拟器随便输入,点击test按钮,就会断在我们下的地方
点击如图加号添加v0 ,v1,p0监视变量,并F8单步向下,走到58行,就会从so中返回flag到系统apk的v1变量中。
对比下反编译的源码,更容易分析apk的工作流程。
0x04 总结
对于这个CTF的apk,动态调试会更加直观,下好断点,添加监视变量直接但步向下即可,比静态修改重新打包来的方便。
转载请注明出处。