代码混淆不一定要花大价钱,Code Virtualizer也能轻松搞定!

2023-11-01

任何创建创新性应用程序,DLL或设备驱动程序的开发人员都希望将代码尽可能机密,以避免第三方公司/开发人员研究应用程序内的代码并为自己的利益而窃取代码。一些开发人员使用外部保护系统来打包应用程序并保护其免受攻击者的侵害,但是大多数时候,这些保护系统无法提供他们所需要的强度,从而使开发人员在完全解压缩应用程序后完全感到沮丧。

市面很多代码保护软件,虽然功能强大,但同样价格昂贵,小编今天为大家推荐一款性价比高的代码混淆软件Code Virtualizer

Code Virtualizer不能像普通的打包器那样工作;相反,它只是保护开发人员选择的敏感代码区域。这些敏感区域将转换为内部的虚拟机操作码,只有Code Virtualizer才能理解。如果攻击者试图了解虚拟机的操作码,则他将不得不跟踪一个复杂且多态的虚拟机,这使他在任何时候都正在执行什么代码方面大失所望。

代码保护不一定要花大价钱,Code Virtualizer也能保障!

虚拟化x86代码(用于32位或64位)的整个过程可以在以下阶段进行描述:

  • 读取敏感代码块以进行保护:Code Virtualizer将在已编译的应用程序中搜索开发人员在其源代码中插入的所有敏感块  
  • 为应用程序创建一个唯一的虚拟机:Code Virtualizer使用其多态引擎创建一个唯一的虚拟机,以解释转换后的虚拟操作码
  • 将原始x86操作码转换为特定的虚拟操作码:Code Virtualizer会将原始x86操作码转换为仅先前生成的唯一虚拟机可以理解的特定操作码
  • 销毁原始x86操作码并将执行重定向到虚拟机:代码虚拟器将销毁原始x86操作码并将块中的第一条指令重定向到虚拟机,执行虚拟操作码而不是原始x86操作码

逆向工程的代码虚拟器

代码虚拟化包括将二进制代码从特定机器转换为另一台机器可以理解的不同二进制代码。即,来自特定机器的指令集被转换为新的指令集,该新的指令集被另一机器理解。下图表示从Intel x86指令块到另一台机器(特别是RISC 32位CPU)的新指令集的转换:

代码保护不一定要花大价钱,Code Virtualizer也能保障!

Code Virtualizer可以生成多种虚拟机,每种虚拟机具有不同的指令集。这意味着可以将特定的Intel x86指令块转换为每台计算机的不同指令集,从而防止攻击者在从x86指令转换后识别任何生成的虚拟操作码。下图表示如何将Intel x86指令块转换为不同类型的虚拟操作码,这些虚拟操作码可以由不同的虚拟机模拟。

代码保护不一定要花大价钱,Code Virtualizer也能保障!

当攻击者尝试反编译受Code Virtualizer保护的代码块时,他将找不到原始的x86指令。相反,他将找到一个全新的指令集,该指令集将不会被他或其他任何特殊的反编译器所识别。这将迫使攻击者进行极其艰巨的工作,以确定每个操作码的执行方式以及特定虚拟机如何为每个受保护的应用程序工作。Code Virtualizer完全混淆了虚拟操作码的执行和对每个唯一虚拟机的研究,以防止有人研究如何执行虚拟操作码。

下图显示了原始已编译应用程序的图像(在受到保护之前)以及在受Code Virtualizer保护时如何转换:

代码保护不一定要花大价钱,Code Virtualizer也能保障!

如图所示,Code Virtualizer需要将生成的虚拟机嵌入到受保护的应用程序的末尾(或在Stealth Mode中隐藏在您自己的代码中),以便在要执行虚拟操作码时模拟它们。虚拟机的大小可以从500Kb到3Mb以上不等!(取决于所选的虚拟机体系结构)。您还可以压缩生成的虚拟机和虚拟化的代码,以减少磁盘上最终应用程序的大小。

