Encryption and Decryption Software VMProtect Getting Started Tutorial (2): Analysis, Cracking and Protection Software

VMProtect is a new generation software protection utility. VMProtect supports Delphi, Borland C Builder, Visual C/C++, Visual Basic (native), Virtual Pascal and XCode compilers.

Meanwhile, VMProtect has a built-in disassembler that works with Windows and Mac OS X executables, and can also link MAP files created by the compiler to quickly select code fragments to protect.

To easily automate application protection tasks, VMProtect implements a built-in scripting language. VMProtect fully supports 32/64-bit operating systems of the Windows family (starting from Windows 2000) and Mac OSX (starting from version 10.6). Importantly, VMProtect supports the full range of executables regardless of the target platform, i.e. the Windows version can handle the Mac OS X version's files and vice versa.

VMProtect latest download (qun: 761297826) icon-default.png?t=N3I4https://www.evget.com/product/1859

Static and Dynamic Analysis

A software product can be analyzed using static or dynamic analysis methods. Static analysis means that the protection cracking algorithm is based on the analysis of disassembly results or decompilation of the protected application. Breaking encrypted or dynamically changing executables requires dynamic analysis, which is very difficult to do with static analysis.

For dynamic analysis, the program being cracked is executed in a debugger frame. That way, everything that happens while the program is running can be controlled by the debugger. During dynamic analysis, crackers use debug mode to bypass all protection algorithms of the program one by one, especially the registration key generation and checking process. Another frequently used dynamic analysis tool is to trace files, system services, ports, and external devices queried by crackers.

The main tool for protecting applications from cracking is a software protector . The protection provided by most protectors is based on packaging and encryption of the original executable , with an emphasis on protecting the unpacking/decryption process.

Such algorithms are usually not sufficient to provide reliable protection. If the application is protected by packing, a hacker can easily obtain the original unpacked file by taking a memory dump right after the unpacker finishes its work. Additionally, there are several automated tools that can crack the most popular protectors. The same goes for encryption: after obtaining an appropriate license key (often purchased legally), a cracker can decrypt protected sections of code.

Anti-Debugging Technology

Some dongles use multiple anti-debugging techniques. However, each of them can affect the performance of the protected program. In addition, the anti-debugging method is only effective for dynamic analysis and completely ineffective for static analysis. What's more, all the anti-debugging methods used by modern protectors are well known, and crackers have written many utilities to avoid or bypass them. Activity Monitor is completely immune to built-in anti-debugging protection.

obfuscation and virtualization

More effective ways to protect applications are obfuscation and virtualization , which complicate the analysis of protected application code. Usually, the high efficiency of these protection methods is based on human factors: the more complex the code, the more resources the application uses, and the harder it is for crackers to understand the program logic, making it impossible to crack and protect.

Obfuscation "stalks" an application's code by adding excessive instructions to the application. Virtualization converts source code into bytecode executed by a special interpreter that mimics a virtual machine with a specific command set. As a result, virtualization leads to high and irreducible complexity in the generated code, and if applied properly, code protected in this way does not contain an explicit way to restore the original code. Therefore, the main advantage of virtualization is that virtualized fragments of code are not converted into machine language commands during execution, which in turn prevents crackers from obtaining the original code of the application.

Reverse engineering of virtualized fragments is reduced to analyzing the architecture of the virtual machine, building a disassembler for the corresponding architecture of the processor emulated by the virtual machine, and analyzing the disassembled code. A properly implemented virtual machine makes creating a disassembler for it a difficult task. The only downside to virtualization is slower execution, so this approach should only be used for parts of the code that are not critical to execution speed.

Today, most protectors don't pay much attention to obfuscation and virtualization, which allow crackers to remove such protections in automatic or semi-automatic mode. Another bottleneck in modern protectors is the use of undocumented Windows features, which can result in restricted operation of protected applications on newer versions of the operating system or when DEP is enabled.

The above is the sharing of this article. If you have any software-related questions, please chat with me privately.

Guess you like

Origin blog.csdn.net/m0_67129275/article/details/130317913