DrSemu is a malware Detection and Classification Tool Based on Dynamic Behavior.
It runs executables in an isolated environment, monitors the behavior of a process, and based on Dr.Semu rules created by you or the community, detects if the process is malicious or not.
With Dr.Semu you can create rules to detect malware based on dynamic behavior of a process.
Everything happens from the user-mode. Windows Projected File System (ProjFS) is used to provide a virtual file system. For Registry redirection, it clones all Registry hives to a new location and redirects all Registry accesses.
See the source code for more about other redirections (process/objects isolation, etc).
Also Read – Fuzzowski : The Network Protocol Fuzzer
Dr.Semu uses DynamoRIO (Dynamic Instrumentation Tool Platform) to intercept a thread when it’s about to cross the user-kernel line.
It has the same effect as hooking SSDT but from the user-mode and without hooking anything.
At this phase, Dr.Semu produces a JSON file, which contains information from the interception.
After terminating the process, based on Dr.Semu rules we receive if the executable is detected as malware or not.
They are written in Python or LUA (located under dr_rules) and use dynamic information from the interception and static information about the sample. It’s trivial to add support of other languages.
Example (Python): https://gist.github.com/secrary/ac89321b8a7bde998a6e3139be49eb72
Example (Lua): https://gist.github.com/secrary/e16daf698d466136229dc417d7dbcfa3
PowerShell to enable ProjFS in an elevated PowerShell window:Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
DynamoRIO and extract into DrSemu folder and rename to dynamorioDrSemu.exe –target file_path
DrSemu.exe –target files_directory
BUILD
PowerShell to enable ProjFS in an elevated PowerShell window:Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
DynamoRIO and extract into bin folder and rename to dynamoriope-parser-library.lib library:DrSemu\shared_libs\pe_parse using cmake-guibuild (\shared_libs\pe_parse\build\pe-parser-library\Release\) and 64-bit one under build64Multi-threaded (/MT)LauncherCLI As StartUp ProjectLimitations
Windows 10, version 1809 (due to Windows Projected File System)Windows 10, version 1809 (DynamoRIO supports Windows 10 versions until 1809)Journalists use OSINT to verify public information before publishing. In 2026, misinformation, AI-generated images, fake…
Docker is an open-source platform that lets you package and run applications inside containers. Each container…
PostgreSQL (often called Postgres) is an open-source relational database system. It supports advanced features like JSON…
Xrdp is an open-source server that lets you connect to your Ubuntu machine from another computer…
Apache Tomcat is an open-source web server and Java servlet container. It is one of the…
Keeping your Ubuntu system updated is one of the best ways to protect it. Security…