前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >周末福利 | 关于CTF中安卓题的快速做法

周末福利 | 关于CTF中安卓题的快速做法

作者头像
安恒网络空间安全讲武堂
发布2018-02-06 14:25:41
1.9K0
发布2018-02-06 14:25:41
举报

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 恒星EDU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档