代码混淆、Android

详谈Android 编程下的代码混淆,点开就看....

家住魔仙堡 提交于 2019-12-06 00:48:27
源码混淆 什么   Java 是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成 Java 源代码。为了防止这种现象,我们可以使用 Java 混淆器对 Java 字节码进行混淆。   混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的况下,即使被反编译,也将难以阅读。Android代码混淆之后可以保证代码的一定安全,但保护并不全面。 在此感谢“爱加密”他们提供了保护措施,包括:DEX加壳保护,DEX指令动态加载保护和高级源码混淆保护。其中DEX加壳保护通过将DEX文件隐藏,并生成一个类似于虚像的壳文件,阻止黑客利用反编译工具获取App源码、so库保护,使得C/C++ 层面的代码安全也得到防护。加上资源文件保护(图片、音频等文件的防查看和防修改)、xml 主配文件保护(对主配文件进行二次签名)、内存保护等措施