Documentation Index
Fetch the complete documentation index at: https://mintlify.com/JoasASantos/SysWhispers4/llms.txt
Use this file to discover all available pages before exploring further.
Overview
SysWhispers4 supports MinGW and Clang compilers using GAS (GNU Assembler) inline assembly syntax. This guide covers complete integration from generation to compilation.Key Differences from MSVC
| Aspect | MSVC | MinGW/Clang |
|---|---|---|
| Assembly syntax | MASM (separate .asm file) | GAS inline (in .c file) |
| Generated files | 4 files (*.asm separate) | 4 files (*_stubs.c with inline asm) |
| Assembler | ml64.exe / ml.exe | GAS (GNU Assembler) |
| Compiler flag | /masm (MASM) | -masm=intel |
| Platform | Windows (MSVC toolchain) | Cross-platform (Windows/Linux host) |
Quick Integration
Generate MinGW-compatible files
SW4Syscalls_Types.h— NT type definitionsSW4Syscalls.h— Function prototypesSW4Syscalls.c— Runtime SSN resolutionSW4Syscalls_stubs.c— GAS inline assembly stubs (replaces.asm)
Compile with MinGW
-masm=intel— Use Intel assembly syntax (required)-lntdll— Link against ntdll (for initialization helpers)
Complete Process Injection Example
Generate Files
Source Code
injector.c:Compilation
x64 build:-masm=intel— Intel syntax (required for inline asm)-lntdll— Link ntdll.dll-O2— Optimize for speed-s— Strip symbols (smaller binary)
Build Output
Cross-Compilation from Linux
Install MinGW on Linux
Debian/Ubuntu:Generate and Compile
Using Clang
Generate for Clang
Compile with Clang
Windows (with Clang installed):Makefile Example
Makefile:Advanced Configurations
Maximum Evasion
-ffunction-sections— Separate functions into sections-fdata-sections— Separate data into sections-Wl,--gc-sections— Remove unused sections (smaller binary)
Shellcode Generation
Compile as position-independent code for shellcode conversion:Static Linking
Create fully self-contained executable:DLL Creation
Generate Files
DLL Source
payload.c:Compile DLL
payload.dll ready for injection
Troubleshooting
Error: “operand type mismatch for ‘syscall’”
Cause: x64 instruction in x86 build. Solution:- Ensure you’re using x64 compiler:
x86_64-w64-mingw32-gcc - Or regenerate with
--arch x86for 32-bit
Error: “undefined reference to ‘SW4_NtAllocateVirtualMemory’”
Cause: MissingSW4Syscalls_stubs.c in compilation.
Solution:
Error: “Bad value (intel) for -masm= switch”
Cause: Old GCC version (< 4.9). Solution:- Update MinGW:
sudo apt install --upgrade mingw-w64 - Or remove
-masm=intel(uses AT&T syntax — not recommended)
Warning: “implicit declaration of function ‘GetModuleHandleA’”
Cause: Missing Windows header. Solution:Initialization Fails on Wine
Symptoms:SW4_Initialize() returns FALSE when running under Wine.
Cause: Wine’s ntdll implementation differs from Windows.
Solution:
- Use
--resolve static(embeds SSN table, no runtime parsing) - Or test on real Windows (Wine compatibility not guaranteed)
Comparison: MinGW vs MSVC
Binary Size
| Configuration | MSVC | MinGW |
|---|---|---|
| Debug | ~120 KB | ~85 KB |
| Release (stripped) | ~45 KB | ~50 KB |
| Static link | N/A | ~1.5 MB |
Performance
Nearly identical — syscall overhead dominates (assembly is the same).Compatibility
- MSVC: Windows-only (Visual Studio required)
- MinGW: Cross-platform (compile from Linux/macOS)
Debugging
- MSVC: Full Visual Studio debugger integration
- MinGW: GDB (command-line or IDE integration)
Best Practices
-
Always include
-masm=intel: -
Link ntdll for initialization helpers:
-
Use optimization for smaller binaries:
-
Strip symbols in production:
Or after compilation:
-
Check NTSTATUS values:
Next Steps
MSVC Integration
Alternative: Visual Studio integration
Advanced Evasion
Learn about all evasion techniques