使用环境

  • Win32和Win64本机应用程序(EXE文件)
  • Win32和Win64本机系统服务 
  • Win32和Win64 设备驱动程序(NT设备驱动程序,WDM等)
  • Win32和Win64本机动态链接库(DLL)
  • 其他本机PE文件,例如OCX,ActiveX控件,屏幕保护程序等。 
  • Linux应用程序和库(.so)
  • Mac OS X应用程序

由于.NET应用程序的性质,Code Virtualizer无法保护.NET应用程序中的敏感代码。为了保护.NET应用程序,建议您使用其他产品WinLicense

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码混淆不一定要花大价钱,Code Virtualizer也能轻松搞定! 的相关文章

  • rsa2加解密及签名校验

    非对称加解密 第一种用法 私钥签名 公钥验签 用于签名 第二种用法 公钥加密 私钥解密 用于加解密 class Rsa2Controller extends Controller 第一种应用 验签 私钥加密 公钥验签 return stri
  • AES前后端,加密\解密实例

    1 后端代码 package cn com test import org apache commons codec binary Base64 import org apache commons lang3 StringUtils imp
  • Android加密和解密(DES,AES,MD5)

    加密是通过加密算法和加密密钥将明文转变为密文的过程 解密是其逆过程 加密算法有很多种 一般可以分为对称加密 如DES AES等 非对称加密 如RSA等 和单向加密 如MD5等 3类算法 1 在对称加密算法中 双方使用的密钥相同 要求解密方事
  • AES的256位密钥加解密报 java.security.InvalidKeyException: Illegal key size or default parameters 异常的处理及处理工具

    在做第三方对接进行AES加密 256位 的时候遇到的错误 这哥们写的非常详细 转载地址 https blog csdn net dafeige8 article details 76019911 一 出现的现象 为了数据代码在传输过程中的安
  • python写几种base加解密

    源代码 import base64 def b64encode basec PlainText basec encode utf 8 a base64 b64encode PlainText CipherText a decode utf
  • 现代密码学-传统密码技术(置换、代换密码)

    目录 置换密码 换位密码 列置换 周期置换 代换密码 单表代换密码 多表代换密码 参考 置换密码 换位密码 置换密码 Permutation Cipher 又叫换位密码 Transposi tionCipher 它根据一定的规则重新排列明文
  • java代码混淆工具Jocky的介绍

    最近给的任务是代码混淆 以前没有接触过 所以只能从最基础的东西开始了解 主要应用的工具有jocky progard dex2jar apktool jd GUI 今天简单介绍一下jocky的作用 并附上其他参考教程链接 jocky是一款ja
  • 了解PHP的几种常见的加密方式

    常用的几种加密方式 md5加密 Md5是一种单向的加密技术 不可逆 不能进行解密 crypt加密 crypt 为单向加密 跟md5差不多一样 sha1加密 跟md5很像 不同的是sha1 默认情况下返回40个字符的散列值 传入参数性质一样
  • javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with pad

    今天在做AES加密时 项目中出现javax crypto IllegalBlockSizeException Input length must be multiple of 16 when decrypting with padded c
  • iOS-加密算法

    一 散列算法 签名算法 摘要 散列算法 又称哈希函数 是一种单向加密算法 在信息安全技术中 经常需要验证消息的完整性 散列 Hash 函数提供了这一服务 它对不同长度的输入消息 产生固定长度的输出 因为其结果是不可逆的 既然是不可逆的 那么
  • 使用ulisesbocchio对spring-boot项目properties.yml(bootstrap.yml)配置文件加密

    Spring boot项目中properties文件中的密码明文上传到公开的远程仓库后 不安全 可以使用Ulisesbocchio对配置文件进行加密 1 添加maven依赖
  • Android数据加密之MD5加密

    一 前言 项目中无论是密码的存储或者说判断文件是否是同一文件 都会用到MD5算法 今天来总结一下MD5加密算法 二 什么是MD5加密 MD5英文全称 Message Digest Algorithm 5 翻译过来是 消息摘要算法5 由MD2
  • openssl做HMAC实例(C++)

    1 HMAC简介 1 MAC Message Authentication Code 消息认证码算法 可以将其认为是含有秘钥的散列 Hash 函数算法 即兼容了MD和SHA算法 并在此基础上加上了秘钥 因此MAC算法也经常被称作HMAC算法
  • 计算机内存取证之BitLocker恢复密钥提取还原

    BitLocker是微软Windows自带的用于加密磁盘分卷的技术 通常 解开后的加密卷通过Windows自带的命令工具 manage bde 可以查看其恢复密钥串 如下图所示 如图 这里的数字密码下面的一长串字符串即是下面要提取恢复密钥
  • Java实现对称加密算法-AES加解密

    AES Advanced Encryption Standard 意思是高级加密标准 是一种区块加密标准 这个标准用来替代原先的DES 且已经被广泛使用 DES使用56位密钥 所以比较容易被破解 AES可以使用128 192 和256位密钥
  • 代码混淆后可能出现的问题

    1 ClassNotFoundException NoSuchMethodError 原因 这种异常会在好多情况下出现 比如 本地代码通过反射调用其他的类 但是经过了混淆之后 就会出现如上异常 调用了JNI之后 C或者C 和java代码进行
  • 常见加密算法实现——DES、AES、RSA、MD5

    一 对称加密 1 介绍 对称加密 加密和解密使用同一个密钥 对称加密算法 DES 3DES AES等 DES 数据加密标准 是一种使用密钥加密的块算法 3DES DES向AES过渡的加密算法 AES 高级加密标准 替代DES 对称加密的特点
  • 非对称加密工作原理

    非对称加密 非对称加密使用两个密钥 一个是public key 一个是private key 通过某个算法 使得数据的加密和解密使用不同的密钥 因为用的是不同的密钥 所以称为非对称加密 非对称加密最著名的是RSA算法 这是以其发明者Rive
  • WinLicense&Themida 2019革命性升级,软件加密后破解难度突破天际

    随着软件普及程度 互联网技术的发展 以及正版软件购买用户数量和软件版本的增加 软件的保护变得越来越重要 而我们常见的软件保护方式有软件授权和软件加密 Oreans是西班牙非常著名的软件系统保护公司 提供代码混淆 版本控制等多种工具 其中Wi
  • iOS代码混淆初探

    iOS代码混淆初探 在没有对应用的代码做过特殊处理的情况下 一般应用的代码中的类名和方法都是明文的 在逆向分析中 通过class dump获取MachO可执行文件中的所有类 定义的方法和属性 就能很快的从名字入手猜到这个方法是做什么用的 所

