0x00前言
对于安卓题目的操作,网上对于此类的教程也不太详细,这里我们以jarvisoj-Findpass为例子介绍如何动态调试apk出flag,首先我们需要Android studio + smailidea + apktool box + jeb四样东西,smailidea是Android studio的一个插件,能够对smail文件操作从而动态调试apk,可以从https://bitbucket.org/JesusFreke/smali/downloads/下载
首先我们拿到apk,第一时间是打开模拟器安装,大概知道apk有什么功能(这里我用的逍遥安卓模拟器),
大概就是输入key然后验证key的过程,然后我们在正式开始动态调试需要配置我们的环境
0x01步骤
1.
到虚拟机的目录下找一个adb.exe的程序,
命令行模式下输入
adb.exe devices
就会返回你模拟器所在的端口
2.
打开Android studio然后安装smalidea-0.05插件,点击File->Settings->plugins->instal plugins from disk,选择下载的zip包就行,不要解压。安装完成后,AS提示重启生效,重启即可
3.
然后我们进入到Android sdk的目录==>platform tools,可以看到又有一个adb.exe
进入命令行,输入
adb.exe connect 127.0.0.1:21503 (跟第二步中获取到的模拟器的端口)
可以看到sdk现在已经连接到模拟器的端口了
4.然后我们需要获取到app的包名和Activity名,这里我们可以利用Android sdk/build-tools里的aapt.exe工具
进入到Android sdk/build-tools目录,启动命令行
aapt dump badging FindPass_200.apk(<apk文件路径>)
这里的apk包名和Activity名分别是 com.example.findpass 和 com.example.findpass.MainActivity
5.然后我们反编译我们的apk文件,这里用到的是apktool box工具,
用Android studio导入反编译后的文件,然后
设置为可以调试的
接下来再配置我们的debug键
6.
然后我们再Android studio的命令行下打命令
adb shell am start -D -n apk包名/.MainActivity
成功以后,模拟器会出现这样,等待我们debug
然后我们要看模拟器中启动app的进程号
adb shell ps
可以看到我们app的进程号是3269
接下来要让我们Android studio设置的remote端口连接到app的这个端口
adb forward tcp:8700 jdwp:3269
7.
接下来,我们随便设置一个断点,然后debug程序
在app下任意输入点确定
这题我们单步步过慢慢调试
最后发现flag