爬虫扩展 - 安卓逆向,反编译

安卓逆向环境工具

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

  2. Android Studio

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

  4. 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打包流程

  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卸载过程:

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

 

编译与回编译

  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值