最新版 PreEmptive Dotfuscator Professional 7.1.3 更新於 2024/9/11
PreEmptive 是一家受信賴的全球領先者,提供桌面、移動、雲端和物聯網應用程式的保護工具。我們幫助組織使其應用程式更具抵抗和抗干擾能力,保護知識產權、敏感數據和收入。
PreEmptive Dotfuscator 是一種針對.NET應用程式的保護工具,提供多層保護:多種混淆形式(重新命名、字串加密、控制流程等)以及主動運行時檢查(干擾、除錯、根權限等)
應用程式保護是一個複雜的問題
基本的重新命名混淆已經不足夠。PreEmptive Protection Dotfuscator for .NET 提供多層保護:多種混淆形式(重新命名、字串加密、控制流程等等)以及主動運行時檢查(干擾、除錯、根權限等等)。但這不僅僅是關於保護——我們設計和測試所有這些保護層,以確保它們在運行時平台進化時不會損壞您的應用程式。我們還會不斷監控攻擊者使用的工具,並更新我們的保護措施以對抗他們的變化。使用這些分層保護攻擊應用程式變得幾乎不可能——每次攻擊者嘗試攻擊保護的一個層級時,另一個層級就在那裡,阻止他們。
RENAMING
Renaming obfuscation alters the names of methods, variables, etc., making source code more difficult to understand. Dotfuscator uses a deeper form of obfuscation, developed for Dotfuscator and patented by PreEmptive Solutions, called Overload Induction™. Instead of substituting one new name for each old name, Overload Induction renames as many methods as possible to the same name. After this deep obfuscation, the logic, while not destroyed, is beyond comprehension. The following simple example illustrates the power of the Overload Induction technique:
Original C# Code Before Obfuscation | Reverse-Engineered C# Code After Overload Induction Obfuscation |
private void CalcPayroll (SpecialList employeeGroup) { while(employeeGroup.HasMore()) { employee = employeeGroup.GetNext(true); employee.UpdateSalary(); DistributeCheck(employee); } } |
private void a(a b) { while (b.a()) { a = b.a(true); a.a(); a(a); } } |
CONTROL FLOW
Traditional control flow obfuscation introduces false conditional statements and other misleading constructs in order to confuse and break decompilers. This process synthesizes branching, conditional, and iterative constructs that produce valid forward (executable) logic, but yield non-deterministic semantic results when decompilation is attempted. Control Flow obfuscation produces spaghetti logic that can be very difficult for a cracker to analyze.
Dotfuscator employs advanced control flow obfuscation. In addition to adding code constructs, Dotfuscator works by destroying the code patterns that decompilers use to recreate source code. The end result is code that is semantically equivalent to the original but contains no clues as to how the code was originally written. Even if highly advanced decompilers are developed, their output will be guesswork.
Original C# Before Obfuscation | Reverse-Engineered C# After Control Flow Obfuscation |
public int CompareTo(Object o) { int n = occurrences – ((WordOccurrence)o).occurrences; if (n == 0) { n = String.Compare(word,((WordOccurrence)o).word); } return(n); } |
public virtual int _a(Object A_0) { |
STRING ENCRYPTION
Dotfuscator allows you to hide user strings that are present in your assembly. A common attacker technique is to locate critical code sections by looking for string references inside the binary. For example, if your application is time locked, it may display a message when the timeout expires. Attackers search for this message inside the disassembled or decompiled output and chances are when they find it, they will be very close to your sensitive time lock algorithm.
Dotfuscator addresses this problem by allowing you to encrypt strings in these sensitive parts of your application, providing an effective barrier against this type of attack.
Since string encryption incurs a slight runtime penalty no string encryption is performed except on the parts of the application that you specify.
WATERMARKING
Watermarking helps track unauthorized copies of your software back to the source by embedding data such as copyright information or unique identification numbers into a .NET application without impacting its runtime behavior. Dotfuscator’s watermarking algorithm does not increase the size of your application, nor does it introduce extra metadata that could break your application.
PRUNING – UNUSED METHOD REMOVAL
Small applications download faster, install faster, load faster and run faster. Dotfuscator’s pruning feature statically analyzes your code to find the unused types, methods, and fields, and removes them. Dotfuscator also removes debug information and non-essential metadata from a MSIL file as it processes it, making the application smaller and reducing the data available to an attacker.
LINKING – ASSEMBLY MERGING
Dotfuscator can combine multiple input assemblies into one or more output assemblies. Assembly linking can be used to make your application even smaller, especially when used with renaming and pruning, and can simplify deployment scenarios.
For example, if you have input assemblies A, B, C, D, and E, you can link assemblies A, B, and C and name the result F. At the same time, you can also link D and E and name the result G. The only rule is that you can’t link the same input assembly into multiple output assemblies.
TAMPER DETECTION & DEFENSE
Dotfuscator injects code that verifies your application’s integrity at runtime. If it detects tampering, it can shut down the application, invoke random crashes (to disguise that the crash was the result of a tamper check), or perform any other custom action.
DEBUG DETECTION & DEFENSE USING CHECKS
Checks are prebuilt validations Dotfuscator can inject into your .NET apps. Your apps will then be able to detect unauthorized use, like debugging or tampering. Despite the name, Checks do more than just detect these states; they can also react in pre-specified ways, such as by exiting the app. Checks can also call into application code, allowing for custom behavior based on the Check’s result. These reporting and response features are configurable per-Check, so all your apps can detect unauthorized uses in the same way, but each app can respond to that detection differently.
SHELF LIFE
Shelf Life is an application inventory management function that allows you to embed expiration, or de-activation, and notification logic into an application. Dotfuscator injects code that reacts to application expiration by exiting the application and/or sending a message. This feature is particularly helpful with beta or evaluation applications. Users can schedule an application’s expiration/de-activation for a specific date and optionally issue warnings to users that the application will expire/de-activate in a specific number of days.
ROOT CHECK FOR XAMARIN.ANDROID
Rooted devices are an important security concern for your Android apps. Dotfuscator can detect when an app is running on a rooted device (offline or on a network) and users can abort the session, quarantine the app, and/or report the incident.
Compare Dotfuscator Editions
Community Baseline obfuscation and runtime protection checks. |
Professional Our flagship, enterprise-ready application hardening tool for maximizing protection & security. |
|
License Type | ||
Personal Use | V | V |
Commercial Use | V | |
Protection / Obfuscation | ||
Cross Assembly Renaming | V | V |
Renaming Schemes | V | V |
WPF XAML Renaming | V | V |
UWP XAML Renaming | V | V |
Xamarin.Forms XAML Renaming | V | V |
Randomized Renaming | V | |
Renaming Prefix | V | |
Enhanced Overload Induction | V | |
Incremental Obfuscation | V | |
HTML Renaming Report | V | |
Control Flow | V | |
String Encryption | V | |
Watermarking | V | |
Build Integrations | ||
Command Line | V | V |
MSBuild (.NET Standard) | V | |
Visual Studio | V | |
Visual Studio for Mac | V | |
Azure DevOps | V | V |
App Center | V | |
Windows | V | V |
Mac | V | |
Linux | V | |
User Interface | ||
Standalone UI | V | V |
Command Line | V | V |
MSBuild (.NET Standard) | V | |
Supported Application Types | ||
ASP.NET | V | V |
WPF | V | V |
SQL CLR Applications | V | V |
Xamarin | V | V |
MAUI | V | |
Mono | V | V |
.NET Core | V* | V* |
.NET Standard Library | V | V |
UWP | V | |
Satellite Assembly Support | V | |
Integrated ClickOnce | V | |
Managed C++ (Mixed Mode) Assembly Support | V | |
Build / Packaging | ||
Directory Wildcard | V | V |
User definable dependent assembly search path | V | V |
Strong Named Assembly Resigning | V | |
Pre and Post Build Events | V | |
Debugging Support | ||
Stack Trace Translation | V | V |
PDB Round Tripping | V | V |
Deployment Optimizations | ||
Assembly Linking | V | |
HTML/XML Removal Report | V | |
Unused Code Removal | V | |
Const Removal | V | |
Active Runtime Protection: Anti-Debug | ||
Exit Application Action | V | V |
Custom Action | V | V |
Debugger Reporting via Custom Action | V | V |
Additional Actions | V | |
Probabilistic Actions | V | |
Active Runtime Protection: Anti-Tamper | ||
Exit Application Action | V | V |
Custom Action | V | V |
Tamper Reporting via Custom Action | V | V |
Xamarin.Android Support | V | |
Additional Actions | V | |
Probabilistic Actions | V | |
Active Runtime Protection: Application Expiration (Shelf-Life) | ||
Exit Application Expiration Action | V | V |
Expiration Reporting via Custom Action | V | V |
Embedded Shelf Life Token | V | V |
Custom Expiration Action | V | |
Expiration Warning Actions | V | |
Custom Shelf Life Token Source | V | |
Active Runtime Protection: Root Check (For Xamarin.Android) | ||
Exit Application Action | V | V |
Custom Action | V | V |
Rooted Device Reporting via Custom Action | V | V |
Additional Actions | V | |
Probabilistic Actions | V | |
Product Support | ||
Live Support | V |
Compare Licensing Bundles
DashO | Development Team | Development Group | Enterprise |
Application Coverage | Up to 5 | Up to 20 | Unlimited |
Products | Get ALL PreEmptive Protection products (Dotfuscator/.NET, Android/Java, JavaScript, and iOS) for your team | Get ALL PreEmptive Protection products (Dotfuscator/.NET, Android/Java, JavaScript, and iOS) for multiple development teams | Get ALL PreEmptive Protection products (Dotfuscator/.NET, Android/Java, JavaScript, and iOS) for multiple development teams |
Build Scenarios and Users | All users (up to 8) and build machines (up to 2) required to support the team are covered | All users (up to 24) and build machines (up to 8) required to support the team are covered | Any mix of shared, hosted, or on-premises scenarios are covered |
Support | Up to 8 users on a team have access to premium support | Up to 24 users on multiples teams have access to premium support | All users have access to premium support |
Updates | Early access to product updates and new releases | Early access to product updates and new releases | Early access to product updates and new releases plus input into our product roadmap |
Other Benefits | Multi-year agreements available | Multi-year agreements available | Volume pricing, share licenses across team boundaries, custom contracts, etc. |
Supported Platforms
Dotfuscator can process apps from .NET Framework 1.0 and later, .NET Core 2 and later, .NET 5, .NET 6, .NET 7, and Mono, with targeted support for frameworks including Xamarin, MAUI, UWP, ASP.NET, .NET Standard, and many more. Dotfuscator’s build components can run on .NET Framework 4.7.2+, .NET Core 2.1+ and Mono 6+, on Windows, Mac, and Linux. The Config Editor requires .NET Framework on Windows.