Enigma Protector 5.x Unpacker [best] Online
The Enigma Protector is a sophisticated commercial packer and protector designed to safeguard software from unauthorized use, reverse engineering, and cracking. Versions in the 5.x branch introduced enhanced virtualization and anti-debugging features that make manual unpacking a complex multi-stage process. This paper outlines the architecture of Enigma Protector 5.x and the technical methodologies used to achieve a successful unpack. The Protection Layers of Enigma 5.x
Enigma 5.x utilizes a tiered defense strategy. The first layer consists of anti-tampering and anti-debugging checks. These routines monitor for the presence of debuggers like x64dbg or OllyDbg and check for hardware breakpoints. The second layer is the virtual machine (VM) architecture. Enigma converts critical parts of the original application code into a custom bytecode language, which is then executed by a built-in virtual machine. This obfuscates the original logic, making it difficult to understand even if the file is dumped from memory. The third layer involves API wrapping and Import Address Table (IAT) obfuscation, where calls to Windows system functions are redirected through "stubs" inside the protector's code. Technical Requirements for Unpacking
To successfully unpack Enigma 5.x, a reverse engineer requires a specific toolkit and foundational knowledge of PE (Portable Executable) file structures.
Debuggers and Plugins: Tools like x64dbg equipped with plugins such as ScyllaHide are essential to bypass the protector’s environmental checks.
Dumping Tools: Scylla or similar PE dumpers are used to capture the process memory once the protector has finished its initialization.
De-virtualization Scripts: Because Enigma 5.x uses code virtualization, custom scripts or specialized tools are often needed to rebuild the original opcodes from the VM bytecode. The Unpacking Process
The workflow for unpacking an Enigma 5.x protected binary typically follows these four stages:
Bypassing Initial ProtectionThe process begins by setting a "Hardware Breakpoint on Execution" at the Entry Point of the protected file. Using anti-anti-debug plugins, the researcher prevents the protector from detecting the debugger. Once the initial checks pass, the protector begins decrypting the original code into memory.
Locating the Original Entry Point (OEP)The OEP is the memory address where the original application starts after the protector finishes its work. In version 5.x, finding the OEP is difficult because the protector often jumps to a virtualized stub rather than a clean entry point. Researchers look for specific patterns, such as the "Push Ad" / "Pop Ad" sequence or large jumps toward a known code section (often named .text).
Dumping and IAT ReconstructionOnce the OEP is reached, the application’s memory is dumped to a new file. However, this file will not run because the Import Address Table is still pointing to the protector’s redirected stubs. Using a tool like Scylla, the researcher must "AutoSearch" for the IAT, "Get Imports," and then "Fix Dump." This process replaces the redirected pointers with the actual addresses of the required DLL functions.
Handling VirtualizationThis is the most challenging phase of Enigma 5.x unpacking. If the developer virtualized core logic, the dumped file may crash or lose functionality. The researcher must analyze the VM's handler loop to understand how it interprets bytecode. In many cases, "devirtualization" is achieved by tracing the execution of the VM and logging the registers to manually reconstruct the original x86 instructions. Conclusion
Unpacking Enigma Protector 5.x is not a matter of a single click but a methodical reversal of layers. While automated "unpackers" exist for older versions, the 5.x series remains robust due to its heavy reliance on virtualization and dynamic IAT redirection. Success requires a deep understanding of memory management and the ability to distinguish between native code and protector-generated stubs.
Provide a list of the most effective plugins for bypassing 5.x anti-debugging?
Detail how to manually reconstruct an IAT when Scylla fails?
Enigma Protector 5.x unpacker — concise technical summary
Overview
- Enigma Protector 5.x is a commercial Windows software protection/obfuscation tool that can apply packing, virtualization, anti-debugging, anti-tamper, license checks, and loader stages to an executable. Unpacking such protected files requires reversing the protection’s runtime unpacking and any virtualization layers.
Common protection layers in 5.x
- Thin loader: small stub decrypts or decompresses the original PE and transfers execution.
- Memory unpacking: original sections are reconstructed in memory and execution jumps to the in-memory entry point (IEP).
- Import table reconstruction: imports may be rebuilt dynamically; IAT in file may be invalid.
- TLS/loader callbacks: initialization tasks run via TLS callbacks before main code.
- Anti-debug/anti-VM: checks for debuggers, breakpoints, timers, virtualization artifacts.
- Packed/virtualized code: critical functions may be protected by a custom virtual machine (VM) or obfuscated bytecode interpreter.
- Integrity/anti-tamper: checksums, multi-stage decryptors, or self-checks to detect modification.
Static analysis tips
- Do not trust the on-disk PE headers; examine the file with a hex editor and tools like PEview, CFF Explorer, or diec.
- Search for known Enigma strings, section names (.enigma, .enigma1, .egx) and typical resource sections.
- Look for large overlay data appended to the PE — often contains encrypted payload.
- Check suspicious imports (LoadLibrary, GetProcAddress, VirtualAlloc, VirtualProtect, CreateThread, GetModuleHandle, NtUnmapViewOfSection).
- Identify TLS callbacks in the directory table; they often perform unpacking.
Dynamic analysis workflow (minimal, attacker-focused)
- Safe environment: isolated VM with snapshots, avoid internet. Use non-production tools.
- Tools: x64dbg/OllyDbg, WinDbg, Scylla/X64dbg plugin for IAT rebuild, Process Hacker/Process Explorer, API Monitor, IDA Pro / Ghidra, VirtualAlloc/WriteProcessMemory monitors, PE-sieve/Detect It Easy.
- Run under debugger and let the loader run; set break on:
- VirtualProtect/VirtualAlloc/VirtualAllocEx
- WriteProcessMemory/SetThreadContext/NtContinue
- GetProcAddress/LoadLibraryA/W
- RtlInstallFunctionTableCallback / callbacks that manipulate SEH/TLS
- Break on first suspicious Write/Copy into newly allocated memory and follow to the reconstructed PE header (MZ/PE signatures).
- Dump process memory when payload is fully reconstructed; use Scylla or built-in dump with correct IEP and rebuild imports.
- Rebuild the import table and fix relocations; correct the OEP in the dumped file; verify in PE tools and run in debugger to confirm.
Handling VM/virtualized code
- Identify VM dispatcher loops: tight switch/jump chains, indirect dispatch via tables, heavy use of memory reads/writes.
- For small VM regions: manual devirtualization in IDA/Ghidra by mapping VM semantics to native instructions.
- For larger VM: consider recording execution traces and using emulation to translate bytecode to native code. Tools: dynamic instrumentation (Intel PIN, DynamoRIO) or custom emulator for the VM.
- Sometimes bypassing license checks is possible by patching post-unpack native code rather than devirtualizing entire VM.
Anti-debug/anti-VM mitigation
- Patch or hook common anti-debug APIs to return safe values (IsDebuggerPresent, CheckRemoteDebuggerPresent, NtQueryInformationProcess).
- Neutralize time-based checks by intercepting QueryPerformanceCounter/GetTickCount.
- Hide VM artifacts (device names, MACs) or run on bare metal if necessary.
- Use plugins that auto-patch common detection patterns (x64dbg anti-anti-debug plugins).
Automation & tooling
- PE-bear, Detect It Easy, DIE, Exeinfo PE for initial fingerprinting.
- Scylla/ScyllaHide for dumping and rebuilding IAT.
- Import Reconstructor and ImportREC alternatives.
- TitanEngine/Win32k hooks for advanced dumping.
- Unicorn engine or Qiling for emulation of VM bytecode when building devirtualizers.
Legal and ethical note
- Unpacking, bypassing licensing, or reverse-engineering commercial protections may violate software license agreements and laws in many jurisdictions. Ensure you have explicit permission (e.g., for malware analysis, incident response, interoperability, or research) before proceeding.
Quick checklist for a typical unpack cycle
- Identify loader behavior and locate TLS callbacks.
- Let loader run until payload is mapped in memory.
- Break on memory-write/exec to find reconstructed PE.
- Dump memory, fix headers, rebuild imports/relocations.
- Analyze dumped binary; handle VM-protected routines selectively.
- Test dumped executable under debugger to confirm successful unpack.
If you want, I can provide:
- A step-by-step x64dbg workflow for dumping and rebuilding an Enigma-protected PE.
- Example scripts/plugins for automating parts of the dump/import rebuild process.
Enigma Protector 5.x is one of the most sophisticated commercial software protection systems available today. Designed to prevent reverse engineering, unauthorized cracking, and tampering, it employs a multi-layered defense strategy including Virtual Machine (VM) obfuscation
, anti-debugging tricks, and complex import table wrapping. However, as the saying goes in the security world, "if it can run, it can be unpacked." The Defensive Architecture
At its core, Enigma 5.x functions as a "shell" or "packer" that wraps the original executable. When the protected file is launched, the Enigma stub executes first. Its primary jobs are: Environment Checking:
Detecting virtual machines, debuggers (like x64dbg), or monitoring tools. Code Decryption: Unpacking the original code sections into memory. Import Table Protection:
Instead of a standard Import Address Table (IAT), Enigma often uses "redirection" where API calls are diverted through custom stubs to hide the original functions. Virtualization:
Converting critical code fragments into a proprietary bytecode that only Enigma’s internal VM can execute. The Unpacking Workflow Enigma Protector 5.x Unpacker
Unpacking Enigma 5.x is rarely a "one-click" process; it requires a systematic approach using a debugger and specialized scripts. Finding the OEP (Original Entry Point):
The first goal is to bypass the protection stub and find where the original program code starts. This is usually done by bypassing hardware breakpoints or using "Last Exception" methods. Dumping the Process:
Once the program is at the OEP and the code is decrypted in memory, a tool like
is used to "dump" the memory into a new, static executable file. Fixing the IAT:
This is the most difficult stage. Because Enigma destroys the original IAT, the researcher must use an "IAT Searcher" or "ImpREC" to trace redirected calls back to their original Windows APIs (e.g., Kernel32.dll Removing Nag Screens and HWID Locks:
Enigma often embeds license checks. Unpackers must identify the specific "SDK" calls that verify hardware IDs or trial timers and patch them to return a "Valid" status. The Evolution of the Cat-and-Mouse Game Modern 5.x versions have moved toward Virtual Machine protection
. When a developer chooses to "virtualize" a function, that code is no longer x86 assembly; it is a custom language. Standard unpacking—which relies on dumping decrypted x86 code—fails here. The unpacker must then become a "de-virtualizer," a task that involves mapping every custom opcode back to its original logic, which is an incredibly time-consuming process. Conclusion
Unpacking Enigma Protector 5.x is a testament to the skill of a reverse engineer. It requires a deep understanding of the Windows Portable Executable (PE) structure
, exception handling, and assembly language. While Enigma provides a formidable shield for developers, the persistent evolution of debugging scripts and de-virtualization tools ensures that the barrier between "protected" and "analyzed" remains permeable. technical steps for finding the OEP or a deeper look into how Virtual Machine obfuscation
Step 1 – Detection of the OEP
The original program’s entry point is hidden deep inside the unpacking stub. The unpacker uses heuristic scanning:
- Tracing unique API call chains – Enigma’s stub eventually calls
GetModuleHandleAandGetProcAddressto resolve imports. The unpacker sets breakpoints on these APIs. - Memory breakpoint on .text section – Once the original code is decrypted, the
.textsection gets written to. By monitoring write operations (Page Guard or hardware BP), the unpacker catches the moment of decryption. - Signature scanning – Despite polymorphism, the VM dispatcher often contains fixed bytes:
0xEB,0xFF,0x15patterns. A robust unpacker uses fuzzy matching.
Developing an Enigma Protector 5.x Unpacker
Developing an unpacker for Enigma Protector 5.x requires a deep understanding of the protection tool's inner workings, as well as expertise in programming languages such as C, C++, or Python. Here's a high-level overview of the unpacker's architecture:
- Loader: The loader is responsible for loading the protected software into memory. This component must be able to handle the Enigma Protector's encryption and compression schemes.
- Decoder: The decoder component is responsible for decoding the protected software's code and data. This may involve reversing the encryption and compression algorithms used by Enigma Protector.
- Analyzer: The analyzer component is responsible for analyzing the decoded code and data. This may involve identifying the software's entry points, analyzing the code's structure, and extracting relevant information.
Cracking the Vault: A Deep Dive into the Enigma Protector 5.x Unpacker
The Wall
The first hurdle was the Entry Point. Usually, a packer compresses the executable, and when the program runs, it decompresses itself into memory. All an unpacker has to do is let it run, catch it at the right moment, and snap a picture of the memory— a process called "dumping."
Enigma 5.x, however, didn't play fair. It used a technique called Stolen Bytes. It deleted the original entry point code of the plugin and replaced it with its own polymorphic gibberish.
Leo sighed, looking at his debugger. The disassembler showed nothing but CALL instructions jumping to invalid addresses, a maze designed to crash any automated analysis tool.
"You can't trick me with mirrors," Leo muttered. He wasn't going to run the program. He was going to dissect the protector itself.
Conclusion
The Enigma Protector 5.x Unpacker remains a legendary beast in the reverse engineering jungle—part tool, part technique, and part cat-and-mouse game. While dedicated unpackers exist for specific versions, universal solutions are rare due to the escalating complexity of Enigma’s anti-tamper features.
For those new to the field, mastering the manual unpacking of Enigma 5.x offers an unparalleled education in Windows PE internals, anti-debug obfuscation, and code emulation. But be warned: the path is arduous, and the protectors are always watching.
Have you encountered an Enigma-protected binary and need to analyze it for security research? Start with x64dbg + ScyllaHide, manually trace the decryption loops, and perhaps—if the stars align—you’ll witness the OEP reveal itself.
Stay curious, stay ethical.
Unpacking software protected by Enigma Protector 5.x is a complex reverse-engineering task that typically involves bypassing Hardware ID (HWID) checks, fixing Virtual Machine (VM) macros, and rebuilding the Original Entry Point (OEP). Since Enigma is designed to be resilient, there isn't a "one-click" unpacker; rather, it requires a combination of specialized scripts and manual debugging. Technical Workflow for Unpacking 5.x According to community experts on Tuts 4 You , the general process for version 5.2 involves: HWID Emulation
: Changing or bypassing the Hardware ID check is often the first hurdle. Many researchers use scripts like LCF-AT's HWID changer to trick the software into running on a different machine. OEP Recovery and VM Fixing
: Enigma uses a Virtual Machine to protect code. You must identify the Original Entry Point and repair the VM-protected functions. Community-developed scripts from groups like are often used to automate API fixing and OEP recovery. File Optimization
: Once dumped, the file often contains bloat or misaligned sections. Tools like
or manual methods by researchers like SHADOW_UA are used to clean the final executable. Developer Perspective The creators of Enigma Protector
emphasize that while basic protection can be bypassed by advanced crackers, implementing additional protection layers
(like internal markers and deeper VM integration) makes the software significantly harder to unpack. They maintain that total unpacking is inconsistent with the product's core design and offer support to help developers strengthen their implementation. Common Tools & Scripts x64dbg / OllyDbg : Primary debuggers used for manual analysis. LCF-AT Scripts
: Widely considered the gold standard for Enigma OEP recovery.
: For rebuilding imports after the process is dumped from memory. Do you have a specific sample error message
you're encountering while trying to run or unpack an Enigma-protected file? Unpacking my own EXE - Enigma Protector
Unpacking Enigma Protector 5.x is a complex reverse engineering task because it combines anti-debugging, HWID binding, and Virtual Machine (VM) code obfuscation. 🛠️ Core Tools Needed The Enigma Protector is a sophisticated commercial packer
Debugger: x64dbg or OllyDbg (ideally with the ScyllaHide plugin).
Scripts: LCF-AT's unpacking scripts are the industry standard for Enigma 5.x.
Dump/Fix Tools: Scylla Import Reconstructor for OEP (Original Entry Point) rebuilding and IAT fixing. 📋 Unpacking Workflow 1. Bypass Anti-Debug & HWID
Enigma 5.x checks for debuggers early. Use ScyllaHide to mask your debugger. If the file is locked to a specific computer, you must patch the HWID check or use a HWID changer script to match the license requirements. 2. Find the Original Entry Point (OEP)
You need to reach the point where the protector hands control back to the original application code.
Method: Set a memory access breakpoint on the .text (code) section and run the program.
VM OEP: If Enigma uses its internal Virtual Machine, the OEP might be inside a VM stub. Use specialized scripts like Enigma VM API Fixer to resolve these addresses. 3. Dump and Fix Imports
Once at the OEP, the code is decrypted in memory but the Import Address Table (IAT) is likely still redirected to the protector's "Enigma Section". Dump: Use Scylla to dump the process memory to a new file.
IAT Fix: Use the Scylla "IAT Autosearch" and "Get Imports" features. If imports remain "invalid," you must manually resolve the API calls that Enigma has emulated or hooked. 4. Final Optimization
Remove the now-useless protector sections to reduce file size and ensure the new executable is portable. ⚠️ Common Hurdles
Anti-Dump: Some versions use "Guard Pages" to crash dumpers.
API Emulation: Enigma may emulate certain Windows APIs (like GetModuleHandle). These must be manually redirected back to the real system DLLs.
ASLR: It is highly recommended to perform unpacking on an environment with ASLR disabled (like Windows XP or by patching the PE header) to keep image bases consistent.
💡 Pro Tip: For files protected with Enigma Virtual Box (a simplified version), use the evbunpack tool on GitHub for a much faster automated process. If you'd like to dive deeper, I can provide: Specific x64dbg breakpoints for bypassing debugger checks. Links to LCF-AT's scripts for version 5.x.
A guide for handling the Virtual Box file system specifically. Little Hard Enigma 5.6 - UnPackMe - Tuts 4 You - Forums
The fluorescent hum of the server rack was the only sound in the room, aside from the frantic clicking of Leo’s mechanical keyboard. On his screen, a tangled mess of assembly code scrolled past—a vertical waterfall of hex dumps and memory addresses.
"Come on, you beauty," Leo whispered, wiping sweat from his forehead with the back of his hand. "Show me your secrets."
The target was a piece of software known simply as Aegis, a high-end enterprise suite used by logistics companies to track millions of dollars in cargo. Leo wasn't a thief; he was a reverse engineer, a digital locksmith hired by a frantic startup who had lost the source code to their own proprietary plugin after the lead developer vanished. The plugin was wrapped tight inside Aegis, protected by the latest version of the Enigma Protector, version 5.x.
In the underground world of software protection, Enigma 5.x was a nightmare. It wasn’t just a wrapper; it was a shapeshifter. It utilized virtualization, mutating code, and anti-dump tricks that would make a cryptographer weep. It was a fortress with walls that moved every time you looked at them.
Leo took a sip of lukewarm coffee. He had been at this for fourteen hours.
Conclusion
The Enigma Protector 5.x is not unbreakable. With a combination of dynamic tracing, IAT redirection reconstruction, and targeted memory dumping, we can recover the original executable’s logic. This research aids malware analysts in deobfuscating malicious samples and helps defenders understand the weaknesses of commercial protectors.
As always, use this knowledge responsibly – and remember that strong protection is not just about obscurity, but about secure software design.
References:
- Enigma Protector SDK documentation (leaked versions)
- "Unpacking Virtualized Protectors" – RCE Community Paper, 2023
- Scylla Import Reconstruction Tool
Author: [Your Name / Handle]
Date: [Current Date]
License: This article and accompanying tools are released under the MIT License for academic use.
Enigma Protector 5.x is a commercial software protection tool known for its complex layers of defense, including virtual machines (VMs), import table obfuscation, and anti-debugging/anti-dumping features. Developing an "unpacker" for this version is less about a single tool and more about a multi-step reverse engineering process to reconstruct the original executable. Core Challenges in Unpacking 5.x
Unpacking Enigma 5.x manually generally requires overcoming several sophisticated protection mechanisms:
Virtual Machine (VM) Layer: Enigma converts parts of the original code into bytecode that runs on a custom virtual machine. Unpackers must either de-virtualize this code or use scripts to trace and rebuild the Original Entry Point (OEP).
Import Table Reconstruction: The protector often destroys the original Import Address Table (IAT) and replaces it with redirects to its own internal stubs.
Hardware ID (HWID) Locking: Many Enigma-protected files are locked to specific hardware. An unpacker often needs to bypass HWID checks or "keygen" the license before even reaching the unpacking phase. Known Tools and Methods
While there is no "one-click" universal unpacker for all 5.x versions due to custom configurations, the reverse engineering community uses these specialized scripts and tools: Enigma Protector 5
LCF-AT's Scripts: Frequently cited in Tuts 4 You forums as the gold standard for Enigma unpacking. These scripts automate:
OEP Finding: Locating the start of the original application code.
VM API Fixing: Repairing external calls redirected through the Enigma VM.
Enigma Virtual Box Unpackers (EVBUnpack): If the target is protected by Enigma's "Virtual Box" (which bundles files into a single EXE rather than encrypting the code itself), tools like evbunpack on GitHub can extract the original embedded files, including TLS and Import Tables.
Pattern-Based Unpacking: Advanced researchers use "Silence's Unpacking Tour" methods, which involve identifying specific code patterns to find "patch-places" and bypass SDK APIs. Summary of Manual Unpacking Workflow
Preparation: Bypass anti-debugging checks (using plugins like ScyllaHide) to prevent the application from closing when attached to a debugger like x64dbg.
HWID Bypass: If the file is locked, use scripts to modify the Hardware ID check or emulate a valid license.
OEP Discovery: Run a specialized script to find the OEP and "dump" the process memory once the protector has decrypted the main code.
IAT Repair: Use a tool like Scylla to rebuild the Import Address Table so the dumped file can run independently of the protector.
De-Virtualization: (Optional/Advanced) If critical logic is still inside a VM, it must be manually traced and rewritten into x86/x64 instructions.
If you are looking for specific scripts, the Tuts 4 You "UnPackMe" forums remain the primary repository for community-developed Enigma 5.x unpacking resources.
Unpacking Enigma Protector 5.x is a complex multi-step process because it uses Virtual Machine (VM)
technology (Classic and Modern RISC) to obfuscate the entry point and critical functions. There is no single "one-click" tool for all 5.x versions; instead, a "solid piece" involves a workflow using specialized debugger scripts. Enigma Protector Recommended Unpacking Workflow For a reliable result, follow this sequence using HWID Bypass : Use scripts like LCF-AT's HWID changer to bypass hardware-locked licensing. OEP Recovery
: Locate the Original Entry Point (OEP). If the OEP is virtualized (VM OEP), you must use a recovery script like GIV's script to bypass password checks or LCF-AT's script for VMOEP rebuilding. IAT Fixing
: Enigma often destroys the Import Address Table (IAT). You will need an IAT fixer script to redirect API calls back to their original addresses. Dumping and Optimizing
: Once the OEP and IAT are handled, dump the process using a tool like
and optimize the file to strip Enigma loader DLLs and extra data. Essential Tools and Scripts
: Specifically for Enigma Virtual Box (EVB) files, this tool can restore the executable and extract virtualized file systems. Enigma VM API Fixer
: While originally for version 4.x, updated versions or manual logic based on this script are often used for 5.x to fix virtualized API calls. LCF-AT & GIV Scripts
: These are the industry standard for manual Enigma unpacking and can be found on reverse engineering forums like Tuts 4 You
: Advanced Enigma protections (like "Modern RISC" VM) use unique instruction sets for each protected file, which may require manual devirtualisation analysis if scripts fail. Enigma Protector Are you working with a executable, and have you already identified if the entry point is virtualized? Enigma Protector 5.2 - UnPackMe - Forums 20-Apr-2016 —
Enigma Protector 5.x is a complex process because it combines traditional compression with advanced code virtualization, anti-debugging, and hardware-locking mechanisms. There is no single "magic button" to unpack every 5.x protected file; instead, it requires a systematic approach using specific scripts and manual debugging steps. Phase 1: Environment Setup & Anti-Analysis Bypass
Before attempting to unpack, you must neutralize the protector's ability to detect your analysis environment. Hardware ID (HWID) Bypass
: Many Enigma-protected files are locked to a specific PC. You may need to use tools like LCF-AT's HWID script
to spoof or change the hardware signature so the application will even run on your machine. Anti-Debugger Plugins : Use a modern debugger like with plugins such as ScyllaHide
to mask the debugger from "IsDebuggerPresent" checks and other PEB-based detection methods. Phase 2: Finding the OEP (Original Entry Point)
The goal is to reach the moment just before the real program code starts. Skip the Protector
: Load the file in your debugger and let the protector finish its initialization and decryption. OEP Identification
: For Enigma 5.50–5.60, a common pattern exists in the memory sections. Look for the Enigma VM section
; often, the RVA of the OEP and the PE header size are stored in a predictable data structure within this section. Alternative Method
: Use "GetModuleHandle" call references to find where the protector hands control back to the original application. Phase 3: Repairing the Dump
Once you have found the OEP, a standard memory dump will not work because the Import Address Table (IAT) and Virtual Machine (VM) code are still mangled. How To Defeat Anti-VM and Anti-Debug Packers With IDA Pro