From 75f5f85c6305d6f862cfd3dc03537cf1e379be56 Mon Sep 17 00:00:00 2001 From: Vito <3389647+ScalletaZ@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:17:58 +0800 Subject: [PATCH 1/3] add virbox protector for dotnet security solution --- docs/ide/securing-applications.md | 1 + docs/ide/virbox-protector/index.md | 289 ++++++++++++++++++++ docs/ide/virbox-protector/media/image-1.png | Bin 0 -> 24118 bytes docs/ide/virbox-protector/media/image-2.png | Bin 0 -> 16467 bytes docs/ide/virbox-protector/media/image-3.png | Bin 0 -> 45382 bytes 5 files changed, 290 insertions(+) create mode 100644 docs/ide/virbox-protector/index.md create mode 100644 docs/ide/virbox-protector/media/image-1.png create mode 100644 docs/ide/virbox-protector/media/image-2.png create mode 100644 docs/ide/virbox-protector/media/image-3.png diff --git a/docs/ide/securing-applications.md b/docs/ide/securing-applications.md index abeb05cc5e1..7cdb02eb561 100644 --- a/docs/ide/securing-applications.md +++ b/docs/ide/securing-applications.md @@ -28,6 +28,7 @@ Most coding errors that result in security vulnerabilities occur because develop Security is also an important consideration in the build process. A few additional steps can improve the security of a deployed app and help prevent unauthorized reverse engineering, spoofing, or other attacks: +- [Virbox Protector](virbox-protector/index.md) Code Protection/Hardening & App Shielding Solution. For Android, iOS, ARM Linux and Hybrid applications, SDK, Native Library, Data assets and Resource. Protect application and prevent from static and dynamic attack with multi layers secured technology. - [Dotfuscator](dotfuscator/index.md) is free and helps to protect .NET assemblies from reverse-engineering and unauthorized use such as unauthorized debugging. - [Strong-name signing](managing-assembly-and-manifest-signing.md) can be used to uniquely identify software components and prevent name spoofing. diff --git a/docs/ide/virbox-protector/index.md b/docs/ide/virbox-protector/index.md new file mode 100644 index 00000000000..bb592b389b0 --- /dev/null +++ b/docs/ide/virbox-protector/index.md @@ -0,0 +1,289 @@ +# Virbox Protector for .NET applications + +.NET is an open-source and cross-platform development platform to build many types of applications. and widely used to web, mobile, desktop, IoT applications. + +To implement for cross platform execution: Unlikely the traditional high level language compilation process, the C# in .NET project consist of 2 compiling steps: + +With C# compiler, to compile C# to MSIL code first, then with JIT compiler in Runtime, to compile into executable file: exe, dll... and executed in target environment. + +![image-20230103144730454](media/image-1.png) + + + + + +so, with latest decompiler or reverse engineering tools, it is extremely easy to the cracker to decompile .NET project, decompile the IL code to get the original C# code, to further analyze, to understand and modify the operation of the application or program. + +![image-20230103144743623](media/image-2.png) + +[**Virbox Protector**](https://appshield.virbox.com/index.html), use multiple layers encryption technology to protect .NET project in highly security level to defend cracker to decompile, reverse engineering .NET project. + +In general, Virbox Protector supports developer to protect their .NET project in following aspect: + +​ 1. Overall protection and encryption to .NET project: JIT encryption, string encryption, etc. + +​ 2. Runtime protection: Debugging detection, Name of Obfuscation; + +​ 3. Obfuscation/encryption in function/methods level, which to protect those critical method, code logic with following code protection options: Code encryption, obfuscation and most secured of code of virtualization; + +Developer may combine to use those protection technology and balance execution performance, application scenario, integration and build project to design your own protection scheme for your .net project. + +With secured and powerful obfuscator and protector, it is still not easy to developer to complete protection process quickly, developer have to spend lot of time to design and finetone in tailor-made protection scheme, based on each .NET project, platform, environment and security requirement. In this article, we introduce and summarize some of protection experience (configuration, option setting etc.) of [Virbox Protector](https://appshield.virbox.com/index.html) which can be referral to developer when they use Virbox Protector to protect their .NET project. + + + +## Virbox Protector support to protect .NET project in following .NET platform + + + +### Support .NET Platform & Operation Environment + +| .NET platform & Environment | Support or Not | Remarks | +| --------------------------- | --------------- | ------------------------------------------------------------ | +| .NET Framework 2.x ~ 4.x | Yes | Fully support | +| .NET Core 2 | Partial support | end of life of version. | +| .NET Core 3 | Yes | Part of features not available for non windows system | +| .NET 5 ~.NET 7 | Yes | Part of features not available for non windows system | +| Mono Runtime | No | For Unity Engine project, Developer may use and follow the Protector's protection process to the Unity3D projects. | + +### Protection Options & Technical Matrix to .NET Project + +| Option Setting | Compatibility | Remarks | +| ------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------- | +| Compression | Support Windows system only;Not support`In Memory Module`, such as the dll loaded by`Assembly.Load` | | +| JIT Encryption | Support in Window Environment | | +| String of Encryption | Fully Support | | +| Overlay data encryption | Support in Windows Environment | Some of archive/Packer tool will generate the overlay data | +| Detect Debug tool | Fully Support | | +| Name of Obfuscation | Fully Support | | +| **Function/Method protection option** | | | +| [E] Code of Encryption | Fully Support | | +| [M] Code of Obfuscation | Fully Support | | +| [V] Code of Virtualization | Fully Support | | + + + +## Best Practice to .NET protection + +With multiple Obfuscation/Encryption technology, Virbox Protector support developer to design a general protection scheme to protect your .NET project. + +![image-20230103144755646](media/image-3.png) + + + +### General Guide to obfuscate .NET Project + +For those developer who only want to protect/obfuscate their .NET project in general and without special security and protection to some of critical functions/methods, you may follow below process which help you to complete the .NET protection process quickly, which provides general protection to your .NET project. with general protection scheme, Virbox Protector support developer to obfuscate .NET project effectively to defend the decompiling and prevent the normal memory dump. + +For the developer who require highly secured protection scheme to protect .NET project, then you can follow the second way to protect your .NET project. + + + +Here are some recommendation to those developer who want to protect .NET project in general and quickly. + +Protection Scheme: + +| Protection Option | Recommendation Setting | Notes | +| -------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| Compression | it is recommend not select this option | | +| JIT Encryption | Select this option in Windows system | | +| String of Encryption | Select this option if you have sensitive string to hide/encrypt. | | +| Overlay data encryption | Select this option if overlay data exist | Some of archive/packer tool will generate overlay data file. | +| Debugging detection (Anti Debug) | Select the "Debugging detection" feature to one module to each process only, for example to enable debugging detection to main .exe program only);If the module be used to be the SDK which released to third party program to call. then please DO Not to enable this debugging detection feature. | | +| Name of Obfuscation | To "main exe program", Select "Keep the Name of Self defined" to avoid of miss calling functions/methods after name of obfuscation;For "dll files", Select "Obfuscate private member only" | | +| [E] Code of encryption | For Windows project, use on default option (encrypt the entry functions only); For Non Windows project, since it doesn't support JIT encryption, so it is required to select to enable this feature to protect those functions which necessary to protect. | | +| [M] Code of Obfuscation | On default feature, no need to select to enable this feature | | +| [V] Code of Virtualization | On default feature, no need to select to enable this feature. | | + + + +### For those developer who require highly security protection scheme, following protection setting recommended & used in protection process. + + + +Use "**Name of obfuscation**" and use the "**Code of Virtualization**" to protect class name and those critical functions/methods; + +**Self-defined the Name of Obfuscation**: + +This features used to obfuscate to name of space, class, method, usually it may exist calling among the modules each other, so, if you obfuscate the name of functions which has the public attribute, it may failed to find the function/method when call relate functions and cause the calling error , so it is required the developer to self define the name of obfuscation of function. to avoid failed to find functions/method with public attributes. + +"**Assembly merge**" + +For Calling among the modules, developer may use "**Assembly merge**" feature to combine/merge multiple of module/assembly to one assembly and then to protect one assembly only. Virbox protector provides the **Assembly merge** function and support developer to merge the assemly togethers. + +**Assembly Merge** functions can be accessed in the GUI menu -> Tools->Assembly Merge in the Virbox Protector GUI tools, + +**Assembly Merge** function can be available in Virbox Protector CLI tools (virboxprotector_con) also, by adding the option: `-ilmerge`, to merge assembly accordingly. + +**Sample:** + +```shell +# in the sample case, developer will merge the "test.exe" and dependent test.dll together with new assembly: "test.exe" + +virboxprotector_con -ilmerge test.exe test.dll -o merged/test.exe +``` + + + +**Virtualization**: + +For those critical and sensetive functions/methods, such as the critical encryption/dycryption coding logic, it is recommend to use "Code of Virtualization" to protect these fucntions/method. + +Note: + +For the functions/method which use the "Code of Virtualization", the execution performance may be negative impacted., so it is NOT recommend to use the "code of virtualization" to every functions/method, only select the critical function to implement; + +For performance impact, Virbox Protector provides "Performance Analysis" feature to developer to "pre-view" the performance in execution, which can be available in the "Function Option" tabs. + +``` +->Add Function->Analysis +``` + + + +## Automatic Integration + +### Use Virbox Protector CLI tool to integrate to build project + +The on default path of CLI tool of`Virbox Protector`: `virboxprotector_con`: + +```plain +Windows: +C:\Program Files\senseshield\Virbox Protector 3\bin + +Linux: +/usr/share/virboxprotector/bin + +macOS: +/Applications/Virbox Protector 3.app/Contents/MacOS/bin +``` + +### Use the configuration file to integrate to build project + +There are 2 ways to use Virbox Protector CLI tools to build your project: + +With the protection configuration file or Without protection configuration file + +1. **With Configuration file to integrate and build your project** + + Use the Virbox Protector GUI tool to generate the configuration file first and then use the CLI tool to protect your project WITH the configuration generated previously. + + For how to generate the configuration file by use of Virbox GUI, the process is similar to the process to protect the project. More details, pls refer to relate the section of Quick Start Guide to Virbox Protector GUI tool. + + then, you can find the .ssp file in the + + ``` + \protected + ``` + + the sub directory in the output path. then call the CLI tool: + + ``` + virboxprotector_con.exe + ``` + + to protect your project with following command: + +```shell +virboxprotector_con -o +``` + +`virboxprotector_con` will automatically to search the .ssp which to be the configuration file to start the protection. + +2. **Without configuration file to protect project** + + Use Virbox Protector CLI to protect your project without configuration file (.ssp file) + + 2.1 Use and set the option/argument to Virbox Protector CLI tool to protect your project. + + for those developer has rich experience in Virbox Protector protection process, they can use Virbox Protector CLI tool with specified option/argument to protect their project directly. + + 2.2 If no additional option/argument pass in the CLI tool, + + ``` + virboxprotector_con + ``` + + will use the option/argument on default to protect the project. the on default option/argument setting, pls refer CLI user manual. or refer following protection option setting in below + + 2.3 Developer also can use a SDK label to mark those critical function/method, then protect the project. + + + +### Use Command Line Interface to protect .NET apps: Protection Option Setting: + +**Protection Option** + +| Option | CLI Argument | On default value setting | +| ------------------------------------ | ---------------- | ------------------------------------------------------------ | +| Compression | `--pack=` | `0` | +| JIT encryption | `--jit-enc=` | `1` | +| String of encryption | `--str-enc=` | `1` | +| Overlay data encryption | `--overlay-enc=` | `1` | +| Debugging detection | `--detect-dbg=` | `0` | +| Name of Obfuscation | `--rename=` | For exe file, to obfuscate all of name;For DLL file, to obfuscate private name only`1` | +| Keep the rule of name of Obfuscation | `--keep-rules=` | `""` | + + + +**Function Option Setting** + +| Option | CLI Argument setting | +| --------------------------------------- | -------------------------------------------------------- | +| Ignore these function doesn't supported | `--ignore-unsupported=`On default to disable:0) | +| Code of Encryption | `-e` | +| Code of Obfuscation (mutation) | `-m ` | +| Code of Virtualization | `-v` | + + + +Virbox protector support developer to specify the function/method name or use "rule" to protect .NET projects, which to protect the critical functions/method with different kind of protection options: Code of Encryption, Code of obfuscation (Mutation) and Code of Virtualization. + +Use the semicolon: `;` to separate functions, support to use wild card: `*` + +`-m "function1;function2" -v "function3;function4" -e "test*" --ignore-unsupported=1` + + + +### The protection sample of using Virbox Protector CLI tool + +**Protect main program(Obfuscation all of name and enable the anti-debugging features)**: + +```shell +virboxprotector_con test.exe --pack=0 --jit-enc=1 --str-enc=1 --rename=2 --keep-rules="" -detect-dbg=1 -o protected/test.exe +``` + + + +**Protect the dll (obfuscate the private method name):** + +```shell +virboxprotector_con test.dll --pack=0 --jit-enc=1 --str-enc=1 --rename=1 +``` + + + +**Protect dll (Reserve and keep self defined method name and not obfuscate):** + +```shell +virboxprotector_con test.dll --pack=0 --jit-enc=1 --str-enc=1 --rename=2 --keep-rules="MyNamespace.MyClass1.*;MyNamespace.MyClass2.*" +``` + + + +**Protect dll in Non Windows Platform with following option setting:** + +​ Not use JIT encryption; + +​ Encryption to all of method; + +​ Enable the anti-debugging fucntions; + +​ Ignore the functions which not support. + +Note: for the option value settings, pls refer the CLI user manual, there are fully description to Option value setting, usually, value setting to "0" means disable, "1" means enable; + +```shell +virboxprotector_con test.dll --pack=0 --jit-enc=0 --detect-dbg=1 --str-enc=1 --rename=1 -e "*" --ignore-unsupported=1 +``` + diff --git a/docs/ide/virbox-protector/media/image-1.png b/docs/ide/virbox-protector/media/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c629761b6f2658d3d1b8cfcf59eeedf0b9bd6fc8 GIT binary patch literal 24118 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 z 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 Tzu!~>uOLtb^~a_1&tLoxHy-v& literal 0 HcmV?d00001 diff --git a/docs/ide/virbox-protector/media/image-3.png b/docs/ide/virbox-protector/media/image-3.png new file mode 100644 index 0000000000000000000000000000000000000000..f780a5cb1042fba2d6b77ee0ac2334d74b90d58d GIT binary patch literal 45382 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

