android 组件化实现,享学 androidVIP 课种子
今天本文主要讲解:
APK 文件反编译
什么是反编译
如何防止反编译
APK 文件的基本构造
APK 加固的方案原理
APK 加固总体架构
APK 打包基本流程
Dex 文件的意义
AES 加密项目实战
APK 加固项目实战
APK 脱壳技术实战

一.APK 文件反编译
1.什么是反编译
定义:利用编译程序从源语言编写的源程序产生目标程序的过程
2.怎么进行反编译?
先了解 apk 的文件构造结构


二.加固方案思想
一个程序员的故事:
辛辛苦苦找到一个对象,结婚后发现是个母夜叉。不给管钱就闹,晚上睡觉她趴着睡,导致这程序员无法去洗脚了。然而这个程序员很努力,平时除了上班,还能够做点外包,赚点外快。所以他就想到了把工资卡上交,而把赚到的外快放到了自己的小金库。从此过上了性福生活
一个加密的故事:
通过将非核心的 dex 文件进行暴露来达到保护核心 dex 文件的目的。

三.基本原理
3.1Apk 打包流程
加壳是在原来 apk 的基础上加一层保护壳,dex 文件修改了就需要重新打包,否则 apk 安装不了。这就需要我们详细学习 apk 如何打包的
3.2Dex 文件是什么
加固的目的是保护 dex,直接而言就是对 dex 文件进行操作,对 dex 文件动刀子,必须知道 dex 文件是什么,能否直接动刀子
3.3Dex 文件加载流程
加壳后的文件是不能直接用的,dex 文件是加密的,所以我们需要对他进行解密,解密后的 dex 文件如何加载?
3.4APK 文件是怎么生产的


四.加固总体框架

那么问题来了:
如何达到加密效果?
为什么是两个系列的 dex?
壳 dex 怎么来的
壳 dex 如何保护源 dex?
如何签名?
如何运行新 dex(如何脱壳)?
4.1 加密过程

4.2APK 文件如何签名


4.3APK 文件如何运行(脱壳)

4.4 如何制定某些类在 main dex 中
multiDexKeepFile
:手动加入要放到 Main.dex 中的类
multiDexKeepProguard
:以 Proguard 的方式手动加入要放到的 Main.dex 中的类
文末
我总结了一些 Android 核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。
以后的路也希望我们能一起走下去。(谢谢大家一直以来的支持)
部分资料一览:
330 页 PDF Android 学习核心笔记(内含 8 大板块)


Android 学习的系统对应视频
Android 进阶的系统对应学习资料

Android BAT 大厂面试题(有解析)

评论