Spices.Obfuscator is a .Net obfuscator, product of well known Spices.Net products family.
Spices.Obfuscator is a .Net code protection and optimization tool that offers the wide range of technologies to completely protect your .Net code and secure your data. Spices.Obfuscator rebuilds your .Net assemblies to the new format that is impossible to disassemble, decompile, impossible to understand.
Spices.Obfuscator completely integrated into Spices.Net and distributed as Visual Studio Integrated package (Spices.VSIP.Obfuscator), stand alone GUI and console version.
One of the key features of Microsoft .NET is that all its languages (c#, VB.Net, managed c++, J#, MSIL) generate assemblies containing CPU-independent instructions, or so called Microsoft Intermediate Language instructions. .NET assemblies also include metadata that describe types, members, and code references from other assemblies. At program runtime, these instructions are converted to CPU-specific language by the just-in-time compiler.
This architecture provides developers for several benefits: it makes possible easy interoperability for code written in differing languages, and simplifies assemblies interlinks. However, there is one major drawback as well: the data contained in assemblies provide enough information to recover the original code. This makes it difficult to protect the intellectual property in an application, which source code can be read by anyone. Developers who have spent months or years working on complex algorithms or workarounds for bugs, often prefer to have their methods remain secret from others.
This is where obfuscation can help. Its purpose is to transform a .NET assembly without affecting its functionality, so that it becomes difficult or impossible to be decomplied. Code obfuscation of .NET assemblies helps achieve four main goals:
Obfuscation significantly complicates decompilation and decreases its efficiency.
Spices.Obfuscator stops ILDASM/ILASM roundtrip.
Spices.Obfuscator removes all string data from your code to hidden and safe place and makes impossible to extract any string info from protected assembly.
Obfuscation breaks down structures that make programs modular, surprisingly reducing program code size in many cases. For example, reducing metadata size and optimizing the symbol tables.
The risk with tampering is that strong name of your assembly can be cracked and resigned by another key.
Assemblies generated by Spices.Obfuscator is tamper resistant. Our patent pending technology allows generating assemblies protected from a recently emerged spoofing technique: modifying or removing strong-names.
The assembly won't work correctly with a modified strong-name even if the new strong-name is recognized by .net loader as a valid one.
Hackers have learned to crack strong-names. Having modified the assembly, a hacker (either leaves it unsigned, or) re-signs it with his or her own strong-name key. With the our tamper-proof technology, the assembly won't work correctly neither if not signed at all, nor if signed by a strong-name key which differs from the assembly originator's one. If your assembly does not contain any string information, you can check the assembly validity by performing an easy testing procedure for any of the use strings. Tamper-proof technology encrypts string and binary resources (user strings, binary arrays used in the code) to protect and secure resources from prying eyes and provide tamper-proof mechanisms that prevent assembly from unauthorized copying, tampering, spoofing, and malicious code injection.
Resource Protection protects managed resources by encrypted resource names so that they can't be determined if the assembly is altered.
Software watermarking can be used to an additional hidden identification or marking a given application with specific information, such as its buyer and copyright. This information can help reveal a forgery of an application and identify its owner, the distribution region, the OEM distributor and the serial number. A watermark is incorporated into an assembly in such a way that it disappears with the application after decompilation and disassembly.
During obfuscation a .NET assembly is transformed into an equivalent .NET assembly that is more difficult to understand when decompiled. Some obfuscators use ILDASM to disassmble the assembly and then transform the original MSIL, and then use ILASM to reassemble the result. Wide variety of different techniques is applied to the assemlies to make the disassembled source code more difficult to understand. Below given the brief outline of the most effective of them.
The most essential method of obfuscation. Entities are all the named objects in the .NET assembly: namespaces, classes, methods, properties, fields, and enums. As everybody knows, it's a good practice to give the entities meaningful names and so make the code easier to read and debug. When you build a .NET assembly, the entity names from your source code are preserved in the assembly's metadata, and so provide clues for those trying to understand the code. During the process of entity renaming, all the entities are renamed to short, nonsensical, or obscure names, so making code very hard to read, but still operational. Overloaded renaming, in addition, takes advantage of .NET specifics, giving same names to more than one entity as long as this is allowed by .NET overloading rules. Method return type can also be overloaded on MSIL level, making the assembly code absolutely impossible to decompile.
This technique lets developer decide what exactly should be obfuscated and supports for repeatable obfuscation that is well-documented directly in the source code.
This method modifies source code so that it becomes logically harder to understand, while remaining logically equivalent. read more...
This method replaces bodies of untouched methods with anonymized stubs. read more...
When this approach is used, the entire source code is evaluated to determine whether there are any methods that are actually unused, and if so, such members are removed from the assembly. This approach also lets optimize application size.
String constants and literal strings in your .NET source code appear unchanged in your compiled .NET assemblies. At the obfuscation stage, they are encrypted and decryption routine is added into the assembly to be then called at runtime to return the original string values.
ILDASM is the MSIL disassembler that comes with.NET Framework SDK. The breaking technique is based on injecting a piece of code into assembly that leads ILDASM to crash and inability to handle the assembly.
Feature1/Product | Spices.VSIP.Obfuscator | Spices.Obfuscator | Spices.Obfuscator Console |
---|---|---|---|
Include Console (command line) | X | X | X |
Standalone Spices.Net | X | X | |
Deep MS Visual Studio Integration (2003, 2005, 2008) | X | ||
MSBuild integration | X | ||
NAnt integration | X | X | |
Spices.CodeAnonymizer (patent pending) | X | X | X |
Tamper proof (patent pending) | X | X | X |
Spices.Optimizer | X | X | X |
Strings encryption | X | X | X |
Single Assembly obfuscation | X | X | X |
Automation | X | ||
Spices.Project support | X | X | X |
Spices.Solution support | X | X | X |
Obfuscation Events | X | X | X2 |
1 Complete list of Spices.Obfuscator features you can find here. 2 Supported in case of Spices.Project or Spices.Solution obfuscation. |
License | Description |
---|---|
Single | Allows to use product on a single machine, or on desktop/laptop, work/home configutations (you can install and use product on your desktop and laptop or at work and home). It doesn't allows to use product on a build machine/server. |
Team Pack | Allows to use product on up to 5 developer machines and/or 1 build machine/server. |
Enterprise | Allows to use on unlimited number of developer machines and build machines/servers in one physical enterprise. |
교환 및 반품이 가능한 경우
- 상품을 공급 받으신 날로부터 7일이내 단, 가전제품의
경우 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우에는 교환/반품이 불가능합니다.
- 공급받으신 상품 및 용역의 내용이 표시.광고 내용과
다르거나 다르게 이행된 경우에는 공급받은 날로부터 3월이내, 그사실을 알게 된 날로부터 30일이내
교환 및 반품이 불가능한 경우
- ESD(Electronic Software Distribution), 이메일로 설치key, 설치파일 또는 사용증서로 납품되는 제품의 경우는 제품 자체에 심각한 문제가 있는 경우를 제외하고는
반품이 불가 합니다.
- 고객님의 책임 있는 사유로 상품등이 멸실 또는 훼손된 경우. 단, 상품의 내용을 확인하기 위하여
포장 등을 훼손한 경우는 제외
- 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우
(예 : 가전제품, 식품, 음반 등, 단 액정화면이 부착된 노트북, LCD모니터, 디지털 카메라 등의 불량화소에
따른 반품/교환은 제조사 기준에 따릅니다.)
- 고객님의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 단, 화장품등의 경우 시용제품을
제공한 경우에 한 합니다.
- 시간의 경과에 의하여 재판매가 곤란할 정도로 상품등의 가치가 현저히 감소한 경우
- 복제가 가능한 상품등의 포장을 훼손한 경우
(자세한 내용은 고객만족센터 Q&A게시판 또는 E-MAIL상담을 이용해 주시기 바랍니다.)
※ 고객님의 마음이 바뀌어 교환, 반품을 하실 경우 상품반송 비용은 고객님께서 부담하셔야 합니다.
(색상 교환, 사이즈 교환 등 포함)