Android Studio动态调试Smail

首发:Android Studio动态调试Smail

0x00 前言

DDCTF安卓题调试
上一次是静态修改,后来我在想能不能动态调试得到Flag,于是就有了这篇文章。

apk下载地址
http://download.csdn.net/detail/dad9988/9887419

0x01 准备工作

下载、安装android studio

https://dl.google.com/dl/android/studio/install/2.3.2.0/android-studio-bundle-162.3934792-windows.exe

非常神奇,可以不翻(河蟹)墙下载,看来G(河蟹)F(河蟹)W对程序员还是很友善的。
android studio集成了所需要的东西,以前eclipse需要另外装各种东西方便很多。

IDM下载中...

next

如果C盘空间不够可以修改下盘符

Setup Load...

sdk包安装

下载、安装模拟器

推荐使用这款模拟器
https://www.yeshen.com/

模拟器安装就不赘述了。

改之理

很多apk解包使用apktools.jar会出现各种问题,直接用ide会方便很多。

下载地址:
http://www.52pojie.cn/thread-399571-1-1.html

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 调试

DDCTF安卓题调试

上一篇文章分析得出关键位置在MainActivity中的onClickTest函数,这次我们直接在这里下断点,动态调试。

模拟器随便输入,点击test按钮,就会断在我们下的地方

Paste_Image.png

点击如图加号添加v0 ,v1,p0监视变量,并F8单步向下,走到58行,就会从so中返回flag到系统apk的v1变量中。

对比下反编译的源码,更容易分析apk的工作流程。

0x04 总结

对于这个CTF的apk,动态调试会更加直观,下好断点,添加监视变量直接但步向下即可,比静态修改重新打包来的方便。

转载请注明出处。