提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
一款保护.NET软件代码的混淆工具
标签:代码混淆开发商: RustemSoft
当前版本: v6.0.02
产品类型:软件
产品功能:加密/解密
平台语言:英文
开源水平:不提供源码
本产品的分类与介绍仅供参考,具体以商家网站介绍为准,如有疑问请来电 023-68661681 咨询。
RustemSoft推出Skater .NET Obfuscator,一款保护.NET软件代码的混淆工具。其具备所有软件保护技术及混淆算法。
RustemSoft proposes Skater .NET Obfuscator, an obfuscation tool for .NET code protection. It implements all known software protection techniques and obfuscation algorithms.
* 关于本产品的分类与介绍仅供参考,精准产品资料以官网介绍为准,如需购买请先行测试。
Skater .NET Obfuscator适合那些希望周期性地混淆.NET产品代码的用户。RustemSoft内部也在使用Skater,以保证所有RustemSoft .NET可执行文件和程序集的安全。命令行版本(运行在批量文件模式下)将更方便升级您的预定产品。先在一个图形用户界面版本中为一个程序集分配一些配置,这些配置将在批量混淆文件时使用。
Skater .NET Obfuscator功能介绍 | Skater .NET Obfuscator示例 | Skater .NET Obfuscator各种版本之间的区别
阻止逆向工程。
混淆后的应用程序一般不能反编译。
可处理任何.NET应用程序、可执行文件和程序集。
可加密常量字符串。
兼容于任何.NET框架(1.0, 1.1, 2.0, 3.0, and 3.5)。
流量控制混淆可防范反编译器和反混淆器。
可扰乱类名,方法名和字段名等。
.NET授权功能。
为小的.NET应用程序提供.NET代码扩展保护。
在一个dll或者exe文件中加入配置链接、链接器单元和.NET程序集。
应用程序漏洞、偷窃知识产权和收入损失是现今公司面临的最大威胁。根据商业软件联盟(Business Software Alliance)的数据,世界范围内,软件盗版率达40%。
代码混淆可有效地防止未授权的逆向工程。
任何软件保护技术的主要功能是:检测盗版行为(破解密码或者篡改软件);这些破解密码和篡改软件的行为将使被保护的软件降级到无检测状态,软件保护技术还要防止这种降级情况的发生。
主要的混淆技术:
混淆私有和公共变量的名字
扰乱类、方法、变量和其他程序集的名字。名字被混淆后,难以对程序集代码实施反向工程。Skater的一些设置可生成防止反编译的名字。
字符串加密
字符串加密功能可对字符串数据类型值进行选择加密。您也可对所有的字符串加密。可以混淆某些特殊的字符串。可以选择某种加密方法对字符串加密,只有一些特别的字符串将被加密或混淆。
控制流混淆
可阻挡反编译器和反混淆器。通过打乱.NET方式(功能和程序)代码,控制流混淆可阻止逆向工程。通过流量控制混淆算法,在程序集中的IL代码将被打乱,在保护代码时还会插入诱饵指示。控制流混淆方法实际上是将程序集转换为“管道代码”,黑客和反编译工具更难入侵。
先写一段简单的命令行应用程序,然后混淆它。下面两段程序分别是VB.NET 和 C# 版的"Hello World!"程序(显示字符串"Hello World!")。实际上,除了显示"Hello World!",它还会显示今天的日期和当下的时间。为了弄清混淆后会有何不同,我们还会加入两个私有变量。
VB .NET Imports System |
C# using System; |
你可以看到四个高亮的成员名。两个是私有变量名:today和str. Module1是类名。Main是一个简单类中的唯一一个方法(method)名。现在我们开始在.NET环境中编译这些简单的代码。编译后,我们可以得到ConsoleApplication1.exe可执行文件。这个可执行文件中包含什么呢?为什么人们认为需要隐藏了.NET中的东西呢?
.NET Framework SDK中有一个反汇编器ILDasm,通过ILDasm,您可将.NET编译语言反编译为IL(.NET框架中的中间语言)程序集语言形式。在命令行中运行ILDasm,您就可以反编译ConsoleApplication1.exe。下图就是反编译后的代码。
IL .class private auto ansi sealed beforefieldinit Module1 |
这些IL脚本是不是很清晰,可以读懂呢?也许,对于我们这些菜鸟,这些IL代码确实难懂。但是对于那些真正懂得IL语言的技术专家,这些.NET源程序是小菜一碟。通过一些更高级的反编译器将源代码转换为其他语言,这样更多人能读懂您的源代码。更高级的反编译器可以将.NET程序集直接反编译为高级语言,如C#, VB .NET, 或者 C++.
现在,我们通过Skater .NET Obfuscator混淆这段ConsoleApplication1.exe可执行文件。在Skater Obfuscator中打开这个exe文件,进入用户界面中的Options,然后选择在'Naming Conventions'下的'Alpha-Numeric characters'。选择所有混淆模式下的私人和公共成员。
当您运行混淆后的ConsoleApplication1.exe时,它的运行结果是一样的。让我们看看混淆后,这个简单的程序里发生了什么变化。我们需要再次在ILDasm.exe中运行这个被混淆后的可执行文件(ConsoleApplication1.exe),然后我们可以得到下面IL脚本。
IL .class private auto ansi sealed beforefieldinit '0AAAA' |
Skater .NET Obfuscator通过阿拉伯数字取代成员名,这使得代码更难理解。但这没什么了不起,每种混淆器都可以做到。每个人都可以用不同的阿拉伯数字取代名称。ILasm.exe是另外一款.NET Framework SDK编译器,可以将IL代码编译成可执行文件代码。通过它,我们可以将被混淆的IL代码反编译成可执行文件。Skater .NET Obfuscator可以生成无法反编译的可执行文件。下面是IL脚本。
IL .class private auto ansi sealed beforefieldinit '?' |
可以看到,所有的成员名都被'?'代替。很明显,上面的IL代码无法编译,即使编译成了可执行文件也将无法正常运行。通过Skater .NET Obfuscator中的一些特殊设置,很容易得到这样的IL代码。只需进入混淆器界面中的Options,在'Naming Conventions'.下选择'?' characters即可。
Skater .NET Obfuscator通过改变字节码,将那些有意义的方式名(比如Main())用隐藏名(比如'?'())取代。这些新名也称为乱码名。虽然反编译器还是可以将混淆后的字节代码反向转换,但是这些没有意义的乱码名极大地降低了新生成的源程序代码的价值,而且代码很难读懂。这些乱码名还有一个好处,当长的名字被简短的名字代替时,编译代码的长度也变短了。
混淆成员名只是.NET程序集混淆过程中的第一步。为了更好的保护您的.NET应用程序,您还要使用Skater .NET Obfuscator中的其他功能和算法。
功能 | 标准版 | 专业版 | 终极版 | ||||||||||||
用字母和字符混淆私有变量名 | √ | √ | √ | ||||||||||||
用不可读/不可编辑的字符混淆私有变量名 | √ | √ | √ | ||||||||||||
混淆公共成员名 | √ | √ | √ | ||||||||||||
字符串值加密 | √ | √ | √ | ||||||||||||
用加密技术对字符串值加密 | √ | √ | |||||||||||||
控制流混淆 | √ | √ | |||||||||||||
.NET 配置链接 | √ | √ | |||||||||||||
.NET 授权功能: .NET授权界面 | √ | ||||||||||||||
.NET授权功能: .NET授权应用程序配置 | √ | ||||||||||||||
代码扩展 | √ | ||||||||||||||
使用.NET Cryptor | √ | √ | √ | ||||||||||||
命令行界面 | √ | √ | √ | ||||||||||||
提供六个月的技术支持和版本升级 | √ | √ | √ |
.NET代码保护可以防止.NET安装源代码进行再编译(没有改变其功能性),并隐藏.NET代码的主要部分。对于需要利用.NET代码保护功能的.NET程序开发者,标准版是一实惠的解决方案。基于标准版,软件开发者可以:
名称混淆
字符串加密
专业版除了具有标准版的功能外,还增加了字符串加密、控制流混淆和.NET链接程序集功能。
终极版为软件开发者提供混淆器的所有功能。除了标准版和专业版的功能外,终极版还提供代码扩展和.NET应用程序授权功能。
If you would like periodically obfuscate your .NET products the Skater .NET Obfuscator is for you. RustemSoft is using the Skater for internal needs securing all RustemSoft .NET executables and assemblies. Its command-line version running in batch mode is much useful for your scheduled products updates. You have to assign settings for an assembly in GUI version first. Then the batch obfuscate task will use the settings.
Main features of Skater .NET Obfuscator
Application vulnerabilities, Intellectual Property theft and revenue loss are among the most serious risks facing companies today. According to Business Software Alliance statistics, four out of every ten software programs is pirated in software business, world wide.
Code obfuscation is a form of software protection against unauthorized reverse-engineering.
The chief functions of any software protection technique can be determined as detection of pirate attempts to decipher or tamper software, protection against such attempts and alteration of software to ensure that it functionality degrades in an undetectable manner if the protection fails.
Cardinal obfuscation techniques:
Private and Public members names obfuscation.
It scrambles names of classes, methods, variables, and other assembly members. It makes assembly code reverse engineering much harder by obfuscating names. Some Skater settings allow to generated names that will prevent recompilation.
String encryption.
The string encryption function allows you to select literal values of string data type to be encrypted. You may select all strings to be encrypted. Also you may mark some specific strings to obfuscate. You have choice to apply a cryptography method for the string encryption. Only specified strings will be encrypted /obfuscated.
Control Flow obfuscation intended to stop decompilers and deobfuscators from functioning correctly.
Control Flow obfuscation subdues reverse engineering by scrambling .NET methods (functions and procedures) code. The Control Flow obfuscation algorithm distorts and reorders the IL code in the assembly, inserting bait branch instructions while preserving code semantics. This obfuscating essentially converts assembly method implementations into "spaghetti code", making interpretation by human hackers and decompiler tools much more difficult.
Example
Let's try to write a simple command-line application and then obfuscate it. The following console programs are the VB.NET and C# version of the "Hello World!" program, which displays the string "Hello World!" Actually it is not the traditional "Hello World!" and it displays in addition today's date and current time. We have added couple of private variables to see what happen when we obfuscate them.
VB .NET
Imports System |
C#
using System; |
You can see four highlighted members' names. Two are private variables' names today and str. Module1 is name of the class. Main is name of method that is single method in the simple class.
Now we are ready to compile the simple code in .NET environment. We may get ConsoleApplication1.exe executable file as a result of compilation. What is inside in the executable? Why do people say we need to hide our .NET stuff?
The .NET Framework SDK ships with a disassembler utility called ILDasm that allows you to decompile .NET assemblies into IL (Intermediate Language) Assembly Language statements. To decompile the ConsoleApplication1.exe file start ILDasm on the command line. Take a look what we got after the decompilation:
IL
.class private auto ansi sealed beforefieldinit Module1 |
Everything looks pretty obvious and understandable in the IL script. Is not it? Right, it is hard to figure out the IL code for us more mortals. So if you are now guessing your .NET source code will be accessible only to a small circle of technical folks who actually know IL Assembly Language, think again. You can take this step further and actually recreate the source code by using some much sophisticated decompilers. These decompilation tools can decompile a .NET assembly directly back to a high level language like C#, VB .NET, or C++.
Ok, we are ready to obfuscate the sample ConsoleApplication1.exe executable by using Skater .NET Obfuscator. Open the exe file in Skater Obfuscator. In the Obfuscator interface go to Options tab and select 'Alpha-Numeric characters' under 'Naming Conventions'. Choose all Private and all Public members obfuscation mode.
When you run the obfuscated ConsoleApplication1.exe it produces the same result. Take a look what changed inside the simple program. We need to run the ILDasm.exe again against the new obfuscated executable and it will give us the following IL script:
IL
.class private auto ansi sealed beforefieldinit '0AAAA' |
Skater .NET Obfuscator just replaced member names with alpha-numeric combinations that makes harder to understand the code. However it is not so big trick and every Obfuscator can do that. Everyone can replace the alpha-numeric char combinations with some eye-friendly names. Moreover, by using ILasm.exe (one more .NET Framework SDK assembler utility that allows you to compile IL code back into an executable) we can easily recompile the obfuscated IL output and it will work without problems.
Skater .NET Obfuscator can generate a non-recompilable executables. See the IL script below.
IL
.class private auto ansi sealed beforefieldinit '?' |
Sure, the presented above IL code can not be compiled or the compiled executable will not work well. As you can see all member names has the same single '?' character representation. We can get the result by using Skater .NET Obfuscator special settings. In the Obfuscator interface go to Options tab and select '?' characters under 'Naming Conventions'.
Skater .NET Obfuscator changes the bytecodes so that meaningful method names, such as Main(), could be presented as a cryptic names such as '?'(). This renaming is also known as name mangling. Although decompilers can still reverse-engineer obfuscated bytecodes, the meaningless names greatly reduce the value of the generated source code and make the code not understandable. The name mangling also has an interesting side effect: after obfuscation, when wordy, descriptive names are converted to shorter, simpler names, the total size of the compiled code shrinks.
The member names obfuscation is the very first essential step of .NET assembly obfuscation. You need to apply other Skater .NET Obfuscator methods and algorithms to better secure your .NET apps.
Skater .NET obfuscator is available in several editions presented in the table below:
Features | Standard Edition | Professional Edition | Ultimate Edition | ||||||||||||
Private member names obfuscation with alpha-numeric chars only | √ | √ | √ | ||||||||||||
Private member names obfuscation with unreadable/non-recompilable chars | √ | √ | √ | ||||||||||||
Public member names obfuscation | √ | √ | √ | ||||||||||||
String values encryption | √ | √ | √ | ||||||||||||
String values encryption with cryptography | √ | √ | |||||||||||||
Control Flow methods obfuscation | √ | √ | |||||||||||||
.NET assemblies linking | √ | √ | |||||||||||||
.NET licensing features: .NET Licenser Interface | √ | ||||||||||||||
.NET licensing features: .NET Licenser API assembly | √ | ||||||||||||||
Code Extension | √ | ||||||||||||||
.NET Cryptor utility | √ | √ | √ | ||||||||||||
Command-line interface | √ | √ | √ | ||||||||||||
6 months tech support and version upgrade | √ | √ | √ |
The Standard Edition is an economical solution for .NET developers who need to utilize the .NET code protection that will prevent .NET assembly source code recompilation without changing its functionality and will hide the main points of your .NET code. With the Standard Edition, developers can do:
In addition to options presented in Standard Edition by using the Professional Edition you will be able to implement Strings cryptography, Control Flow obfuscation, and .NET assembly linking.
Skater .NET obfuscator Ultimate Edition is a complete solution for developers who want to use the full gamma of obfuscator's features. In addition to options presented in Standard Edition and Professional Edition by using the Ultimate Edition you will be able to implement Code Extension, and .NET application licensing.
更新时间:2017-04-07 15:43:24.000 | 录入时间:2010-01-21 10:19:05.000 | 责任编辑:
一个强大专业的系统 用于软件压缩和加密保护
JEB反编译和调试二进制代码和混淆的应用程序
Virbox Protector一款全面的数字版权保护与软件安全解决方案。
.NET Reactor一款为.NET Framework编写的软件的功能强大的代码保护和软件许可系统。
PreEmptive Protection DotfuscatorDotfuscator是一款.NET混淆器和压缩器,防止您的应用程序被反编译。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