解读网易易盾新一代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健康发展
欢迎访问网易云社区,了解更多网易技术产品运营经验. 近日,国内领先的智能业务安全平台网易云易盾和浙报传媒旗下"浙江新闻"达成合作,易盾将为浙江新闻客户端提供大数据反作弊服务,助力浙 ...
随机推荐
- Java中的形参和实参的区别以及传值调用和传引用调用
名词解析: 1.形参:用来接收调用该方法时传递的参数.只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间.因此仅仅在方法内有效. 2.实参:传递给被调用方法的值,预先创建并赋予确定值. 3 ...
- Pytest系列(10) - firture 传参数 request的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 为了提高复用性,我们在写测试 ...
- 【PHP】函数
一. 数学中的函数: a) sin().cos().tan().log() 这些都是数学函数,但是都已经忘了啥意思了!没关系,在php当中的函数和这些函数的概念还是有一定的区别的 二. ...
- 微信小程序animation有趣的自定义动画
这几天在看代码时遇到了一些问题:关于微信小程序的animation自定义动画自己没有系统的学习过 做动画需要我们将一个复杂的动作过程,拆解为一步一步的小节过程 微信中已经为我们写好了端口我们只需要实例 ...
- android的volley学习
更简单的一种方式是在build.gradle中引入依赖[推荐这种方式] compile 'com.android.volley:volley:1.1.1' StringRequest的用法接下来我们看 ...
- python 函数--闭包函数
一.闭包函数: 在一个外函数中定义一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用. 二.实例: def outer(a): #外函数 b = 10 #临时变量 def i ...
- Qt开发环境搭建 - Windows + VS2010 + VS插件
Qt 开发环境搭建 - Windows+VS2010+VS插件 1.Qt在Windows平台下的三种开发环境 方案 编辑器 编译器 调试器 一 Qt Creator MinGW GDB 二 Qt Cr ...
- 【python】利用jieba中文分词进行词频统计
以下代码对鲁迅的<祝福>进行了词频统计: import io import jieba txt = io.open("zhufu.txt", "r" ...
- 【python实现卷积神经网络】损失函数的定义(均方误差损失、交叉熵损失)
代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...
- python3(二十八)manyExten
""" 多重继承 """ __author__ = 'shaozhiqi' # start ------------------------ ...