Multilayered AV/EDR Evasion Framework (no longer actively maintained)
C++
1,058
197 commits
updated Mar 28, 2026
Note: This project is no longer actively maintained. It may still receive occasional updates, but no regular development or support is planned. Use at your own discretion.
Features | Installation | Docker Setup & Installation | Usage | Evasion Module
Special thanks to Professor Rich Macfarlane @rjmacfarlane.
BOAZ (Bypass, Obfuscate, Adapt, Zero-trace) evasion was inspired by the concept of multi-layered approach which is the evasive version of defence-in-depth first mentioned in “One packer to rule them all” at BH USA14 (Swinnen & Mesbahi, 2014). BOAZ was developed to provide greater control over combinations of evasion methods, enabling more granular evaluations against antivirus and EDR [39].
BOAZ aims to bypass the before and during execution phases that span signature, heuristic and behavioural-based detection methods. BOAZ supports x64 binary (PE) or raw playload (.bin) as input. It has been tested on separated Window-11 Enterprise, Windows-10 and windows Server 2022 VMs (version: 22H2, 22621.1992) with 14 Desktop AVs and 7 EDRs installed include Windows Defender, Norton, BitDefender, Sophos and ESET. BOAZ’s modular design facilitates user customisation, enabling researchers to integrate their own toolsets or techniques. BOAZ is written in C++ and C and uses Python3 as the main linker to integrate all modules.
For students and researchers in offensive security, no advanced programming or scripting knowledge or skills are required to use BOAZ to generate undetectable polymorphic samples.
This tool has an alternative use: it can function as a packer or obfuscator.
Modular Design: Easily extendable with new tactics and techniques by adding scripts.
Signature Evasion:
bcf: Bogus Control Flowfla: Control Flow Flatteninggle: Global Variable Encryptionmba: Mixed-Boolean Arithmetic expressions (MBA)sub: Instruction Substitutionsidc: Indirect Call Promotionhlw: Hide LLVM IR Level WarningsHeuristic Evasion:
Behavioral Evasion:
git clone https://github.com/thomasxm/Boaz_beta/
cd Boaz_beta
bash requirements.sh
It should be noted that SGN encoder sometimes can generate bad characters, use with caution. requirements.sh will install LLVM, which takes a while to complete. BOAZ can be run without the -llvm handle; however, it is not optimised without the latter.
BOAZ can also be used via Docker to avoid dependency and build issues.
If Docker is not already installed on your system:
sudo apt install docker-cli -y
sudo apt install docker.io -y
sudo docker pull mmttxx20/boaz-builder:latest
sudo docker images | grep -in "boaz"
sudo docker run --rm -it \
--entrypoint /bin/bash \
-v "$HOME:/host_home" \
-v "$PWD:/boaz/output" \
--shm-size=1024M \
--name boaz_built \
mmttxx20/boaz-builder
/host_home maps your home directory inside the container.-v "$PWD:/boaz/output" mounts your current directory on the host to /boaz/output in the container.echo $HOMEpython3 Boaz.py -h
python3 Boaz.py -f /host_home/Boaz_beta/notepad.exe -o ./output/boaz_output.exe -t donut -l 16 -e uuid -c akira
-t donut: Use Donut as the position independent shellcode generator.-l 16: Use loader number 16.-e uuid: Encode the shellcode using UUID scheme.-c akira: Use Akira as the LLVM obfuscator and clang++ as the cross-compiler.After the process completes and you exit the container, the output binary boaz_output.exe will be present in your current working directory on the host.
Example usage:
python3 Boaz.py -f ~/testing_payloads/notepad_64.exe -o ./alice_notepad.exe -t donut -obf -l 1 -c pluto -e uuid
Use a built ELF executable in Linux environment:
./Boaz -f ~/testing_payloads/notepad_64.exe -o ./alice_notepad.exe -t donut -obf -l 1 -c akira -e des -a
Refer to the help command for more details on usage:
python3 Boaz.py -h
./Boaz -h
usage: Boaz.py [-h] [-f INPUT_FILE] [-o OUTPUT_FILE] [-divide] [-l LOADER] [-dll] [-cpl] [-sleep]
[-a] [-cfg] [-etw] [-j] [-dream [DREAM]] [-u] [-g]
[-t {donut,pe2sh,rc4,amber,shoggoth}] [-sd] [-sgn]
[-e {uuid,xor,mac,ipv4,base45,base64,base58,aes,des,chacha,rc4,aes2,ascon}]
[-c {mingw,pluto,akira}] [-mllvm MLLVM] [-obf] [-obf_api] [-w [SYSWHISPER]]
[-entropy {1,2}] [-b [BINDER]] [-wm [WATERMARK]] [-d] [-af] [-icon]
[-s [SIGN_CERTIFICATE]] [-dh]
Process loader and shellcode.
options:
-h, --help show this help message and exit
-f, --input-file INPUT_FILE
Path to binary.exe
-o, --output-file OUTPUT_FILE
Optional: Specify the output file path and name. If not provided, a random
file name will be used in the ./output directory.
-divide Divide flag (True or False)
-l, --loader LOADER Loader number (must be a non-negative integer)
-dll Compile the output as a DLL instead of an executable, can be run with
rundll32.exe
-cpl Compile the output as a CPL instead of an executable, can be run with
control.exe
-sleep Obfuscation Sleep flag with random sleep time (True or False)
-a, --anti-emulation Anti-emulation flag (True or False)
-cfg, --control-flow-guard
Disable Control Flow Guard (CFG) for the loader template.
-etw Enable ETW patching functionality
-j, --junk-api Insert junk API function call at a random location in the main function (5
API functions)
-dream [DREAM] Optional: Sleep with encrypted stacks for specified time in milliseconds.
Defaults to 1500ms if not provided.
-u, --api-unhooking Enable API unhooking functionality
-g, --god-speed Enable advanced unhooking technique Peruns Fart (God Speed)
-t, --shellcode-type {donut,pe2sh,rc4,amber,shoggoth}
Shellcode generation tool: donut (default), pe2sh, rc4, amber or shoggoth
-sd, --star_dust Enable Stardust PIC generator, input should be .bin
-sgn, --encode-sgn Encode the generated shellcode using sgn tool.
-e, --encoding {uuid,xor,mac,ipv4,base45,base64,base58,aes,des,chacha,rc4,aes2,ascon}
Encoding type: uuid, xor, mac, ip4, base45, base64, base58, AES, DES,
chacha, RC4 and aes2. aes2 is a devide and conquer AES decryption to
bypass logical path hijacking. Other encoders are under development.
-c, --compiler {mingw,pluto,akira}
Compiler choice: mingw (default), pluto, or akira
-mllvm MLLVM LLVM passes for Pluto or Akira compiler
-obf, --obfuscate Enable obfuscation of codebase (source code)
-obf_api, --obfuscate-api
Enable obfuscation of API calls in ntdll and kernel32.
-w, --syswhisper [SYSWHISPER]
Optional: Use SysWhisper for direct syscalls. 1 for random syscall jumps
(default), 2 for compiling with MingW and NASM.
-entropy {1,2} Entropy level for post-processing the output binary. 1 for null_byte.py, 2
for pokemon.py
-b, --binder [BINDER]
Optional: Path to a utility for binding. Defaults to binder/calc.exe if
not provided.
-wm, --watermark [WATERMARK]
Add watermark to the binary (0 for False, 1 or no value for True)
-d, --self-deletion Enable self-deletion of the binary after execution
-af, --anti-forensic Enable anti-forensic functions to clean the execution traces.
-icon Enable icon for the output binary.
-s, --sign-certificate [SIGN_CERTIFICATE]
Optional: Sign the output binary and copy metadata from another binary to
your output. If a website or filepath is provided, use it. Defaults to
interactive mode if no argument is provided.
-dh, --detect-hooks Compile a small tool called check_hook.exe for detecting inline/IAT/EAT
hooks. This tool can detect both native API and export function hooks.
loader modules:
1. Proxy syscall --> Custom call Stack + indirect syscall with threadless execution (local injection)
2. APC test alert
3. Sifu syscall
4. UUID manual injection
5. Remote mockingJay
6. Local thread hijacking
7. Function pointer invoke local injection
8. Ninja_syscall2
9. RW local mockingJay
10. Ninja syscall 1
11. Sifu Divide and Conquer syscall
12. [Your custom loader here]
14. Exit the process without executing the injected shellcode
15. Syswhispers2 classic native API calls
16. Classic userland API calls (VirtualAllcEx --> WriteProcessMemory --> CreateRemoteThread)
17. Sifu SysCall with Divide and Conquer
18. Classic userland API calls with WriteProcessMemoryAPC
19. DLL overloading
20. Stealth new Injection (WriteProcessMemoryAPC + DLL overloading)
21.
22. Advanced indirect custom call stack syscall, using VEH-->VCH logic and manually remove handlers from the list.
23.
24. Classic native API
25.
26. Stealth new Injection (3 WriteProcessMemoryAPC variants + custom DLL overloading + custom dynamic API-hashing)
27. Stealth new Injection (3 Custom WriteProcessMemoryAPC variants + custom DLL overloading + custom dynamic API-hashing + Halo's gate patching)
28. Halo's gate patching syscall injection + Custom write code to Process Memory by either MAC or UUID convertor + invisible dynamic loading (no loadModuleHandle, loadLibrary, GetProcessAddress)
29. Classic indirect syscall
30. Classic direct syscall
31. MAC address injection
32. Stealth new injection (Advanced)
33. Indirect Syscall + Halo gate + Custom Call Stack
34. EDR syscall no.1 + Halo gate + EDR Call Stack 1
36. EDR syscall no.2 + Halo gate + EDR Call Stack 2
37. Stealth new loader (Advanced, evade memory scan)
38. A novel PI with APC write method and phantom DLL overloading execution (CreateThread pointed to a memory address of UNMODIFIED DLL.)
39. Custom Stack PI (remote) with threadless execution
40. Custom Stack PI (remote) Threadless DLL Notification Execution
41. Custom Stack PI (remote) with Decoy code execution
48. Stealth new loader + Syscall breakpoints handler with memory guard AKA Sifu breakpoint handler (hook on NtResumeThread)
49. Stealth new loader + Syscall breakpoints handler with memory guard evasion AKA Sifu breakpoint handler (hook on NtCreateThreadEx, with Decoy address, PAGE_NOACCESS and XOR)
51. Stealth new loader + Syscall breakpoints handler with memory guard evasion AKA Sifu breakpoint handler (hook on ntdll!RtlUserThreadStart and kernel32!BaseThreadInitThunk, with Decoy address, PAGE_NOACCESS and XOR)
52. RoP gadgets as the trampoline code to execute the magic code.
53.
54. Stealth new loader + Exception handler + Syscall breakpoints handler with memory guard evasion AKA Sifu breakpoint handler (hook on ntdll!RtlUserThreadStart and kernel32!BaseThreadInitThunk, with Decoy address, PAGE_NOACCESS and XOR)
56. This is a fork of Loader 37 with additional features. If -ldr flag is not provided, loader will add module (contains the shellcode) to the PEB module lists manually using code from Dark library.
57. A fork of loader 51 with XOR replaced with RC4 encryption offered by SystemFunction032/033.
58. VEH add hanlder. Add ROP Trampoliine to the kernel32!BaseThreadInitThunk for additional complexity to analyse.
59. SEH add hanlder. Add ROP Trampoliine to the kernel32!BaseThreadInitThunk for additional complexity to analyse.
60. Use Page guard to trigger first exception to set debug registers without using NtGetContextThread --> NtSetContextThread
61. Use Page guard to trigger first exception to set debug registers without using NtGetContextThread --> NtSetContextThread + Use VEH to set up breakpoints Dr0~Dr3, Dr7. Then use VCH to execute the code. So, no registers and stack pointer and instruction pointer changed in VEH.
62. New loader in progress.
63. Remote version of custom module loading loader 37. Remote module injection.
64.
65. Advanced VMT hooking with custom module loader 37.
66. A fork of L-65, with additional features such as optional PPID spoofing, multiple shellcode and DLL injection mitigation policies enabled on remote process.
67. A fork of L-65, with strange trampoline code to execute the magic code in both local and remote process.
68. New loader in progress.
69. A fork of L-61, manually set VEH and VCH and clean ups by remove the CrossProcessFlags from TEB->PEB.
...
73. VT Pointer threadless process injection, can be invoked with decoy address to any function or triggered by injected application (e.g. explorer). Memory guard available with RC4 entryption and PAGE_NOACCESS.
74. VT Pointer threadless process injection, can be invoked with decoy address to any function or triggered by injected application (e.g. explorer). Memory guard available with RC4 entryption and PAGE_NOACCESS. The VirtualProtect is being called within pretext.
75. Dotnet JIT threadless process injection.
76. Module List PEB Entrypoint threadless process injection.
77. VT Pointer threadless process injection. Use RtlCreateHeap instead of BaseThreadInitThunk virtual table pointer.
Click to download: DEFCON-33-2.pdf
Rcx, Rdx, R8, and R9.(Rsp + 0x28).Boaz evasion wrapped Mimikatz.exe x64 release. The detection rate for wrapped Mimikatz is zero on Jotti:
Figure: Jotti scan results of boaz_mimi
Figure: Kaspersky EDR versus Mimikatz packed by Boaz
Figure: Kaspersky EDR versus Meterpreter reverse shell packed by Boaz
Figure: Sophos EDR versus Mimikatz packed by Boaz
We welcome contributions to improve the Boaz Evasion Tool. Please review CONTRIBUTING.md for guidelines on how to submit contributions.
We welcome submissions to pull requests and issues.
This is in development, please feel free to reach out to me @thomasmeeeee on X for any suggestions!
This project is licensed under the MIT License - see the LICENSE file for details.
A special thanks to the researchers and developers whose work has inspired, contributed to, and made this tool possible. All credit goes to the original authors of the techniques and tools:
And many more blogs and articles. Please feel free to add more...
For any queries or contributions, please contact the repository owner.
2,617 followers · starred Jan 2026
3,885 followers · starred Jul 2025
43 followers · starred Apr 2025
39 followers · starred Mar 2025
Multilayered AV/EDR Evasion Framework (no longer actively maintained)
C++
1,058
197 commits
updated Mar 28, 2026
Note: This project is no longer actively maintained. It may still receive occasional updates, but no regular development or support is planned. Use at your own discretion.
Features | Installation | Docker Setup & Installation | Usage | Evasion Module
Special thanks to Professor Rich Macfarlane @rjmacfarlane.
BOAZ (Bypass, Obfuscate, Adapt, Zero-trace) evasion was inspired by the concept of multi-layered approach which is the evasive version of defence-in-depth first mentioned in “One packer to rule them all” at BH USA14 (Swinnen & Mesbahi, 2014). BOAZ was developed to provide greater control over combinations of evasion methods, enabling more granular evaluations against antivirus and EDR [39].
BOAZ aims to bypass the before and during execution phases that span signature, heuristic and behavioural-based detection methods. BOAZ supports x64 binary (PE) or raw playload (.bin) as input. It has been tested on separated Window-11 Enterprise, Windows-10 and windows Server 2022 VMs (version: 22H2, 22621.1992) with 14 Desktop AVs and 7 EDRs installed include Windows Defender, Norton, BitDefender, Sophos and ESET. BOAZ’s modular design facilitates user customisation, enabling researchers to integrate their own toolsets or techniques. BOAZ is written in C++ and C and uses Python3 as the main linker to integrate all modules.
For students and researchers in offensive security, no advanced programming or scripting knowledge or skills are required to use BOAZ to generate undetectable polymorphic samples.
This tool has an alternative use: it can function as a packer or obfuscator.
Modular Design: Easily extendable with new tactics and techniques by adding scripts.
Signature Evasion:
bcf: Bogus Control Flowfla: Control Flow Flatteninggle: Global Variable Encryptionmba: Mixed-Boolean Arithmetic expressions (MBA)sub: Instruction Substitutionsidc: Indirect Call Promotionhlw: Hide LLVM IR Level WarningsHeuristic Evasion:
Behavioral Evasion:
git clone https://github.com/thomasxm/Boaz_beta/
cd Boaz_beta
bash requirements.sh
It should be noted that SGN encoder sometimes can generate bad characters, use with caution. requirements.sh will install LLVM, which takes a while to complete. BOAZ can be run without the -llvm handle; however, it is not optimised without the latter.
BOAZ can also be used via Docker to avoid dependency and build issues.
If Docker is not already installed on your system:
sudo apt install docker-cli -y
sudo apt install docker.io -y
sudo docker pull mmttxx20/boaz-builder:latest
sudo docker images | grep -in "boaz"
sudo docker run --rm -it \
--entrypoint /bin/bash \
-v "$HOME:/host_home" \
-v "$PWD:/boaz/output" \
--shm-size=1024M \
--name boaz_built \
mmttxx20/boaz-builder
/host_home maps your home directory inside the container.-v "$PWD:/boaz/output" mounts your current directory on the host to /boaz/output in the container.echo $HOMEpython3 Boaz.py -h
python3 Boaz.py -f /host_home/Boaz_beta/notepad.exe -o ./output/boaz_output.exe -t donut -l 16 -e uuid -c akira
-t donut: Use Donut as the position independent shellcode generator.-l 16: Use loader number 16.-e uuid: Encode the shellcode using UUID scheme.-c akira: Use Akira as the LLVM obfuscator and clang++ as the cross-compiler.After the process completes and you exit the container, the output binary boaz_output.exe will be present in your current working directory on the host.
Example usage:
python3 Boaz.py -f ~/testing_payloads/notepad_64.exe -o ./alice_notepad.exe -t donut -obf -l 1 -c pluto -e uuid
Use a built ELF executable in Linux environment:
./Boaz -f ~/testing_payloads/notepad_64.exe -o ./alice_notepad.exe -t donut -obf -l 1 -c akira -e des -a
Refer to the help command for more details on usage:
python3 Boaz.py -h
./Boaz -h
usage: Boaz.py [-h] [-f INPUT_FILE] [-o OUTPUT_FILE] [-divide] [-l LOADER] [-dll] [-cpl] [-sleep]
[-a] [-cfg] [-etw] [-j] [-dream [DREAM]] [-u] [-g]
[-t {donut,pe2sh,rc4,amber,shoggoth}] [-sd] [-sgn]
[-e {uuid,xor,mac,ipv4,base45,base64,base58,aes,des,chacha,rc4,aes2,ascon}]
[-c {mingw,pluto,akira}] [-mllvm MLLVM] [-obf] [-obf_api] [-w [SYSWHISPER]]
[-entropy {1,2}] [-b [BINDER]] [-wm [WATERMARK]] [-d] [-af] [-icon]
[-s [SIGN_CERTIFICATE]] [-dh]
Process loader and shellcode.
options:
-h, --help show this help message and exit
-f, --input-file INPUT_FILE
Path to binary.exe
-o, --output-file OUTPUT_FILE
Optional: Specify the output file path and name. If not provided, a random
file name will be used in the ./output directory.
-divide Divide flag (True or False)
-l, --loader LOADER Loader number (must be a non-negative integer)
-dll Compile the output as a DLL instead of an executable, can be run with
rundll32.exe
-cpl Compile the output as a CPL instead of an executable, can be run with
control.exe
-sleep Obfuscation Sleep flag with random sleep time (True or False)
-a, --anti-emulation Anti-emulation flag (True or False)
-cfg, --control-flow-guard
Disable Control Flow Guard (CFG) for the loader template.
-etw Enable ETW patching functionality
-j, --junk-api Insert junk API function call at a random location in the main function (5
API functions)
-dream [DREAM] Optional: Sleep with encrypted stacks for specified time in milliseconds.
Defaults to 1500ms if not provided.
-u, --api-unhooking Enable API unhooking functionality
-g, --god-speed Enable advanced unhooking technique Peruns Fart (God Speed)
-t, --shellcode-type {donut,pe2sh,rc4,amber,shoggoth}
Shellcode generation tool: donut (default), pe2sh, rc4, amber or shoggoth
-sd, --star_dust Enable Stardust PIC generator, input should be .bin
-sgn, --encode-sgn Encode the generated shellcode using sgn tool.
-e, --encoding {uuid,xor,mac,ipv4,base45,base64,base58,aes,des,chacha,rc4,aes2,ascon}
Encoding type: uuid, xor, mac, ip4, base45, base64, base58, AES, DES,
chacha, RC4 and aes2. aes2 is a devide and conquer AES decryption to
bypass logical path hijacking. Other encoders are under development.
-c, --compiler {mingw,pluto,akira}
Compiler choice: mingw (default), pluto, or akira
-mllvm MLLVM LLVM passes for Pluto or Akira compiler
-obf, --obfuscate Enable obfuscation of codebase (source code)
-obf_api, --obfuscate-api
Enable obfuscation of API calls in ntdll and kernel32.
-w, --syswhisper [SYSWHISPER]
Optional: Use SysWhisper for direct syscalls. 1 for random syscall jumps
(default), 2 for compiling with MingW and NASM.
-entropy {1,2} Entropy level for post-processing the output binary. 1 for null_byte.py, 2
for pokemon.py
-b, --binder [BINDER]
Optional: Path to a utility for binding. Defaults to binder/calc.exe if
not provided.
-wm, --watermark [WATERMARK]
Add watermark to the binary (0 for False, 1 or no value for True)
-d, --self-deletion Enable self-deletion of the binary after execution
-af, --anti-forensic Enable anti-forensic functions to clean the execution traces.
-icon Enable icon for the output binary.
-s, --sign-certificate [SIGN_CERTIFICATE]
Optional: Sign the output binary and copy metadata from another binary to
your output. If a website or filepath is provided, use it. Defaults to
interactive mode if no argument is provided.
-dh, --detect-hooks Compile a small tool called check_hook.exe for detecting inline/IAT/EAT
hooks. This tool can detect both native API and export function hooks.
loader modules:
1. Proxy syscall --> Custom call Stack + indirect syscall with threadless execution (local injection)
2. APC test alert
3. Sifu syscall
4. UUID manual injection
5. Remote mockingJay
6. Local thread hijacking
7. Function pointer invoke local injection
8. Ninja_syscall2
9. RW local mockingJay
10. Ninja syscall 1
11. Sifu Divide and Conquer syscall
12. [Your custom loader here]
14. Exit the process without executing the injected shellcode
15. Syswhispers2 classic native API calls
16. Classic userland API calls (VirtualAllcEx --> WriteProcessMemory --> CreateRemoteThread)
17. Sifu SysCall with Divide and Conquer
18. Classic userland API calls with WriteProcessMemoryAPC
19. DLL overloading
20. Stealth new Injection (WriteProcessMemoryAPC + DLL overloading)
21.
22. Advanced indirect custom call stack syscall, using VEH-->VCH logic and manually remove handlers from the list.
23.
24. Classic native API
25.
26. Stealth new Injection (3 WriteProcessMemoryAPC variants + custom DLL overloading + custom dynamic API-hashing)
27. Stealth new Injection (3 Custom WriteProcessMemoryAPC variants + custom DLL overloading + custom dynamic API-hashing + Halo's gate patching)
28. Halo's gate patching syscall injection + Custom write code to Process Memory by either MAC or UUID convertor + invisible dynamic loading (no loadModuleHandle, loadLibrary, GetProcessAddress)
29. Classic indirect syscall
30. Classic direct syscall
31. MAC address injection
32. Stealth new injection (Advanced)
33. Indirect Syscall + Halo gate + Custom Call Stack
34. EDR syscall no.1 + Halo gate + EDR Call Stack 1
36. EDR syscall no.2 + Halo gate + EDR Call Stack 2
37. Stealth new loader (Advanced, evade memory scan)
38. A novel PI with APC write method and phantom DLL overloading execution (CreateThread pointed to a memory address of UNMODIFIED DLL.)
39. Custom Stack PI (remote) with threadless execution
40. Custom Stack PI (remote) Threadless DLL Notification Execution
41. Custom Stack PI (remote) with Decoy code execution
48. Stealth new loader + Syscall breakpoints handler with memory guard AKA Sifu breakpoint handler (hook on NtResumeThread)
49. Stealth new loader + Syscall breakpoints handler with memory guard evasion AKA Sifu breakpoint handler (hook on NtCreateThreadEx, with Decoy address, PAGE_NOACCESS and XOR)
51. Stealth new loader + Syscall breakpoints handler with memory guard evasion AKA Sifu breakpoint handler (hook on ntdll!RtlUserThreadStart and kernel32!BaseThreadInitThunk, with Decoy address, PAGE_NOACCESS and XOR)
52. RoP gadgets as the trampoline code to execute the magic code.
53.
54. Stealth new loader + Exception handler + Syscall breakpoints handler with memory guard evasion AKA Sifu breakpoint handler (hook on ntdll!RtlUserThreadStart and kernel32!BaseThreadInitThunk, with Decoy address, PAGE_NOACCESS and XOR)
56. This is a fork of Loader 37 with additional features. If -ldr flag is not provided, loader will add module (contains the shellcode) to the PEB module lists manually using code from Dark library.
57. A fork of loader 51 with XOR replaced with RC4 encryption offered by SystemFunction032/033.
58. VEH add hanlder. Add ROP Trampoliine to the kernel32!BaseThreadInitThunk for additional complexity to analyse.
59. SEH add hanlder. Add ROP Trampoliine to the kernel32!BaseThreadInitThunk for additional complexity to analyse.
60. Use Page guard to trigger first exception to set debug registers without using NtGetContextThread --> NtSetContextThread
61. Use Page guard to trigger first exception to set debug registers without using NtGetContextThread --> NtSetContextThread + Use VEH to set up breakpoints Dr0~Dr3, Dr7. Then use VCH to execute the code. So, no registers and stack pointer and instruction pointer changed in VEH.
62. New loader in progress.
63. Remote version of custom module loading loader 37. Remote module injection.
64.
65. Advanced VMT hooking with custom module loader 37.
66. A fork of L-65, with additional features such as optional PPID spoofing, multiple shellcode and DLL injection mitigation policies enabled on remote process.
67. A fork of L-65, with strange trampoline code to execute the magic code in both local and remote process.
68. New loader in progress.
69. A fork of L-61, manually set VEH and VCH and clean ups by remove the CrossProcessFlags from TEB->PEB.
...
73. VT Pointer threadless process injection, can be invoked with decoy address to any function or triggered by injected application (e.g. explorer). Memory guard available with RC4 entryption and PAGE_NOACCESS.
74. VT Pointer threadless process injection, can be invoked with decoy address to any function or triggered by injected application (e.g. explorer). Memory guard available with RC4 entryption and PAGE_NOACCESS. The VirtualProtect is being called within pretext.
75. Dotnet JIT threadless process injection.
76. Module List PEB Entrypoint threadless process injection.
77. VT Pointer threadless process injection. Use RtlCreateHeap instead of BaseThreadInitThunk virtual table pointer.
Click to download: DEFCON-33-2.pdf
Rcx, Rdx, R8, and R9.(Rsp + 0x28).Boaz evasion wrapped Mimikatz.exe x64 release. The detection rate for wrapped Mimikatz is zero on Jotti:
Figure: Jotti scan results of boaz_mimi
Figure: Kaspersky EDR versus Mimikatz packed by Boaz
Figure: Kaspersky EDR versus Meterpreter reverse shell packed by Boaz
Figure: Sophos EDR versus Mimikatz packed by Boaz
We welcome contributions to improve the Boaz Evasion Tool. Please review CONTRIBUTING.md for guidelines on how to submit contributions.
We welcome submissions to pull requests and issues.
This is in development, please feel free to reach out to me @thomasmeeeee on X for any suggestions!
This project is licensed under the MIT License - see the LICENSE file for details.
A special thanks to the researchers and developers whose work has inspired, contributed to, and made this tool possible. All credit goes to the original authors of the techniques and tools:
And many more blogs and articles. Please feel free to add more...
For any queries or contributions, please contact the repository owner.
2,617 followers · starred Jan 2026
3,885 followers · starred Jul 2025
43 followers · starred Apr 2025
39 followers · starred Mar 2025