首发: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,动态调试会更加直观,下好断点,添加监视变量直接但步向下即可,比静态修改重新打包来的方便。

转载请注明出处。

更多相关文章

  1. Android的配置
  2. Android模拟器连接物理键盘
  3. IDA 调试SO
  4. Android(安卓)使用 MuMu模拟器 进行程序调试
  5. ionic emulate android(打包出现的问题总结)
  6. 跨平台的多线程断点续传下载库
  7. ActionBar的Splite模式
  8. android 地图服务开发 INSTALL_FAILED_MISSING_SHARED_LIBRARY
  9. Android(安卓)Studio学习之基本调试Debug

随机推荐

  1. Mac及Android环境下的JNI学习
  2. IntentService源码分析
  3. ViewPager+Fragment实现TabHost
  4. android之animation(二)animationset、inte
  5. android 存储文件到sdcard下
  6. NoSQL数据库 Java Android(安卓).NET Mon
  7. widget小插件--时间显示
  8. android Intent和菜单的使用
  9. Android之从零开始JNI研发
  10. Android(安卓)Gallery3D源码分析(二)