您现在的位置是:网站首页>文章详情文章详情
安卓逆向概述
inlike2019-07-21【
原创文章
】
浏览(2034)
评论(0)
喜欢(84)
简介安卓逆向将作为一个专题在后面陆续分享;形成一个完整体系,从基础到进阶及实战;如果想在安卓逆向上有所成就那么一定是往安全方面发展,也偏离了爬虫,安全工程师和逆向工程师是主要的方向;因此后面的分享尽量阐述逆向中的精髓,尽量往专业方面前进。
安卓逆向将作为一个专题在后面陆续分享;形成一个完整体系,从基础到进阶及实战;如果想在安卓逆向上有所成就那么一定是往安全方面发展,也偏离了爬虫,安全工程师和逆向工程师是主要的方向;因此后面的分享尽量阐述逆向中的精髓,尽量往专业方面前进。
本篇将涉及:环境工具、apk文件结构、apk打包流程、apk安装及卸载、编译与回编译;将阐述相关概念,及其基本框架。
安卓逆向环境工具
JDK(java编译器)、SDK、NDK(提供java代码到C/C++的原生支持)
Android Studio
AndroidKiller(apk反汇编工具)、Jeb、Jadx、GDA、Android逆向助手
apk签名工具
apk文件结构
本质上apk文件也是压缩格式,和zip类似的,也可以被解压,解压后的文件目录如图:
(支付宝app解压后目录结构)
其中相关文件及作用:
AndroidManifest.xml: 是配置文件,包含系统注册的服务,版本号,包名,申请的权限、所有人等信息。
assets :资源目录,不被编译。
classes.dex: 项目工程代码、lib库编译后得到,是可执行文件(逆向的重要文件)
lib目录:这个是所有支持的so库,加载的c层库。
META-INF:签名验证文件,对apk内的目录文件进行的信息摘要,以提供本地的签名验证或网络验证。
res:各种图片资源字符串等资源目录,类似网站的static目录,其下常用目录如下
drawable:图片资源
layout:布局文件
menu:菜单文件
resources.arsc: 经过编译后的资源文件是二进制文件。
APK打包流程
打包资源,将res、assets、AndroidManifest.xml、lib等生成R.java、resource.ap_文件
处理AIDL(Android接口定义语言)文件生成对应的.java
编译java文件,生成对应的.class文件
把.class文件转为Davik、VM等虚拟机支持的.dex文件.java->.class->.dex
打包生成未签名的.apk文件
签名.apk文件
对齐签名后的.apk文件
流程图如下:
apk的安装及卸载过程
apk可以通过系统程序安装、应用市场安装、ADB安装、手机自带安装;其安装过程是:
复制apk安装包/data/app目录
解压缩并扫描安装包
把dex文件(Dalvik字节码文件)保存到/data/dalvik-cache目录(虚拟执行机目录)
在/data/data/下创建对应的应用数据目录
安装后app将涉及下面几个目录:
/system/app:系统应用目录,需要root权限才能删除
/data/app:用户应用程序安装目录,安装时把apk复制到这个文件夹
/data/data:apk应用数据目录
/data/dalvi-cache:存放apk中的.dex文件
apk卸载过程:
卸载过程就是把上面创建的文件夹删除。
编译与回编译
首先查壳,有壳的apk先脱壳,需要脱壳机。
使用apktools工具将.dex文件反编译成.smali文件;.dex文件是虚拟机可执行文件,.smali是.dex的反汇编,是对 Dalvik 虚拟机字节码的一种解释,Smali被广泛地用于 APP 广告注入、汉化和破解,ROM 定制等方面。
将.smali翻译成java语言,其实.smali文件已经有一定的语法格式和可读性。
必须时还需要对so文件分析,SO文件是Linux下共享库文件,它的文件格式被称为ELF文件格式,是C/C++在Linux平台上的动态链接库文件。
后面将对逆向的过程和涉及的技术进行具体总结。
相关文章
本栏推荐

标签云
猜你喜欢
站点信息
- 建站时间:2019-5-24
- 网站程序:like in love
- 主题模板:《今夕何夕》
- 文章统计:104条
- 文章评论:***条
- 微信公众号:扫描二维码,关注我们
