SO库文件是Linux的动态链接库,作用相当于windows下的.dll文件。它是采用C或C++源码编写的二进制文件。相比与采用JAVA编写的DEX文件,其反编译难度更大。因此,一般开发者认为SO文件相对而言更加安全,并将许多核心算法、加密解密方法、协议等放在SO文件中。 但是,黑客可以通过反编译SO库文件,窃取开发者花费大量人力物力财力的研发成果,进行创意窃取或二次打包,使得开发者和用户利益受损。
对SO文件的源码进行混淆,降低黑客反编译的可读性,增加反编译难度。
使用自定义指令集对SO文件进行虚拟化保护,增加逆向分析的难度。
对整个SO文件进行加密压缩,包括代码段、符号表和字符串等,运行时再解密解压缩到内存,从而有效的防止SO数据的泄露。
主要功能 | 描述 |
---|---|
SO加壳 | 对C/C++源码编译出来的SO文件进行加壳,使SO文件无法正确反编译和反汇编。 |
SO源码虚拟化保护 | 对SO文件进行虚拟化保护,实现数据隐藏、防篡改、防Dump,增加逆向分析的难度。 |
SO防调用 | 对SO文件进行授权绑定,防止SO文件被非授权应用调用运行。 |
SO Linker | 代码段加密压缩、字符串加密压缩、导出表加密压缩、函数动态加解密。 |
SO源码混淆 | 常量字符串加密、控制流扁平化、分裂基本块、等价指令替换、虚假控制流、控制流间接化。 |