基于LLVM编译器的安全防护技术方案
LLVM对不同的语言提供同一种中间表示,因此可在中端对IR进行修改,其不受特定语言或特定设备的约束。
- 做代码混淆保护软件代码安全,增加逆向分析难度
- 基于LLVM IR做代码混淆,可基于Obfuscator-LLVM项目实现更强的混淆技术,例如不透明谓词的控制流混淆技术,在程序中插入不透明谓词给程序添加大量虚假的程序控制流,隐藏程序的真实控制流。
- 块调度编译器,会把代码跳转和函数调用加密,切断函数逻辑
- 代码虚拟化,几维安全虚拟化产品KiwiVM,在编译时直接对指定的函数实施虚拟化处理,凭借自定义CPU指令的特性,代码加密过程不可逆,攻击者无法还原代码。
- 增加漏洞防利用的机制
- SafeStack:阻止基于堆栈缓冲区溢出的攻击,将程序堆栈分为安全堆栈和不安全堆栈两个区域,安全堆栈区域存储返回地址、溢出的寄存器、局部变量等信息并分配在随机地址处,并确保没有指向