整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

代码混淆无需大价钱,Code Virtualizer轻松搞定

何创建创新性应用程序,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可以生成多种虚拟机,每种虚拟机具有不同的指令集。这意味着可以将特定的Intel x86指令块转换为每台计算机的不同指令集,从而防止攻击者在从x86指令转换后识别任何生成的虚拟操作码。下图表示如何将Intel x86指令块转换为不同类型的虚拟操作码,这些虚拟操作码可以由不同的虚拟机模拟。

当攻击者尝试反编译受Code Virtualizer保护的代码块时,他将找不到原始的x86指令。相反,他将找到一个全新的指令集,该指令集将不会被他或其他任何特殊的反编译器所识别。这将迫使攻击者进行极其艰巨的工作,以确定每个操作码的执行方式以及特定虚拟机如何为每个受保护的应用程序工作。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。

Java开发工具中,有一种是Java混淆器,Java Obfuscator是其中之一,此工具会打乱 Java 源代码,使其非常难以理解或逆向工程(示例)。这为必须交付给客户的源代码知识产权提供了重要的保护,并防止对 Java 类文件对象代码进行过于简单的反汇编。您只需要公开您的类提供给客户的公共 API;您所有的内部 API 和类名都变得高深莫测。它是 SD 的Source Code Obfuscators 家族的一员。

Java 混淆器特性

在不影响功能的情况下用无意义的名称替换标识符

用户可定义的保留名称列表

提供的 Java JDK 标识符的保留名称的预定义列表

剥离注释并删除大部分源代码结构

用户可定义的评论过滤,以保护版权和公共文档

无需更改您的 Java 编译或执行过程或环境

在混淆之前整齐地格式化 Java 源代码以帮助开发的选项。

以 ASCII、“欧洲 ASCII” (ISO8859-1)、Unicode 或多种其他字符编码中的任何一种输出编码。

命令行和 GUI 界面

以上就是关于“Java代码混淆工具:Java Obfuscator”的介绍

款顶级JavaScript混淆工具测评:JScrambler和JShaman

出于JavaScript代码安全需求,JavaScript混淆已经被广泛使用。在这个领域中,有免费的小工具,也有专业、商业级的产品。

商业产品在功能强度、保护效果、稳定性等各方面都是全优于免费小工具的。

本文将对两款专业、商业JavaScript混淆工具进行多角度测评。

这两款工具分别是葡萄牙的JScrambler和中国的JShaman,在行业中都是知名产品、是业内顶级的JavaScript混淆工具。

注:JShaman有中文和英文两个不同版本,本次测评使用的是英文版。

产品形态

两者都是网站平台形式,在浏览器中打开就能使用。

接口

都有Web API接口,JavaScript、Python、Java、c#等语言都可以调用,可以集成在自己的产品中使用。

操作便捷性

JScrambler使用较复杂,需要注册帐户、登录进入后台才能使用,JShaman则方便很多,无需注册、直接使用。

免费试用

两个产品都提供有限制的免费试用,JScrambler混淆后的代码有使用时间限制,JShaman是对试用JavaScript代码体积有限制。

功能选项

JScrambler和JShaman都有20多项混淆功能可使用,如:数值加密、平展控制流、JSON加密、变量名混淆、正则表达式加密、字符串加密等等。也就意味着,两者对代码的保护强度应该接近,因为混淆选项数量接近。

对于各功能的说明,JShaman是采用例程的方式展示,而JScrambler是文字说明。对于不熟悉混淆技术的使用者而言,JShaman的例程方式更直观,可以让使用者知道各功能启用后对代码的保护效果。而JScrambler的文字介绍则较抽象。

JScrambler的某些选项可进行高级配置,比变量名混淆可设定具体的变量名特征,而JShaman未提供这种精细化选项。

混淆效果

如前面所述,两者很多功能选项相似,但也有差别,而且相同功能各自的算法想必也是不同的。所以,相同的JavaScript代码混淆到的结果自然是不同,各有各的结果。混淆后的代码看起来都足够复杂,都可以进行复制和下载。

报表

报表功能用于展示混淆时进行了哪些操作,可让操作者清楚混淆操作对代码进行了哪些方面的加强和保护。

JShaman的报表简洁明了,在混淆完成后会立即显示。JScrambler的报表是从历史操作记录中查看,显示的内容更详细。

两者都会显示进行各项混淆时操作了多少节点(注:混淆时都是将JavaScript转化为AST抽象语法树,对语法树进行修改,所以此处会显示修改的AST节点数量)。

JScrambler会显示各项操作使代码增大了多少,而JShaman会显示混淆前代码整体有多少个节点,混淆后又变成了多少节点,方式有差别,所表达的含义相同。

总结

两者功能相似、混淆效果接近,都是强大、专业的JavaScript混淆工具。

直观差别主要在UI、操作、报表三方面。

JScrambler精细且复杂、商业味道更浓厚。

JShaman界面优美、操作简洁、方便易用。