首页 > 编程知识 正文

android依赖库混淆,android混淆规则

时间:2023-05-04 14:24:42 阅读:111578 作者:4831

前言

在开始之前,让我们来看看一些概念:

混淆

概念:

混淆是指重新组织和处理已发布的程序,使处理后的代码与处理前的代码发挥相同的功能。 另外,混淆代码很难反编译,反编译成功也很难体现出程序的真正含义。

混淆特征:

混淆程序代码保持原始文件格式和指令集,执行结果也与混淆前相同;

混淆器只需将代码中所有变量、函数和类的名称更改为短英文字母符号。

如果没有合适的函数名称和程序注释,即使反编译也很难阅读。

混淆是不可逆的;

一些在混乱过程中不影响正常运行的信息会永久丢失,这些信息丢失会使程序更难理解。

不混淆的危害

公开的商用APP一般是混淆的,如果不混淆公开,如果已经反编译就可以看到我们的源代码信息,给APP的安全带来隐患,带来不可估量的损失; 这里的混淆是Proguard技术

混淆的作用

混淆工具的作用不仅是保护代码,而且是减小编译后的程序大小。 由于上述变量和函数名称的缩短以及部分信息丢失的原因,编译后的jar文件的体积减少了约25%,这对于当前成本较高的无线网络传输具有重要意义。

何谓ProGuard

ProGuard工具用于压缩、优化、混淆和印前检查我们的代码,可以从代码中删除不需要的类、字段、方法和属性,以减小打包的APP的大小同时,将其混淆命名,可以降低代码的可读性,保障APP的安全性

计划技术的功能压缩(Shink ) ) ) )。

用于检测和删除未使用的类、字段、方法和熟练程度。

优化(Optimeze )

优化字节码,删除不必要的指令

混淆(Obfuscate ) )。

要重命名类、字段和方法,请使用无意义的名称,如a、b和c。

预检查)。

主要在java平台上预检测处理后的代码。

编程原理

引入入口点概念,以了解ProGuard的工作原理

入口点:proguard不处理的类、属性和方法

流程分析:

在ProGuard压缩过程中,从EntryPoint中搜索这些类及其成员正在使用的内容

如果使用,则是在检测到标记为EntryPoint的类和方法时,通常设置为不会混淆的类和方法

一些未使用的类和成员在压缩阶段被ProGuard销毁。 因此,如果进一步优化,不是入口点的将设置为私有,下一步将被删除

最后,Proguard重命名非入口点类,以保证和测试阶段代码的稳定性

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。