2023-11-09 bigbai
1、这是一篇关于代码保护的文章,旨在介绍代码混淆、防止逆向工程的各种高级技巧。大家都很忙,我也赶着回去继续开发我的新应用,因此话不多说,越干(,一声)越好。开始之前,值得一说的是,本文完全由我开发的「纯纯写作」书写而成,纯纯写作主打安全、写作体验和永不丢失内容,于是本着珍爱生命,我用纯纯写作来写这篇文章。
2、本文有两部分内容,一部分讲混淆,一部分介绍一些混淆之下的安全手段。基准原则都是:在保证不麻烦到自身以及能够正常阅读异常日志的前提下,尽可能提高混淆强度和保护代码安全。官方集成了以供我们进行代码混淆工作,关于你可以搜索到各种它的解释,这些文章千篇一律,因此我不再赘述,只说一些特别的有用的技巧:。
3、一般情况下,的中都会默认写着:。(‘-。’)’。这一行代码很多人不了解。
4、它的意思是,指定了两个文件,一个是通过方法获得官方自带的混淆规则文件路径,另一个是与当前文件相同目录下的文件。后者就在我们项目中,由我们书写的,没什么好说的,我们要关注的是前者这个默认文件,它的内容是什么你有曾探究过吗。
5、没有的话,你可以在你的系统文件里搜索就应该能把它找出来,具体自己去看,我就说一些关键的,这个默认文件中帮我们声明了许多混淆规则内容,包括:所有继承自的类,所有继承自的类,所有、方法声明,以及一些注解了的内容。所以你知道为什么默认情况下,即使你自己一条规则都没有加入,你的自定义和都被保留下来了吧,至少类名都没有被混淆。那么为什么官方默认会帮我们写下这些。为什么和默认情况下应该被保留呢。
1、简单来说,因为原本是为打造的,它无法搜索到我们、布局等文件中引用了哪些类,因此如果代码变了而文件中的引用没变,就会造成反射失败。所以这些被使用到的类需要住。对于这个问题,饿了么的团队提供了一个鲜为人知的插件用来无伤混淆和,这个项目叫:://。//,具体内容各位可以稍后自行去阅读起文档和教程,链接最后都还会附于末尾。
2、简单来说,弥补了不能检索文件的缺点,帮完成了和的改名及。话说回来,前面我建议各位都去逐行了解下默认混淆配置文件,因为只有这样,你才知道整个混淆工具帮你做了什么,了解清楚之后,我建议的一个做法是,把这个默认文件拷贝到你的项目目录之下,删掉,再引入现存于你目录之下的原默认文件。
3、这么做的好处是,方便你修改这个默认文件,因为它有些内容是不必要或者可以更改的。不过基本上我们可以保留其原样。复制过来的另一个好处是,避免其被外方更新导致你引用过来后产生变数。总之,这个配置项,其实是一个方法,可以接受无限个文件路径,它的参数是一个可变字符串参数,不过为了避免代码横向发展,我更愿意使用另一个方法,叫,注意,少了一个有没有,它接受单个参数,相当于一个。
4、对此,提供我的配置以供参考:。其中-。这个文件就是上述我说的复制过来的官方默认配置文件,它被我放在当前目录之下和-这么写很清楚而且便于复用。
5、讲完基本内容之后,我决定再介绍两条特别实用的:。这条规则配置特别强大,它可以把你的代码以及所使用到的各种第三方库代码统统移动到同一个包下,可能有人知道这条配置,但仅仅知道它还不能发挥它最大的作用,默认情况下,你只要在文件中写上这一行代码就可以了,它会把上述的代码文件都移动到根包目录下,即在/包之下,这样当有人反编译了你的,将会在根包之下看到成千上万的类文件并列着,除此之外,由于我们有时不得不一些类文件,于是你应用的包名层次仍然会存在,有一些没被完全混淆的类将继续存留在你的包名之下,这些类文件就相对得不到很好的保护。
原文链接:https://www.bigbai.cc/news/7498.html
本文版权:如无特别标注,本站文章均为原创。