一、网易易盾为什么会推出安全编译器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的更多相关文章

  1. 网易易盾最新一代Java2c加固究竟有什么厉害之处?

    导语:几个月前,网易易盾正式推出Java2c加固.它以独有的"静态保护"技术,使得应用程序中的代码出现"下沉",达到不可逆的效果,兼顾"冷热启动时间& ...

  2. 【原创】Python 网易易盾滑块验证

    本文仅供学习交流使用,如侵立删! 记一次 网易易盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.PIL.numpy.scipy.matplotlib 分析 ...

  3. C# 调用网易“易盾” Web API

    易盾是网易推出的反垃圾云服务,最近准备试用一下,但发现api文档中只提供了Java, Python, PHP的示例代码,却没有C#的示例代码,于是参照Java示例代码用C#实现了一下. Java中用H ...

  4. selenium自动爬取网易易盾的验证码

    我们在爬虫过程中难免会遇到一些拦路虎,比如各种各样的验证码,时不时蹦出来,这时候我们需要去识别它来继续我们的工作,接下来我将爬取网一些滑动验证码,然后通过百度的EasyDL平台进行数据标注,创建模型, ...

  5. 网易云易盾CTO朱浩齐:我们是如何用AI赋能内容安全?

    本文由  网易云发布. 5月19日,LiveVideoStack携手网易云易盾,共同打造了“娱乐多媒体开发应用实践”专题,帮助开发者和泛娱乐平台运营人员,提升技术能力,突破难点,拓展思路与视野. 在专 ...

  6. 网易云易盾朱星星:最容易被驳回的10大APP过检项

    本文由  网易云发布. 1月20日,“走进网易:移动测试与安全实践”公开活动在杭州西湖区颐高创业大厦4F楼友会创业咖啡厅举行.本次活动的议题聚焦在如何实现应用的高效开发.安全过检.开发功耗降到最低等热 ...

  7. 工信部公示网络安全示范项目 网易云易盾“自适应DDoS攻击深度检测和防御系统”入选

    本文由  网易云发布. 工信部官网 2017年年底,经专家评审和遴选,中华人民共和国工业和信息化部(以下简称“工信部”)公示了2017年电信和互联网行业网络安全试点示范项目,网易云易盾的“自适应DDo ...

  8. 网易云易盾与A10 Networks达成战略合作 携手打造抗DDoS攻击的解决方案

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 2018年9月,网易云易盾宣布,与智能和自动化网络安全解决方案提供商A10 Networks结成战略合作伙伴关系.双方将在抗DDoS攻击领域展开深入 ...

  9. 网易云易盾中标浙报反作弊服务 助力浙江新闻App健康发展

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 近日,国内领先的智能业务安全平台网易云易盾和浙报传媒旗下"浙江新闻"达成合作,易盾将为浙江新闻客户端提供大数据反作弊服务,助力浙 ...

随机推荐

  1. python爬虫之requests的基础使用

    1.先安装requests库,打开cmd,输入:pip install requests

  2. Vue里面提供的三大类钩子及两种函数

    在路由跳转的时候,我们需要一些权限判断或者其他操作.这个时候就需要使用路由的钩子函数. 定义:路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的函数. 总体来讲vue里面提供了三大类钩子 ...

  3. jmeter术语

    1.负载:模拟业务请求操作对服务器造成压力的过程 2.性能测试(performance testing):模拟用户负载来测试系统在负载情况下,系统的响应时间.吞吐量等指标是否满足性能要求 3.负载测试 ...

  4. Ring 笔记 - 核心概念

    Ring 是一个在 Clojure 中的对于 HTTP 的抽象,是构建 Web 应用的底层接口和库,类似于 Java 中的 Servlet 核心概念 Handler Handler 是一个定义web应 ...

  5. 下载安装配置 Spark-2.4.5 以及 sbt1.3.8 打包程序

    文章更新于:2020-03-29 按照惯例,文件附上链接放在文首. 文件名:spark-2.4.5-bin-without-hadoop.tgz 文件大小:159 MB 下载链接:https://mi ...

  6. MTK Android Camera运行流程

    Android Camera 运行流程 总体架构1.CameraService服务的注册2.Client端的应用层到JNI层Camera App-JNI3.Client到Service的连接4.HAL ...

  7. std::string::append函数

    string& append (const string& str); string& append (const string& str, size_t subpos ...

  8. Java课程设计之——Web前端

    主要使用的技术 Javascript/JQuery html css Jsp 前期调查 能看到的网页大致可以分为两个部分,一个是搜索的首页index.html,一个是搜索结果页/s index.htm ...

  9. [转] [知乎] Roguelite 和 Roguelike 的区别是什么?

    编者按 本文译自 Ethan Hawkes 一篇介绍 rogue-lite 概念的文章,已获作者授权,英文原文见这里,译文首发于这里.注意本文写于 2013 年,正是 roguelite 类型的独立游 ...

  10. 如何改变Xcode字体大小?

    运行Xcode后依次点击左上角Xcode/Preferences/Fonts & Colors里就可以调整,在右边随便点中一个字体就可以调整这个字体的大小和颜色了,按command+a可以将所 ...