
.NET process monitor that hooks CLR at the native layer, dumps reflective assemblies from memory, and checks AMSI/ETW integrity vs on disk binaries.
tommorow pushing an update, changing license and aswell few new mons agaisnt data staelers.
![]()
![]()
![]()
windows tool i made cuz i got tired of staring at jlaive forks in malware samples with nothing public to actually rip them apart at runtime.
in short, it's a .net process monitor that hooks the clr at the native layer, tracks reflective assembly loads, and automatically dumps pes directly from memory. it also checks amsi and etw integrity against the original on disk binaries while detecting bypass techniques such as clr.dll string patching and direct LoadFromBuffer usage.
where to find samples ? i recommend checking out https://tria.ge (not an ad) and u can download any sample that u want and filter based on a family
you might be wondering, why the name nemesis?
because it represents the exact purpose of the tool. a nemesis is something that stands as a constant challenge or downfall for an opponent and that's the idea behind this project.
in greek myth nemesis was the spirit of divine retribution the one who handed out payback to anyone who got too arrogant or thought they were untouchable. bit on the nose for malware that brags about being "fud" if you ask me.
im a malware analyst. if you do this job(hobby for me) long enough you start seeing the same loader chains over and over especially since jlaive (also called crybat) blew up and every script kiddy forked it.
the pattern is stupid simple but annoying as hell to deal with:
something.bat → obfuscated powershell → csharp stub → your actual payload
you double-click a .bat that looks like word salad. cmd kicks off powershell with a wall of junk. powershell decrypts/decompresses a .net stub (aes, gzip, base64). that stub patches amsi + etw, reflectively loads the real exe/dll in memory, and youre done nothing friendly ever hits disk in a useful form.
that bugged me. there isn't really a good public tool aimed at fighting this specific chain hooking where the .net payload actually materializes, dumping it before the process eats itself, catching the amsi/etw patches these stubs always do. so i built nemesis.
not a silver bullet. not gonna replace your sandbox. but it gives you something real to run against a suspicious .bat on a test box and actually pull artifacts out.
launcher (Launcher.exe)
Nemesis.dll before main thread runsnemesis dll (Nemesis.dll)
nLoadImagenLoadFileAssemblyNative::LoadFromBuffer (pattern resolved off nLoadImage)%TEMP%\Nemesis_dumpsamsi.dll / ntdll.dll exports against on disc copies (catches the classic ret patch on AmsiScanBuffer / EtwEventWrite).rdata strings when clr is loaded (some bypasses patch those instead, theres a great vxug paper on it called; 2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf )%TEMP%\Nemesis.log it has also to avoid issues with console being lets say weird :Dbasically: let the bat chain run, catch the payload where the crypter actually loads it, and log the evasion tricks on the way.
need visual studio 2022+ with c++ desktop + masm (x64).
open Nemesis.slnx, pick Release | x64, build solution.
this is the actual use case point it at a suspicious bat and see what falls out:
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"
extra args after -- get passed to the target:
.\Launcher.exe myapp.exe -- --some-flag
custom dll path:
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe
artifacts:
%TEMP%\Nemesis.log%TEMP%\Nemesis_dumpsis:
isn't:
LNK1104? something still has nemesis.dll loaded kill the target and rebuildpwsh.exe vcpkg noise during build is harmless, ignore itif you wanna understand what you're fighting:
by using nemesis you accept this. it's provided as-is with no warranty — you assume all risk.
you're solely responsible for lawful, authorized use (lab vms, owned systems, explicit permission). to the maximum extent permitted by law, the authors and zypherion.tech disclaim all liability for any damages, losses, or legal claims arising from use or misuse. see LICENSE for full terms.
non-commercial / personal / research / hobby use → PolyForm Noncommercial 1.0.0
commercial use (selling it, paid product, saas, client work, etc.) → you need a separate license. polyform noncommercial doesn't cover that.
hit me up if you want a commercial license:
[[email protected] / @wd6g(discord) / telegram: @ZypherionTechnologies]
quick note i have to look into compilemethod and fix it as of now its not somewhat needed as crypters dont usually use it at all... since they have to use
asm.load(...)also reminds me i have to check rdata str as i havent test that properly sadly... dont do a PR with a dumb code please, u cannot hook n(Native) backends e.g nLoadImage normall u have to preserve registers and its just meh, thats why we use asm.
ENABLE_VIRTUAL_TERMINAL_PROCESSING