Skip to content

Latest commit

 

History

History
53 lines (12 loc) · 1.98 KB

动态加载概括.md

File metadata and controls

53 lines (12 loc) · 1.98 KB

动态加载概括

什么是动态加载

我们之前的 app 的运行的逻辑是,编写 Java 代码,然后编译,点击图标,他会自动的执行 apk 当中的 DEX 的文件,但是如果他能够通过一种技术,使用一开始不存在的 DEX 文件,那么这个就是动态加载(这个是我们现在常说的动态加载)

为什么要动态加载

为什么要大费周章,你一开始就写进去你想要执行的代码不就好了??

  1. 热修复:我们总是希望,我们的用户能够用最新的版本的软件,但是让用户更新软件是一个非常麻烦的事情,你想想即便是现在,还有多少的官方的电脑,私人的电脑还在运行,WindowsXP 你就知道,更新一个东西对于用户来说,如无必要,不会更新。那么热修复就能够通过动态记载的方式,修复 bug 或者是,应对监管实时调整自己的代码的内容,或者是在节假日的时候,通过服务器下发一个,DEX,或者是执行早就藏好的 DEX ,文件,能够让用户在节假日的时候准时收到更新之后的内容,当然你也可以用这样的方式,逃避监管,因为是动态加载,绕过了上架商城的代码审核的阶段,你下发的底阿妈到底是
  2. 加固:在早期的一些加固方案当中就是通过,动态加载的方式,将真正的代码藏在一个文件下面,然后加密,然后本体的 apk 只是一个无情的动态加载的机器,这样,即便是,拿到了 apk 文件,也只能够看得到加载器的内容,看不到,真正的代码的内容。(但是这个方式早已过时,无论你把 DEX 文件加载在哪个文件夹下面,最后在执行的时候,都是明文执行在内存当中,我们只需要 dump 内存当中改的内容,就能够得到,完整的代码)

注意:

2020 年起,Google play 商城已经全面禁止动态加载

类加载器ClassLoader