写点什么

Android 开发必须要会!享学课堂 Android 架构师 vip

用户头像
极客开源
关注
发布于: 刚刚

今天本文主要讲解:

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 中的类


com.umeng.analytics.Abb.class
复制代码


  • multiDexKeepProguard:以 Proguard 的方式手动加入要放到的 Main.dex 中的类


-keep public class com.tencent.bugly.**{*;}
复制代码

最后

我这里整理了一份完整的学习思维以及 Android 开发知识大全 PDF。



当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。


本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

极客开源

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Android开发必须要会!享学课堂Android架构师vip