5iFa%#J}X868pza)GTc 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 Yr3K%dJt%4N{e`&>mRFN2mofYFKU8Q79smFU literal 0 HcmV?d00001 From a2079653bf7790900dce211c0b0bdfd1cb4ef134 Mon Sep 17 00:00:00 2001 From: Vito <3389647+ScalletaZ@users.noreply.github.com> Date: Thu, 16 Jan 2025 15:08:45 +0800 Subject: [PATCH 2/3] add attributes --- docs/ide/virbox-protector/index.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/ide/virbox-protector/index.md b/docs/ide/virbox-protector/index.md index bb592b389b0..3f572abab15 100644 --- a/docs/ide/virbox-protector/index.md +++ b/docs/ide/virbox-protector/index.md @@ -1,3 +1,20 @@ +--- +title: Virbox Protector for .NET applications +ms.date: 01/16/2025 +ms.devlang: dotnet +ms.topic: overview +keywords: Dotnet obfuscator, SenseShield, Virbox, Virbox Protector, protector, obfuscation, .NET, Visual Studio +helpviewer_keywords: +- Virbox Protector +- obfuscation +- protector +description: Protect your .NET applications with Virbox Protector. +author: Vito +ms.author: Vito +manager: Vito +ms.subservice: general-ide +--- + # Virbox Protector for .NET applications .NET is an open-source and cross-platform development platform to build many types of applications. and widely used to web, mobile, desktop, IoT applications. From 988648a5b8bd66bf0855314ac080c658502c7dd5 Mon Sep 17 00:00:00 2001 From: Vito <3389647+ScalletaZ@users.noreply.github.com> Date: Thu, 16 Jan 2025 15:18:11 +0800 Subject: [PATCH 3/3] add to toc.yml --- docs/toc.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/toc.yml b/docs/toc.yml index bf0ac094b50..d85f206e3fb 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -1266,6 +1266,8 @@ href: ide/exempt-visual-studio-from-wip.md - name: Federal Information Processing Standard (FIPS) href: ide/fips-support-visual-studio.md + - name: Virbox Protector + href: ide/virbox-protector/index.md - name: Dotfuscator Community href: ide/dotfuscator/index.md - name: Resources