热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网络安全新契机,几维安全KiwiVM虚拟机的创新发布

2019独角兽企业重金招聘Python工程师标准网络病毒是指人为编写的特制程序,具有自我复制能力、很强的感染性,一定的潜伏性,特定的

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

网络病毒是指人为编写的特制程序,具有自我复制能力、很强的感染性,一定的潜伏性,特定的触发性和很大的破坏性。

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

看似对立的两种行为却又是相互依存相互提高的。正因为黑客们不断的改写代码入侵网络,所以网络安全家们才能开发出效率更高安全性更强的安全防护工具。

几维安全作为一家移动应用安全服务商,一直以来致力于为用户及企业打造更安全的移动互联网。针对IOS和Android两大平台,实现国内首个免费的移动应用攻击防御平台,并且在此次峰会中推出了全新安全加密的产品KiwiVM虚拟机。

传统的加密方式

Android SO为例

SO加壳—黑盒方式

功能:对SO进行二进制加壳,破坏ELF文件信息,导致静态反编译工具解析失败,静态加密的方式,是通过干预系统对SO的加载过程进行动态解密。

缺陷:1.恢复简单,通过内存dump或者二进制修复即可

2.平台依赖严重,由于Android版本众多,各家厂商对系统进行了不同程度的定制,所以针对不同的系统库加载器均需要进行适配;

3.容易被脱壳,由于Android环境为开源环境,导致修改系统非常容易,脱壳手段层出不穷。

SO源代码混淆—白盒方式

功能:基于OLLVM开源项目改造的代码混淆加密,包括指令平展化,逻辑混淆和字符串加密。

缺陷:基于代码基本块混淆粒度太大,只增加了假基本块来迷惑分析者,仔细分析的情况下,真实块很明显。

KiwiVM代码虚拟化技术

功能:针对代码顶级加密方案,虚拟代码指令执行。

应用场景:针对C/C++开发的应用,SDK中的核心代码,关键数据保护代码,反欺诈数据采集核心逻辑,支付及通信加解密模块。

应用原理介绍

几维安全KiwiVM虚拟化编译器基于LLVM编译器中间层实现,通过设计独有保密的虚拟CPU解释器以及完备虚拟指令,将原始CPU指令进行加密转换处理为只能由KiwiVM虚拟解释器解释执行的虚拟指令,能够完全隐藏函数代码逻辑,以及函数及变量之间的依赖关系。

由于编译器基于LLVM编译器中间层实现,使得加密代码与业务代码紧密结合,有效阻挡逆向分析;由于是从编译器内部生成平台依赖代码前实现无平台依赖代码虚拟化过程,不依赖于特定系统环境,无兼容性问题,天然兼容所有CPU架构,包括IOS,Android、armv7,arm64),Windows,Liunx(X86,X64),Other(Mips)等。

如图所示:

移动应用安全.png

KiwiVM代码虚拟化技术

(代码效果展示)

传统的原始代码反编译(使用IDA F5功能)

{

  v2 = c;

  _aeabi_memmove(c, p, 16);

  shift_rows(v2);

  v3 = 0;

  v4 = t_boxes;

  do

  {

    v5 = 0;

    v6 = v4;

    do

    {

      v7 = (*v6)[0][v2[v5]];

      v6 = (uint8_t (*)[16][256])((char *)v6 + 256);

      v2[v5++] = v7;

    }

    while ( v5 != 16 );

    v8 = 0;

    do

    {

      *(_DWORD *)&v2[4 * v8] = ty_tables[0][v2[4 * v8]] ^ ty_tables[1][v2[4 * v8 + 1]] ^ ty_tables[2][v2[4 * v8 + 2]] ^ ty_tables[3][v2[4 * v8 + 3]];

      ++v8;

    }

    while ( v8 != 4 );

    shift_rows(v2);

    ++v3;

    ++v4;

  }

  while ( v3 != 9 );

  v9 = t_boxes[9];

  v10 = 0;

  do

  {

    v11 = (*v9)[v2[v10]];

    ++v9;

    v2[v10++] = v11;

  }

  while ( v10 != 16 );

}

使用KiwiVM虚拟机施行代码反编译(使用IDA F5功能)

KVMVoid __fastcall wbaes128_enc(void *p1, void *p2)

{

  v5 = p2;

  v6 = p1;

  v3 = (int *)&v6;

  v4 = (int *)&v5;

  v7 = __KVM_RELOCS___;

  v8 = __KVM_SIGNS___;

  v9 = __KVM_MODULE___;

  v10 = _kvm_init_gv__;

  v11 = 1278;

  v12 = 2;

  v13 = (int *)&v3;

  return *(_DWORD *)kiwisec_vm_interpreter(&v7);

}

相同的代码下不仅减少了代码行数,同时加深了代码安全能力。

KiwiVM代码虚拟化技术的优势

01

顶级安全防护

自定义虚拟CPU,代码一旦加密,很难解密,其不可逆的特性能有效避免攻击者通过DUMP内存,还原原始代码。

02

函数级虚拟化

以C、C++源文件函数为单位进行虚拟化,具有粒度细、可控性高、隐蔽性强的特性,虚拟化之后函数完全隐藏。

03

全平台全构架

支持iOS与安卓双平台的Native代码虚拟化,包括armv7、arm64、armv7a、x86、x86_64等架构。

04

兼容情况良好

在C、C++代码编译时直接虚拟化,其兼容性与原始应用一样。

广告及反欺诈SDK应用场景

移动应用安全1.png

新产品KiwiVM虚拟机加密相比于以往的加密方式,它的可操作性、安全性、高效性等都有显著的提升。并且,在实际操作方面,KiwiVM虚拟机也将更加的便捷,对于公司的安全部门和个人开发者而言,这项技术将大大减少多余的工作量,提高工作效率。


转:https://my.oschina.net/u/3535066/blog/1585244



推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
author-avatar
aska
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有