Topic:开启移动安全之路
在CTF逆向中,谈到移动安全,径直指向了安卓逆向。
一、安卓开发
清楚安卓开发的内容是为了清楚在把apk文件反编译后,能够了解资源、代码等的分布。
1.SDK开发
使用java进行开发。
首先需要介绍两个重要类型的文件:
AndroidManifest.xml文件也被称为安卓清单文件,其中包含了包名的信息、权限的声明、代码入口等信息。
安卓Java层控制代码,编译产生dex文件,逆向后产生为smali文件夹,存放的是逆向产生的java代码。
当对apk包进行解压时,会产生诸多的文件。
- assets文件夹为数据文件,用于存放数据库等重要数据文件;
- lib文件夹存放so文件;
- META-INF存放签名文件;
- res和resources.arsc存放资源文件;
- AndroidManifest.xml文件即为清单文件;
- classes.dex就是java编译产生的文件。
2.NDK开发
为了保护代码,增加逆向难度。
使用C编程,Java调用。
二、工具和考点
1.反汇编工具
AndroidKiller
APKIDE
2.逆向分析工具
IDA
3.16进制编辑器
4.安卓手机/模拟器
考点:
初级:
资源、备份文件
java语言代码逆向分析
中级:
C语言代码逆向分析
动态调试
高级:
脱壳
ollvm混淆