6.FileIO项目实战——dex文件改造

(加密相关 还有很多不了解的知识 暂且放一下)

加固总体框架 :
加固总体框架.png
根据这个框架需要进行学习的内容:
(1)加固的目的是保护dex,直接而言就是对dex文件进行操作,对dex文件动刀子,必须知道dex文件是什么,能否直接动刀子。
什么是源dex?什么是壳dex?
(2)加壳是在原来apk的基础上加一层保护壳,dex文件修改了就需要重新打包,否则apk安装不了。
这就需要我们详细学习apk如何打包的。
(3)加壳后的文件是不能直接用的,dex文件是加密的,所以我们需要对他进行解密,解密后的dex文件如何加载?

加固手段:

  1. 反模拟器:
  • 模拟器运行apk,可以用模拟器监控到apk的各种行为,所以在实际的加固apk运行中,一旦发现模拟器在运行该APK, 就停止核心代码的运行。
  1. 代码虚拟化:
  • 在桌面平台应用保护中已经是非常的常见了,主要的思路是自建一个虚拟执行引擎,然后把原生的可执行代码转换成自定义的
    指令进行虚拟执行。
  1. 加密:
  • 样本的部分可执行代码是以压缩或者加密的形
    式存在的,比如,被保护过的代码被切割成多个小段,前面的一段代码先把后面的代码片段在内存中解密,然后再去执行解密之后的代码,如此一块块的迭代执行。

基本原理

(1)Dex文件是什么?

Dex文件的结构 (基本构造)
Dex文件的结构.png

(2)APK 打包流程

面试题:
阿里面试题:APK打包流程
APK整体的打包流程.png

具体说来:

  1. 通过AAPT工具进行资源文件(包括AndroidManifest.xml、布局文件、各种xml资源等)的打包,生成R.java文件。
  2. 通过AIDL工具处理AIDL文件,生成相应的Java文件。
  3. 通过Javac工具编译项目源码,生成Class文件。
  4. 通过DX工具将所有的Class文件转换成DEX文件,该过程主要完成Java字节码转换成Dalvik字节码,压缩常量池以及清除冗余信息等工作。
  5. 通过ApkBuilder工具将资源文件、DEX文件打包生成APK文件。
  6. 利用KeyStore对生成的APK文件进行签名。
  7. 如果是正式版的APK,还会利用ZipAlign工具进行对齐处理,对齐的过程就是将APK文件中所有的资源文件距离文件的起始距离都偏移4字节的整数倍,这样通过内存映射访问APK文件的速度会更快。

注意:
AAPT是Android的资源打包工具
aidl跟binder有关

(3)Dex文件加载流程

加密过程

要保护APK的dex文件
首先要解压缩得到这个文件

应用Stream对APK中的dex文件进行加密:
第一步 出路原始APK 加密dex

  • APK进行unzip解压缩
  • 过滤文件 找到所有dex文件
    第二步 处理aar 获得壳dex
    第三步 打包签名

6

dex文件可以随便拼凑吗?
壳dex怎么来的?
如何签名?

如何运行新apk(如何脱壳)?


Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 Annie
  • Visitors: | Views:

嘿嘿 请我吃小蛋糕吧~

支付宝
微信