Java层的安全,能做的不是很多,多数还是在一些反混淆和插件化上面下功夫,当然混淆也能玩出花样来,比如把所有的类名修改成00oo00样式的,比如加入很多的垃圾代码以及一些没啥用看上去像是相关功能的代码,增加破解者的成本。而插件化相关的应用主要是加壳和从网络端下载真正的核心代码,然后将这些核心代码解密还原成真正的dex文件加载。
这些听起来很复杂,实际上操作过的人会发现这些并没有多难得,一方面是工具也在不断升级,另一方面这些确实也都是好多年前的技术了,想要更安全点,就要涉及到jni层了,就像360加壳,就是用jni方法替换了java中的很多方法,这样在跟踪代码的时候就会发现蛋蛋跟踪trace变得异常麻烦。
不管是做安卓还是做攻防,都需要对基础原理有一定了解,很多人会觉得技术变革很快,实际上,变得很快的是技术的场景,是技术的应用,就像做安卓,如果只是盯着业务代码来写,你会发现越来越写不动年轻人,为什么?因为业务不断在变化,而对于技术人员来说,除非一直在某个行业,否则一直做业务会发现根本无法沉淀下来,价值无法得到有效发挥,从而参与到这场声势浩大的内卷当中,甚至被时代吞没。
透过现象看本质,你会发现其实这个世界变化的也没有那么快,如果能站得更高,你会发现这个社会的逻辑就一直没变,而这些可以沉淀的部分,是我们安身立命的根本,是我们可以把技术延续下去的基础和动力。
可能很多小伙伴到现在都差不多忘记了怎么写jni程序了,因为互联网发展到现在大部分情况只需要知道怎么调用就行了,而写jni程序的基本都是公司的核心