How Runtime Linking and String Obfuscation Hide Imports from Static Analysis
· 8:11 · Watch on YouTube ↗
Summary
A tutorial demonstrates how XOR-obfuscated strings and runtime linking with LoadLibrary and GetProcAddress can hide API names and imports from static analysis, while decoded strings and import-table inspection still provide clues.
Key points
- The example resolves URLDownloadToFile and ShellExecute at runtime instead of listing them as ordinary linked imports.
- It uses a simple XOR loop to obscure DLL and function-name strings, then decrypts them before calling LoadLibrary and GetProcAddress.
- FLOSS may recover obscured strings as gibberish during static extraction, while decoded-string output can reveal the original content.
- The dumpbin imports output lacks the two primary libraries handled through runtime linking, though other imports remain.
- The presenter describes hidden strings and missing imports as clues to obfuscation or evasion, while noting that similar techniques can also appear in legitimate software.
Article Details
- Topics
- [00:00] Hiding imports and the effect on static analysis
- [01:29] Loading libraries and resolving functions at runtime
- [03:17] Obfuscated strings and FLOSS string recovery
- [05:13] XOR obfuscation in malware and interpreting decoded strings
- [06:20] Inspecting the import table with dumpbin
- [07:19] Implications for malware evasion, red-team tools, and legitimate software
