CTF-android-apk入门浅析

随着信息安全的火热,CTF比赛也随之越来越多,各式各样的题目层出不穷,烧脑费神,所以对android客户端的分析进行了简单的入门级分析,文中以工具介绍为主,如果想研究的更加深入,研究代码吧。

0x01 android文件结构理解

android
 META-INF目录:签名信息,用来保证APK包的完整性和系统的安全性
 res目录:应用程序的各种资源文件,图片资源、颜色资源、菜单资源、字符串资源、风格资源,运行时被代码获取并使用
 AndroidManifest.xml文件:应用程序的名字、版本、权限、引用的库
 class.dex文件:java源代码编译后生成的Java字节码文件的变种形式
 resources.arsc文件:编译后生成的二进制资源文件
 lib目录:子目录armeabi存放的是一些so文件
 assets目录:存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得

0x02 CTF,apk分析工具使用

apk程序分析
工具:7zip、dex2jar、jd-gui、IDA pro、ApkIDE、AndroidKiller

Apk反编译得到Java源代码

将要反编译的APK解压,得到其中的classes.dex文件,将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内,在命令行下定位到dex2jar.bat所在目录,输入dex2jar.bat classes.dex,效果如下:(dex2jar-2.0执行方式不同,但是殊途同归)
android1
在该目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了,效果如下:
android2
针对上图源码,可以进行搜索分析,例如(flag、@、key、passwd等等)获取flag。或者进行算法分析,获取flag。最重要的还是代码阅读和分析能力。

Apk反编译得到smali代码

使用集成化的工具,反编译得到smali代码
android3
进行工程搜索,或者直接查看smali代码,获取flag。
android4

IDA反编译分析

android5
view查看strings字符串,进行直接查看或者搜索flag。
android6

0x03 参考

CTF题型较多,还需要有代码编写能力,针对相应的函数或者算法进行逆推,获取flag。这里提供一些参考链接,可供研究:https://github.com/ctfs