解读网易易盾新一代IoT安全编译器Maze
一、网易易盾为什么会推出安全编译器Maze?
随着5G时代的到来,会有越来越多的物联网设备走进我们的生活,然而物联网的终端本身普遍处于白盒环境中,***者很容易获取相关的信息进行***,这个时候如果不加以防护,势必给我们的生活造成重大的影响。然而设备的代码安全是一切安全的基础,如果设备代码不加以防护或防护不够,不仅仅会造成本身核心技术泄露,同时也给IoT设备稳定运行带来威胁。
与此同时,随着开发者安全意识的不断提高以及对于性能上的更多的考量,会有越来越多的移动开发者把算法或者核心逻辑写在本地层,如果本地层保护不够,***者通过逆向分析就可以得到核心的算法实现,严重危害到企业的利益,并且随着行业逆向水平的提高,逆向工具的使用也越来越普及,对于C/C++二进制文件破解的门槛逐步降低。
基于以上这些痛点和威胁,网易易盾开发出了IoT安全编译器Maze。Maze是一款针对C/C++层源代码加密混淆的工具,用于保护智能汽车、智能摄像头、智能家具等固件代码,避免因逆向工程被破解,造成核心技术被泄漏、代码执行流程被分析等安全问题。
安全编译器与普通编译器相似,可将C、C++等源代码编译成二进制代码。不同之处在于,安全编译器在编译时,能够对代码进行控制流混淆、字符串加密等安全保护,从而避免***者通过IDA Pro等逆向工具反编译二进制代码,分析业务代码执行流程,进一步篡改或窃取核心技术。
二、Maze原理说明:“迷宫矩阵”技术
Maze的“迷宫矩阵”技术由两部分组成:一个是逻辑混淆,另外一个是逻辑调度。
2.1逻辑混淆
控制流平坦化
由于函数的控制流图是函数逻辑的重要体现点,这里以函数的控制流作为保护和说明对象。由于函数中的控制流是呈现顺序的一个形态,逆向者可以通过逆向工具对其进行分析,还原程序的算法逻辑。
易盾安全编译器中控制流平坦化通过一个主分发器来控制程序基本块的执行流程,分散程序逻辑之间的关系,大大的增大了逆向者的分析难度,原理图如下所示:

字符串加密
由于函数中的字符串是逆向者进行分析的第一个重要入口,因此在易盾安全编译器中,字符串是默认且建议加密的,从下图中可以看到保护后的字符串消失了,保障了函数的安全。
指令替换&&伪造控制流
由于函数控制流是逆向***者去分析的重要入口,因此安全编译器通过对控制流进行虚假变形,以及指令之间的同语义的等价替换。通过构造一系列的逻辑谓词,和等价转换规则“丰富”整个程序逻辑,大大的增大逆向分析者去逆向分析的难度,变换前后的原理图如下所示:
2.2逻辑调度
调用隐藏
程序逻辑其中有一部分重要逻辑是通过子函数之间的调用来体现的,安全编译器通过分析函数之间的调用链,然后复杂化来增加之间的调用关系,使得程序调用达到一种隐藏的效果。
间接调用
为了进一步的增大程序之间的分析难度,通过“分散”并重新组织块状态之间的调用关系,通过引入一个动态的分发块结构,来模拟整个程序运行的过程,无论是静态还是动态都使得程序看起来更加的困难,变换其后的效果图如下所示:
三、保护前后效果对比
以下是采用安全编译器保护前后的效果图,可以看到其中重要的字符串通过IDA静态分析完以后消失了,给静态分析带来一定的困难。
通过观察保护前后的混淆控制流,可以看到保护以后的控制流变得异常的复杂,给***者带来巨大的分析困难,不仅无法静态分析,即使是动态分析也有很大的困难。

