1、IoT时代LLVM编译器防护的艺术目录万物互联,代码安全先行0101传统代码保护、LLVM安全编译器02020303混淆、块调度、代码虚拟化万物互联,安全先行物理安全防止丢失或者被盗业务安全防止用户隐私数据泄漏系统安全防止底层漏洞被恶意利用策略安全策略安全万物互联,代码安全先行防逆向打配合提高门槛争取时间防止核心算法被重构提升策略安全的强度提高破解成本,将逆向菜鸟拒之门外加大破解难度,延长破解时间,为运营争取更多的有利窗口期物联网时代即将开启Android Things让您可以为各种消费者,零售和工业应用程序构建智能互联设备。AliOS Things面向IoT领域的轻量级物联网嵌入式操作系统,
2、可广泛应用在智能家居、智慧城市、新出行等领域。DuerOS可以广泛支持手机、电视、音箱、汽车、机器人等多种硬件设备IoT.MI小米IoT开发者平台面向智能家居、智能家电、健康可穿戴、出行车载等领域芯片体系越来越多互联网WindowsMacOSLinuxx86x86-64移动互联网iOSAndroidx86armarm64物联网AndroidAliOS Thingsx86x86-64armarm64mipsmips64 stm32avrbpfhexagonlanainvptxriscvsparcsystemzcsky运行内存越来越少互联网WindowsMacOSLinux256KB-1GB移动互
3、联网iOSAndroid512MB-8GB物联网AndroidAliOS Things2GB-16GB物联网操作系统运行环境跑在种类繁多的芯片架构上受限于功耗硬件性能低下运行在内存一般偏小的环境概念科普黑盒代码加密处理的对象是最终的软件执行体,比如Windows的EXE、Android的SO以及DEX白盒代码加密处 理 的 对 象 是 源 代 码,比 如C/C+/Objective-C/Swift这 类 语 言 的 源 代 码 文 件黑盒代码加密的应用比 如 适 用 于 Windows、Linux、Android的UPX壳比如利用x86指令集的可变长特性增加误导反汇编程序的垃圾指令比如Wind
4、ows非常著名的VMProtect比如Android的DEX整体加解密、类抽取ACBD加壳加花指令加虚拟机劫持运行时黑盒代码加密的局限可移植性差兼容性差很难对多端且同源的代码做一致性的保护芯片架构不兼容、内存需求显著增加,很难适应新的像IoT这样的平台对于像Android这类高碎片化的平台,干预运行时意味着兼容性极差对于像iOS这类完全封闭的平台,干预运行时意味着方案没法工作LLVM编译器登场前端源代码LLVM是模块化、可复用的编译器工具链集合,最初是伊利诺伊大学的一个研究项目,其目标是提供一种现代的,基于SSA的编译策略,能够支持任意编程语言的静态和动态编译。IR处理LLVM-IR后端LLV
5、M-MIR目标文件ObjectLLVM-IR函数模块IR指令基本块LLVM提供了完整的IR文件操作API,可以对IR文件的模块、函数、基本块、IR指令做任意修改。|架构信息全局数据函数申明函数实现编译元数据|函数申明变量申明代码块|IR指令序列|算术指令逻辑指令控制指令.挖掘LLVM-IR的潜能架构无关可以适应任意芯片架构方案丰富可以满足任意要求的安全级别函数粒度可以适应低内存运行环境初级防护原始流程图混淆流程图高级防护原始流程图块调度流程图代码虚拟化KIWIVMKiwiVM代码虚拟化编译器基于LLVM编译器中间层实现,通过设计独有保密的虚拟CPU指令,将原始CPU指令进行加密转换为只能由Ki
6、wiVM解释执行的虚拟指令,能够完全隐藏函数代码逻辑,让代码无法被逆向工程。虚拟CPU执行函数保护粒度全平台全架构100%兼容性KIWIVM转换过程LLVM-BC源文件ClangKiwiVM源文件KiwiVM的中心思想是利用LLVM-BC编码成自定义虚拟CPU的指令集和元数据,包括指令集数据、重定位数据、函数调用签名数据等。|CC+ObjC|BC函数列表|功能等价的C|生成最终的Obj文件KIWIVM转换样例旗舰防护原始流程图虚拟机流程图差异对比混淆块调度代码虚拟化结束之前结束之前几维安全编译器产品简介级别功能平台混淆编译器初级代码膨胀乱序执行iOS、Android、IoT块调度编译器高级逻辑断链函数调用隐藏iOS、Android、IoT虚拟化编译器旗舰级逻辑隐藏虚拟CPU执行iOS、Android、IoT谢 谢!