
محاكي أجهزة x86 مكتوب بلغة Rust النقية ومحاكي عمليات ويندوز لتحليل البرمجيات الخبيثة، ومحاكاة الشِل كود، وفك تغليف الحمولات. يدعم الملفات التنفيذية PE ذات 32/64 بت، وMetasploit، وCobalt Strike، وعائلات البرمجيات الخبيثة المعقدة.
إنه محاكي عتاد + محاكي عمليات نظام تشغيل مُنفَّذ بلغة Rust الخالصة.
هذا النهج مريح جدًا لتحليل البرمجيات الخبيثة وأمور أخرى (PE، shellcode، إلخ)
يدعم معماريات x86 بنسختي 32/64-bit و AArch64. نظام التشغيل المستهدف الأساسي هو Windows (محاكاة كاملة للعمليات مع PEB/TEB/LDR، واعتراض WinAPI واستدعاءات النظام)، مع دعم متنامٍ لـ Linux و macOS (استدعاءات النظام، ومحمّلات ELF/Mach-O، وطبقات توافق libc).

تمت إعادة تسمية المشروع من scemu إلى mwemu.
r2con2025 يستخدم radare2 من mwemu لإجراء التحليل الساكن والتصور داخل لحظة محاكاة.
📦 أمان rust، جيد لمحاكاة البرمجيات الخبيثة.
⚡ محاكاة سريعة جدًا
make test_speed (يبني نسخة release ويحاكي 20M تعليمة من enigma، مع الإبلاغ عن الوقت المنقضي)مدعوم بمكتبة iced-x86 rust dissasembler الرائعة.
أداة سطر أوامر، ومكتبة rust، ومكتبة python.
كاشف التكرار.
تتبع الذاكرة والسجلات.
ملوّن.
التوقف عند لحظة محددة واستكشاف الحالة أو تعديلها.
339 تعليمة CPU مُنفَّذة.
260 winapi بنسخة 32bits من 15 dll.
204 winapi بنسخة 64bits من 10 dll.
جميع استدعاءات نظام linux.
سلاسل SEH.
معالج الاستثناءات الموجهة (vectored exception handler).
هياكل PEB، TEB.
الربط الديناميكي.
ربط IAT.
التحميل المتأخر.
مُخصِّص الذاكرة.
التفاعل مع int3.
cpuid غير مُنقَّح.
محاكاة shellcode بنسختي 32bits و 64bits.
محاكاة ملفات pe32 و pe64 التنفيذية.
محاكاة كاملة مع حِمولات معروفة:
محاكاة جزئية مع دوال برمجيات خبيثة معقدة:
أثناء المحاكاة يمكنك رؤية عدد تعليمات cpu المُحاكاة، وهو مُعرِّف فريد للحظة محاكاة.
مع العَلَم -c توقف المحاكاة عند لحظة محددة وتفحّص ما يجري عبر الطرفية.
MWEMU emulator for malware 0.7.11
@sha0coder
USAGE:
mwemu [FLAGS] [OPTIONS]
FLAGS:
-6, --64bits enable 64bits architecture emulation
--banzai skip unimplemented instructions, and keep up emulating what can be emulated
--flags trace the flags hex value in every instruction.
-F, --fpu trace the fpu states.
-h, --handle handle Ctrl+C to spawn console
--help Prints help information
-l, --loops show loop interations, it is slow.
-m, --memory trace all the memory accesses read and write.
-n, --nocolors print without colors for redirectin to a file >out
-r, --regs print the register values in every step.
-p, --stack_trace trace stack on push/pop
-t, --test test mode
--version Prints version information
-v, --verbose -vv for view the assembly, -v only messages, without verbose only see the api calls and goes
faster
OPTIONS:
-A, --args <ARGS> provide arguments to the EXE like: --args '"aa" "bb"'
--cmd <COMMAND> launch a console command
-b, --base <ADDRESS> set base address for code
-c, --console <NUMBER> select in which moment will spawn the console to inspect.
-C, --console_addr <ADDRESS> spawn console on first eip = address
-d, --dump <FILE> load from dump.
-a, --entry <ADDRESS> entry point of the shellcode, by default starts from the beginning.
-e, --exit <POSITION> exit position of the shellcode
-f, --filename <FILE> set the shellcode binary file.
-i, --inspect <DIRECTION> monitor memory like: -i 'dword ptr [ebp + 0x24]
--iso <ISO> extract genuine system32 DLLs from a Windows ISO and use them as the maps folder, e.g. --iso ~/Downloads/win11.iso
-L, --log <LOG_FILENAME> log output to file
-M, --maps <PATH> select the memory maps folder
--mxcsr <MXCSR> set mxcsr register
--r10 <R10> set r10 register
--r11 <R11> set r11 register
--r12 <R12> set r12 register
--r13 <R13> set r13 register
--r14 <R14> set r14 register
--r15 <R15> set r15 register
--r8 <R8> set r8 register
--r9 <R9> set r9 register
--rax <RAX> set rax register
--rbp <RBP> set rbp register
--rbx <RBX> set rbx register
--rcx <RCX> set rcx register
--rdi <RDI> set rdi register
--rdx <RDX> set rdx register
-R, --reg <REGISTER1,REGISTER2> trace a specific register in every step, value and content
--rflags <RFLAGS> set rflags register
--rsi <RSI> set rsi register
--rsp <RSP> set rsp register
-x, --script <SCRIPT> launch an emulation script, see scripts_examples folder
--stack_address <ADDRESS> set stack address
-s, --string <ADDRESS> monitor string on a specific address
-T, --trace <TRACE_FILENAME> output trace to specified file
-S, --trace_start <TRACE_START> start trace at specified position
-V, --verbose_at <NUMBER> start displaying assembly at specific position (is like -vv enabled in specific
moment)
يحتاج 64bits إلى العلامة -6، و-vv لعرض ASM، و-c لفتح وحدة التحكم في لحظة محددة:
cargo run --release -- -f /tmp/shellcode.bin -6 -vv -c 19291
cargo run --release -- -f /bin/ls -6 -A '"-l"' -v
cargo run --release -- -f calc.exe -6 --winver win11
cargo run --release -- -f calc.exe -6 --winver win11 --syscall-mode