四、兼容性&强度
4.1 兼容性
Maze的混淆兼容所有C/C++语法特征,不仅适用客户端的应用开发,兼容目前市面上大部分的NDK版本,同时也适用嵌入式开发,保障混淆保护前后功能上的等价转换。这也使得客户使用上兼容所有的系统端,如Windows、Linux和Mac等;
4.2 强度
我们知道强度与性能在一定程度上体现这样的关系:一定强度的保证需要性能损失作为代价。这里Maze 尽最大程度弱化之间的对应关系,找到一个平衡点,以最小的性能损失达到最大的保护强度,同时提供灵活且细粒度的使用方式,保障达到最佳的效果。
五、总结
对于众所周知的黑盒加壳保护,***者通常只需要抓住分析到的某一个点,就能让整个保护“沦陷”,而Maze在性能和体积可接受范围内,使得***者陷入一种“迷宫”(Maze)状态,越走越乱。
从这来看,Maze是一种新的安全代码保护思路,拥有更加灵活、强度更高、性能和体积优良、保护效果好等优点。在部署上,Maze不仅支持通过脚本轻量级进行部署,也可以对强度和需要进行混淆保护的函数进行灵活的控制,开发层面支持NDK开发和嵌入式开发,使用上则非常灵活,兼容Windows、Linux、Mac等系统。
IoT安全编译器Maze适用于保护智能汽车、智能摄像头、智能家居等固件代码,也适用于保护移动应用,避免因逆向工程被破解,造成核心技术泄漏、代码执行流程被分析等安全问题。
转载于:https://blog.51cto.com/13610827/2410376
解读网易易盾新一代IoT安全编译器Maze的更多相关文章
- 网易易盾最新一代Java2c加固究竟有什么厉害之处?
导语:几个月前,网易易盾正式推出Java2c加固.它以独有的"静态保护"技术,使得应用程序中的代码出现"下沉",达到不可逆的效果,兼顾"冷热启动时间& ...
- 【原创】Python 网易易盾滑块验证
本文仅供学习交流使用,如侵立删! 记一次 网易易盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.PIL.numpy.scipy.matplotlib 分析 ...
- C# 调用网易“易盾” Web API
易盾是网易推出的反垃圾云服务,最近准备试用一下,但发现api文档中只提供了Java, Python, PHP的示例代码,却没有C#的示例代码,于是参照Java示例代码用C#实现了一下. Java中用H ...
- selenium自动爬取网易易盾的验证码
我们在爬虫过程中难免会遇到一些拦路虎,比如各种各样的验证码,时不时蹦出来,这时候我们需要去识别它来继续我们的工作,接下来我将爬取网一些滑动验证码,然后通过百度的EasyDL平台进行数据标注,创建模型, ...
- 网易云易盾CTO朱浩齐:我们是如何用AI赋能内容安全?
本文由 网易云发布. 5月19日,LiveVideoStack携手网易云易盾,共同打造了“娱乐多媒体开发应用实践”专题,帮助开发者和泛娱乐平台运营人员,提升技术能力,突破难点,拓展思路与视野. 在专 ...
- 网易云易盾朱星星:最容易被驳回的10大APP过检项
本文由 网易云发布. 1月20日,“走进网易:移动测试与安全实践”公开活动在杭州西湖区颐高创业大厦4F楼友会创业咖啡厅举行.本次活动的议题聚焦在如何实现应用的高效开发.安全过检.开发功耗降到最低等热 ...
- 工信部公示网络安全示范项目 网易云易盾“自适应DDoS攻击深度检测和防御系统”入选
本文由 网易云发布. 工信部官网 2017年年底,经专家评审和遴选,中华人民共和国工业和信息化部(以下简称“工信部”)公示了2017年电信和互联网行业网络安全试点示范项目,网易云易盾的“自适应DDo ...
- 网易云易盾与A10 Networks达成战略合作 携手打造抗DDoS攻击的解决方案
欢迎访问网易云社区,了解更多网易技术产品运营经验. 2018年9月,网易云易盾宣布,与智能和自动化网络安全解决方案提供商A10 Networks结成战略合作伙伴关系.双方将在抗DDoS攻击领域展开深入 ...
- 网易云易盾中标浙报反作弊服务 助力浙江新闻App健康发展
欢迎访问网易云社区,了解更多网易技术产品运营经验. 近日,国内领先的智能业务安全平台网易云易盾和浙报传媒旗下"浙江新闻"达成合作,易盾将为浙江新闻客户端提供大数据反作弊服务,助力浙 ...
随机推荐
- 201771010108-韩腊梅《面向对象程序设计(java)》第二周学习总结
201771010108<面向对象程序设计(java)>第二周学习总结 第一部分:理论知识学习部分 第三章:Java的基本程序设计结构 1.标识符:① 标识符由字母.下划线.美元符号和数字 ...
- PTA数据结构与算法题目集(中文) 7-27
PTA数据结构与算法题目集(中文) 7-27 7-27 家谱处理 (30 分) 人类学研究对于家族很感兴趣,于是研究人员搜集了一些家族的家谱进行研究.实验中,使用计算机处理家谱.为了实现这个目的 ...
- Spring Taco Cloud——配料表(Lombok的安装及其注解)
先简单概括下这个项目:外卖订餐平台Web,这个是承接我的这篇博文来续写的https://www.cnblogs.com/yycjavastudy/articles/12666104.html,在这一篇 ...
- 微信小程序animation有趣的自定义动画
这几天在看代码时遇到了一些问题:关于微信小程序的animation自定义动画自己没有系统的学习过 做动画需要我们将一个复杂的动作过程,拆解为一步一步的小节过程 微信中已经为我们写好了端口我们只需要实例 ...
- wireshark抓包实战(二),第一次抓包
1.选择网卡. 因为wireshark是基于网卡进行抓包的,所以这时候我们必须选取一个网卡进行抓包.选择网卡一般有三种方式 (1)第一种 当我们刚打开软件是会自动提醒您选择,例如: (2)第二种 这时 ...
- 个人项目 wc.exe
GitHub地址:https://github.com/oAiuo/wordCount 一.题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行单元测试. ...
- 36 Thread 多线程
/* * 多线程的实现方式: * 方式1:一种方法是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例 * * Thread * Str ...
- 武汉加油!(Python版)
#武汉加油!import turtle as tt.pensize(20)t.pencolor("blue")t.setup(1700, 600) t.penup()#-t.got ...
- 七、环回接口ip地址(逻辑接口)
loopback接口,在网络设备(一般是路由器)上是一种特殊的接口,它不是物理接口,而是一种看不见摸不着的逻辑接口(也称虚拟接口),但是对于网络设备来说却是至关重要的. 在网络设备上可以通过配置命令来 ...
- Linux中使用netstat命令的基本操作,排查端口号的占用情况
Linux中netstat命令详解 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息.Netstat用于显示与I ...