admin 管理员组

文章数量: 886992

哔哩哔哩:https://www.bilibili/video/BV1UE411A7rW?p=1

Android 逆向工程师系统培训‹第九期›( 课程目录 ):https://ke.yijincc/course-21.htm

安卓逆向工程师:https://ke.yijincc/profession/1.htm

打造年轻人的第一套安卓逆向环境!

原味镜像介绍文章:https://mp.weixin.qq/s/gBdcaAx8EInRXPUGeJ5ljQ
原味镜像介绍视频:https://www.bilibili/video/BV1qQ4y1R7wW/
下载地址:
谷歌盘:https://drive.google/drive/folders/1AdZ1x5G9CcJGXiLqGL9mhDJWlRz8KZl_?usp=sharing
GoFile:https://gofile.io/d/GeqM2O
百度盘:链接:https://pan.baidu/s/1anvG0Ol_qICt8u7q5_eQJw 提取码:3x2a
阿里盘:http://49.235.84.125:8080/r0env
登录时用户名:root 密码:toor

1. 逆向环境配置

1. java 开发环境:java jdk、java jre

        java jdk 最好安装 jdk8 的最新版本,如果安装更高的 java 版本,一些逆向工具可能使用不了。

        安装 java jdk8 的时候会自动弹出 对应 jre 的安装。

2. 安卓开发环境:安卓 sdk、ndk

        安卓 sdk 和 ndk 下载完成后,直接解压,然后配置环境变量即可。。。
        也可以通过 android studio 进行 sdk 和 ndk 的安装

        通过 Android studio下载的 sdk 中没有 tools 文件夹的解决办法:https://blog.csdn/General_Ma/article/details/104707265/

        sdk 主要配置两个目录:tools、platform_tools

        ndk 的安装:官网下载 ( https://developer.android.google/ndk/ )  ndk 进行安装

2. APK 文件结构

APK 是 Android PacKage 的缩写,即 Android 安装包。apk 文件也就是 Android 打包流程的产物。那么 apk 是一个什么类型的文件?它包含了一些什么内容? 弄清楚了这些,我们就可以带着目的性,去分析打包流程,可以更好的关注 apk 文件中的这些内容是在打包流程的哪个过程中产生,以及是如何产生的。

众所周知,apk 文件本质上其实是一个 zip 格式的压缩包。想要知道其中包含了什么,改后缀然后用解压缩工具即可打开任何一个APK文件。 如果有 代码混淆加密,通过普通解压缩工具打开里面的文件或目录会看到各种乱码

apk 概览

  • assets (程序资源目录)
  • META-INF(签名证书目录)
  • res(界面布局/图片资源目录)
  • AndroidManifest.xml(APK属性/权限/组件声明)
  • classes.dex(Android 虚拟机可执行字节码)
  • resources.arsc(字符串/资源索引文件)

图示:

这里解压了某个未经过 加固加壳 或者 其他手段加密的 Android 安装包文件,以下为结果截图:

https://www.sohu/a/149758866_675634

主要注意红色标注部分,这一些文件和文件夹是一个 Android 应用基本都具备的。而其他的一些文件和文件夹则是一些第三方库,或者是其他一些代码生成的。 接下来,依次大概介绍一下这些文件和文件夹的作用。

  • AndroidManifest.xml:这是 Android 应用的全局配置文件,它包含了这个应用的很多配置信息,例如包名、版本号、所需权限、注册的服务等。可以根据这个文件在相当程度上了解这个应用的一些信息。该文件目前状态是被编译为二进制的 XML 文件,可以通过一些工具(如 apktool)反编译后进行查看。Analyze apk 是一个很不错的 apk 分析(~~hack 入门~~)工具。我们可以通过它直接反编译看到原始的 AndroidManifest.xml 文件。

  • assets 文件夹:assets 文件夹用于保存需要保持原始文件的资源文件夹,开发过程中拖了什么到里面,打包完之后里面还是什么。一般用于存放音频,网页(帮助页面之类的),字体等文件。主要需要知道的点是,它与 res 文件夹的区分以及如何在应用中访问该文件夹的资源,如它可以有多级目录而 res 则只有两级。

  • dex 文件:classes.dex 文件是 Android 系统运行于 Dalvik Virtual Machine 上的可执行文件,也是Android 应用程序的核心所在。项目工程中的 Java 源码通过 javac 生成 class 文件,再通过 dx 工具转换为 classes.dex,注意到我们这里有 classes2.dex 和 classes3.dex。这是方法数超过一个 dex 的上限,分 dex 的结果。分 dex 在 Android 5.0 之前需要开发者自行完成,5.0 后 dx 自带支持。dex 文件的数据结构不算复杂,如下图所示。目前一些热补丁有关的技术,主要便是对 dex 做各种处理。

  • lib 文件夹:该目录存放着应用需要的 native 库文件。比如一些底层实现的图片处理、音视频处理、数据加密的库以 so 库的形式在该文件夹中。而该文件夹下有时会多一个层级,这是根据不同CPU 型号而划分的,如 ARM,ARM-v7a,x86等。

  • META-INF 文件夹:该目录的主要作用是用于保证 APK 的完整性以及安全性。该文件夹下,主要有三个文件。MANIFEST.MF:这个文件保存了 整个apk文件所有文件的文件名 + SHA-

本文标签: 流程 结构 环境 文件 apk