首页 > 编程知识 正文

android混淆规则,代码混淆原理

时间:2023-05-06 04:42:44 阅读:111588 作者:52

一.混淆含义

对代码进行模糊处理并不是防止代码进行反编译,而是重命名代码中的类、方法和变量等信息,使其成为没有意义的名称,同时删除未使用的类、方法和变量等因此,混淆提高了程序的安全性,提高了逆向工程的难度,同时也有效地减少了apk的体积。 总结如下。

1、重命名项目中的类、方法、变量等信息,使其成为没有意义的短名称。

2、删除未使用的类、方法、变量等。

二.混淆规则和安排

需要在AndroidManifest.xml中注册的所有类的类名和从父类重写的方法名不会自动混淆。 因此,该规则不仅适用于Activity,还适用于服务、BroadcastReceiver和ContentProvider。

(1)已禁用

禁用是true的角色。 启用代码混淆和APK压缩;

minifyEnabled压缩资源,多余的代码在打包时被删除。 minifyEnabled不仅会删除代码,还会删除未调用的资源,从而混淆代码并压缩APK包。

也可以在打开模糊处理后添加shrinkResources。 这意味着打开并删除无效的资源。

)2) shrink资源

shrinkResources为true,则打开删除不需要的资源。

shrinkResources需要知道对于未被参照的文件(实测为drawable,layout,实际上并不是完全删除,而是保持文件名,但没有内容)是否被参照

)3)避免被意外删除

如果要部署minifyenabletrueshrinkresourcestrue以避免意外删除,请将其置于res/raw/keep.xml (避免意外删除)中

对于未引用的文件未在配置文件keep.xml中声明保存的文件,打包后将没有内容,而声明保存的文件将包含内容(资源文件和layout文件)。 注:不会删除未在string.xml中引用的设置。

)4) proguard-android.txt和proguard-rules.pro

proguard-android.txt :表示系统默认值的模糊化规则配置文件。 位于/tools/proguard下。 此配置文件也适用于其他项目,因此通常不要更改。

proguard-rules.pro :代码表中当前项目的模糊处理配置文件。 在app module中,可以通过修改此文件来添加应用于当前项目的模糊化规则。

)5)项目文件夹

混淆代码并生成apk会在项目下添加proguard和proguard文件夹中的四个文件的角色。

dump.txt :描述了apk中所有类文件中的结构。

mapping.txt :显示了原始类、方法、名称和模糊代码之间的映射。

seeds.txt :列出了未混淆的类和方法。

usage.txt :列出了从congapk中删除的代码。

三.编写自己的混淆代码

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