工作原理

SO库文件是Linux的动态链接库,作用相当于windows下的.dll文件。它是采用C或C++源码编写的二进制文件。相比与采用JAVA编写的DEX文件,其反编译难度更大。因此,一般开发者认为SO文件相对而言更加安全,并将许多核心算法、加密解密方法、协议等放在SO文件中。 但是,黑客可以通过反编译SO库文件,窃取开发者花费大量人力物力财力的研发成果,进行创意窃取或二次打包,使得开发者和用户利益受损。

核心技术

  • SO源码混淆

    对SO文件的源码进行混淆,降低黑客反编译的可读性,增加反编译难度。

  • SO源码虚拟化保护

    使用自定义指令集对SO文件进行虚拟化保护,增加逆向分析的难度。

  • SO Linker

    对整个SO文件进行加密压缩,包括代码段、符号表和字符串等,运行时再解密解压缩到内存,从而有效的防止SO数据的泄露。

主要功能

主要功能 描述
SO加壳 对C/C++源码编译出来的SO文件进行加壳,使SO文件无法正确反编译和反汇编。
SO源码虚拟化保护 对SO文件进行虚拟化保护,实现数据隐藏、防篡改、防Dump,增加逆向分析的难度。
SO防调用 对SO文件进行授权绑定,防止SO文件被非授权应用调用运行。
SO Linker 代码段加密压缩、字符串加密压缩、导出表加密压缩、函数动态加解密。
SO源码混淆 常量字符串加密、控制流扁平化、分裂基本块、等价指令替换、虚假控制流、控制流间接化。

获取更多SO加固信息