您现在的位置是:网站首页>文章详情文章详情

安卓逆向概述

inlike2019-07-21 原创文章 浏览(2034) 评论(0) 喜欢(84)

简介安卓逆向将作为一个专题在后面陆续分享;形成一个完整体系,从基础到进阶及实战;如果想在安卓逆向上有所成就那么一定是往安全方面发展,也偏离了爬虫,安全工程师和逆向工程师是主要的方向;因此后面的分享尽量阐述逆向中的精髓,尽量往专业方面前进。

安卓逆向将作为一个专题在后面陆续分享;形成一个完整体系,从基础到进阶及实战;如果想在安卓逆向上有所成就那么一定是往安全方面发展,也偏离了爬虫,安全工程师和逆向工程师是主要的方向;因此后面的分享尽量阐述逆向中的精髓,尽量往专业方面前进。

本篇将涉及:环境工具、apk文件结构、apk打包流程、apk安装及卸载、编译与回编译;将阐述相关概念,及其基本框架。

安卓逆向环境工具

  1. JDK(java编译器)、SDK、NDK(提供java代码到C/C++的原生支持)

  2. Android Studio

  3. AndroidKiller(apk反汇编工具)、Jeb、Jadx、GDA、Android逆向助手

  4. apk签名工具


apk文件结构

本质上apk文件也是压缩格式,和zip类似的,也可以被解压,解压后的文件目录如图:

image.png

(支付宝app解压后目录结构)

其中相关文件及作用:

AndroidManifest.xml: 是配置文件,包含系统注册的服务,版本号,包名,申请的权限、所有人等信息。

assets :资源目录,不被编译。

classes.dex:  项目工程代码、lib库编译后得到,是可执行文件(逆向的重要文件)

lib目录:这个是所有支持的so库,加载的c层库。

META-INF签名验证文件,对apk内的目录文件进行的信息摘要,以提供本地的签名验证或网络验证。

res各种图片资源字符串等资源目录,类似网站的static目录,其下常用目录如下

    drawable:图片资源

    layout:布局文件

    menu:菜单文件

resources.arsc 经过编译后的资源文件是二进制文件。


APK打包流程

  1. 打包资源,将res、assets、AndroidManifest.xml、lib等生成R.java、resource.ap_文件

  2. 处理AIDL(Android接口定义语言)文件生成对应的.java

  3. 编译java文件,生成对应的.class文件

  4. 把.class文件转为Davik、VM等虚拟机支持的.dex文件.java->.class->.dex

  5. 打包生成未签名的.apk文件

  6. 签名.apk文件

  7. 对齐签名后的.apk文件

    流程图如下:


apk的安装及卸载过程

apk可以通过系统程序安装、应用市场安装、ADB安装、手机自带安装;其安装过程是:

  1. 复制apk安装包/data/app目录

  2. 解压缩并扫描安装包

  3. 把dex文件(Dalvik字节码文件)保存到/data/dalvik-cache目录(虚拟执行机目录)

  4. 在/data/data/下创建对应的应用数据目录

安装后app将涉及下面几个目录:

/system/app:系统应用目录,需要root权限才能删除

/data/app:用户应用程序安装目录,安装时把apk复制到这个文件夹

/data/data:apk应用数据目录

/data/dalvi-cache:存放apk中的.dex文件

apk卸载过程:

卸载过程就是把上面创建的文件夹删除。

image.png

编译与回编译

  1. 首先查壳,有壳的apk先脱壳,需要脱壳机。

  2. 使用apktools工具将.dex文件反编译成.smali文件;.dex文件是虚拟机可执行文件,.smali是.dex的反汇编,是对 Dalvik 虚拟机字节码的一种解释,Smali被广泛地用于 APP 广告注入、汉化和破解,ROM 定制等方面。

  3. 将.smali翻译成java语言,其实.smali文件已经有一定的语法格式和可读性。

  4. 必须时还需要对so文件分析,SO文件是Linux下共享库文件,它的文件格式被称为ELF文件格式,是C/C++在Linux平台上的动态链接库文件。

后面将对逆向的过程和涉及的技术进行具体总结。

image.png


很赞哦! ( 84)
    《Python实战进阶》
    None
    None
    夏至已深

站点信息

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