随机推荐

  • [多尺度物体目标检测]技术概述/综述

    目录 1 绪论 1 1 引言 1 2 研究背景 1 3 研究意义 1 4 目前存在的问题 2 传统目标检测方法 2 1 HOG SVM 2 1 1 简介 2 1 2 检测流程 2 2 DPM 2 2 1 简介 2 2 2 检测流程 3 基于
  • C++拷贝构造器(Copy contructor)

    定义 由己存在的对象 创建新对象 也就是说新对象 不由构造器来构造 而是由拷贝构造器来完成 拷贝构造器的格式是固定的 class 类名 类名 const 类名 another 拷贝构造体 classA A const A another 规
  • 题目 1041: [编程入门]宏定义之找最大数

    分别用函数和带参的宏 从三个数中找出最大的数 输入格式 3个实数 输出格式 最大的数 输出两遍 先用函数 再用宏 保留3位小数 样例输入 复制 1 2 3 样例输出 复制 3 000 3 000 核心解法 我的是用三目运算符 int Max
  • feign的加解密封装

    功能描述 通过覆盖 feign codec Encoder 和 feign codec Decoder 实现 feign 请求的加解密操作 采用动态的 feignClient 调用 平台统一的通信加解密策略 同一个服务节点可以同时使用非加密
  • C++基础知识 - 类模板与静态数据成员

    类模板与静态数据成员 include
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现

    目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 AUTOSAR规范及开发流程
  • vscode clang-format不生效

    问题 ubuntu下clang format不生效 解决方法 全局搜setting json 看着哪个像 找到对应的设置文件 我的是 config Code User settings json 里面改成 editor formatOnSa
  • Redis事务——锁机制

    1 redis事务定义 1 redis事务是一个单独隔离的操作 事务中所有操作都会按顺序进行执行 事务操作过程中 不会被其他客户端发送来到命令打断 2 redis事务是将命令进行串联操作 防止有其他命令插队 2 事务执行流程 如下图 1 m
  • Threadx 定时器timer

    文章目录 定时器管理结构 定时器链表 定时器激活链表 定时器工作原理 定时器API 定时器创建 tx timer create 删除定时器 tx timer delete 修改 tx timer change Threadx 操作系统定时器
  • 微信小程序wx.request请求服务器json数据并渲染到页面

    微信小程序的数据总不能写死吧 肯定是要结合数据库来做数据更新 而小程序数据主要是json数据格式 所以我们可以利用php操作数据库 把数据以json格式数据输出即可 现在给大家讲一下微信小程序的wx request请求服务器获取数据的用法
  • 有模型强化学习总结

    有模型和无模型的区别 1 有了模型 我们可以干哪些事呢 第一 利用模型和基于模型的优化算法 我们可以得到回报高的数据 也就是好的数据 有了好的数据 我们就可以对策略网络进行稳定的训练了 第二 有了模型 我们可以充分地利用示例 demonst
  • midjourney 初级使用说明

    注册 直达官网 目前官网是可以直达的 但是Midjourney目前架设在Discord频道上 最终运行去discord 上面的 需要科学上网 自行搜索 登录到Discord 以后 就是使用的开始 使用 找到新手频道 在midjourney官
  • JS特效-星空太空效果-极简

    今天早上心血来潮 看到自己的电脑桌面是太空的界面 便有心继上次星星海特效后的再一次制作
  • 【Docker】使用 Docker Registry 搭建自己的 Docker 镜像仓库

    使用 Docker Registry 搭建自己的 Docker 镜像仓库 在使用 Docker 进行应用程序的开发和部署时 使用 Docker 镜像仓库是一个很好的实践 它允许集中存储和管理 Docker 镜像 方便团队协作和版本控制 在本
  • wireshark 流量抓包例题重现

    题目一 题目要求 1 黑客攻击的第一个受害主机的网卡IP地址 2 黑客对URL的哪一个参数实施了SQL注入 3 第一个受害主机网站数据库的表前缀 加上下划线例如abc 4 第一个受害主机网站数据库的名字 看到题目SQL注入 那就首先过滤ht
  • Springboot项目打war包部署到外置tomcat容器【详解版】

    一 修改打包方式
  • 维金细说“virtualization”

    摘要 在这个时代下 虚拟化已经成为毋庸置疑的主角 虚拟化对生活的影响也是方方面面的 熟悉 网络虚拟化的朋友知道 这是一种基于软件的 抽象的 从物理元素中分离流量的一种方式 近年来 随着云计算和大数据的诞生和飞速发展 各种虚拟化技术也好似 雨
  • Python--遍历列表时删除元素的正确做法

    一 问题描述 这是在工作中遇到的一段代码 原理大概和下面类似 判断某一个元素是否符合要求 不符合删除该元素 最后得到符合要求的列表 a 1 2 3 4 5 6 7 8 for i in a if i gt 5 pass else a rem
  • javafx预览PDF

    第一种方法 调用其它可外部程序打开 Runtime getRuntime exec rundll32 url dll FileProtocolHandler new File C Program Files aaa 202306171607
  • 代码混淆不一定要花大价钱,Code Virtualizer也能轻松搞定!

    任何创建创新性应用程序 DLL或设备驱动程序的开发人员都希望将代码尽可能机密 以避免第三方公司 开发人员研究应用程序内的代码并为自己的利益而窃取代码 一些开发人员使用外部保护系统来打包应用程序并保护其免受攻击者的侵害 但是大多数时候 这些保