ScyllaHide - Usermode Anti-Anti-Debug-Spickzettel
ScyllaHide ist eine fortgeschrittene quelloffene Usermode-Anti-Anti-Debug-Bibliothek für Windows (x86/x64). Malware und kommerzielle Packer erkennen Debugger durch einen wohlbekannten Satz von API-Aufrufen und Flags; ScyllaHide hookt diese Funktionen, sodass sie “kein Debugger vorhanden” zurückgeben, was es einem Analyst ermöglicht, geschützten Code zu debuggen, ohne seine Ausweichvorkehrungen zu aktivieren. Es ist als Plugin für x64dbg, IDA und OllyDbg verfügbar und kann auch eigenständig durch Injizieren in ein Ziel ausgeführt werden.
Nur für autorisierte Malware-Analyse und Softwareforschung. ScyllaHide ist ein Defensive-Research-Tool; verwenden Sie es nur auf Samples und Software, die Sie analysieren dürfen.
Installation
| Methode | Wie |
|---|
| x64dbg | Plugin-DLLs in x64dbg/plugins/ ablegen |
| IDA | IDA-Plugin in IDA’s plugins/-Ordner kopieren |
| Standalone (Injector) | InjectorCLIx64.exe / InjectorGUI.exe verwenden |
| Quelle | Aus dem x64dbg/ScyllaHide-Repo bauen |
| Verifizieren | Plugin-Menü erscheint im Debugger |
Was es verbirgt
| Technik | ScyllaHide-Gegenmittel |
|---|
IsDebuggerPresent | Gibt false zurück |
CheckRemoteDebuggerPresent | Meldet keinen Debugger |
PEB BeingDebugged-Flag | Gelöscht |
NtGlobalFlag | Normalisiert |
NtQueryInformationProcess | ProcessDebugPort/Flags gefälscht |
| Heap-Flags | Normalisiert |
NtSetInformationThread (HideFromDebugger) | Blockiert |
Timing-Checks (GetTickCount, rdtsc) | Optional gemindert |
OutputDebugString / Hardware-Breakpoints | Bearbeitet/verborgen |
Verwendung des Plugins (x64dbg)
| Schritt | Aktion |
|---|
| Ziel öffnen | Lade die gepackte/geschützte Binärdatei in x64dbg |
| Optionen | Plugins → ScyllaHide → Optionen |
| Profil wählen | Ein Hook-Profil wählen oder optimieren |
| Hooks anhängen | Vor dem Durchlaufen von Anti-Debug-Checks aktivieren |
| Ausführen | Fortführung der Ausführung; Checks gehen jetzt vorbei |
Profile
| Profil | Verwendung |
|---|
| Vorgabevorlagen | Häufige Packer (z.B. VMProtect, Themida-Stil) |
| Benutzerdefiniert | Individuelle Hooks für ein stures Ziel umschalten |
| Speichern/laden | Profil pro Sample/Packer beibehalten |
Standalone-Injektion
# ScyllaHide in einen bereits laufenden (oder gestarteten) Prozess injizieren
InjectorCLIx64.exe <pid|path> HookLibraryx64.dll <profile>
| Option | Zweck |
|---|
| Spawn vs. anhängen | Ziel unter ScyllaHide starten oder später anhängen |
| Hook-Bibliothek | Die DLL, die die Hooks installiert |
| Profil | Welche Anti-Debug-Hooks angewendet werden sollen |
Typischer Unpacking-Workflow
ScyllaHide ist normalerweise ein Teil eines Unpacking-Toolkits zusammen mit seinen Geschwister-Tools.
| Tool | Rolle |
|---|
| ScyllaHide | Anti-Debug besiegen, damit Sie zum OEP laufen können |
| x64dbg | Debuggen und den Original Entry Point erreichen |
| Scylla | Import Address Table neu aufbauen, PE dumpen |
| Detect It Easy | Packer identifizieren / gechecktes Unpacking-File überprüfen |
# Konzept: geschütztes Sample auspacken
1. Sample in x64dbg mit aktiviertem ScyllaHide laden
2. Packer-Stub zum OEP durchlaufen (Anti-Debug ist neutralisiert)
3. Prozess dumpen und IAT mit Scylla neu aufbauen
4. Dump mit Detect It Easy überprüfen
| Aspekt | ScyllaHide | TitanHide | Manuelles Patching |
|---|
| Ebene | Usermode-Hooks | Kernel-Mode-Treiber | Pro-Check-Patches |
| Abdeckung | Breite API-Menge | Kernel-Level-Stealth | Nur was Sie patchen |
| Einrichtung | Plugin/Injektion | Treiberinstallation | Mühsam |
| Best für | Alltägliches RE-Debugging | Tiefere Stealth-Anforderungen | One-Off-Checks |
Ressourcen