
أداة REPL ومحاكٍ للغة التجميع (Assembly) متعددة البنى لسطر الأوامر.
scare هو مُفسِّر أوامر (REPL) ومحاكٍ متعدد البنى للتجميع، يعمل في سطر الأوامر.
لا يوجد الكثير من مُفسِّرات أوامر التجميع الحديثة في الساحة. تلك الموجودة إما تطبيقات ويب غير شفافة، أو مرتبطة ببنية/منصة محددة. صُمم scare للأشخاص الذين يريدون اختبار كود التجميع أو التجربة عليه أو اللعب به. يتم تشغيل كل كود تم تجميعه داخل محاكٍ، ينفّذ فقط الكود الذي تعطيه إياه. التصميم متعدد البنى لمكتبة scarelib الأساسية مصمم ليكون نمطيًا (modular)، مما يسمح بإضافة بنى جديدة بسرعة.
الإصدار 0.3.0 هو أول إصدار عام من scare.
الميزات الأساسية
البنى المدعومة حاليًا
المتطلبات
استدعِ scare من سطر الأوامر مع البنية المطلوبة. سيؤدي ذلك إلى إنشاء جلسة REPL بالإعدادات الافتراضية.
python3 scare.py -a x64
ملف المساعدة
[x64]400000> /
scare Help
/ /? /help -- Open help menu
/x /exit /q /quit -- Quit the program
/back n -- Go back n number of lines
/dis {0xaddress|$register} NUM -- Disassemble NUM bytes from 0xaddress or $register
/export FILETYPE FILENAME -- Export machine code as FILETYPE to the FILENAME
FILETYPE List:
- bin
- elf64
- pe32
/info -- Info about the emulator state
/l /list -- List the current program
/load file.asm -- Load listing from file.asm (overwrites current program)
/read {0xaddress|$register} NUM -- Read NUM bytes from 0xaddress or $register
/reset -- Reset the emulator to a clean state
/run -- Run the current program
/save file.asm -- Save assembly output to file.asm
[[: Config Commands :]] (Use /c or /config)
NOTE: Run /reset if you are changing emu/* options, otherwise the emulator may not start!
/c -- Print all config options
/c emu/arch -- Print Arch Value
/c emu/arch x64 -- Set Arch to x64
/c x86/xmm 1 -- Enable x86/xmm
التراجع إلى الخلف في قائمة التجميع
mov eax, 0x5555
mov ebx, 0xaaaa
xor eax, ebx
/l
/back 2
mov ecx, 0xbbbb
add eax, ecx
تحميل ملف وحفظ ملف
/load examples/x64/test.asm
/l
/run
/read $rsp 32
pop rdx
/save test2.asm
التصدير كملف ثنائي؛ ستحصل هنا على ملف elf64 باسم exit55.elf يُنهي البرنامج عند تشغيله.
mov eax, 0x3c
mov edi, 55
syscall
/export elf64 exit55.elf
استخدام خيارات الإعداد
not rax
/c x86/xmm 1
movq xmm4, rax
movaps xmm5, xmm4
فك ترميز الشيل كود:

تصدير الكود إلى elf64 وتشغيله:

هناك العديد من الأشياء الرائعة التي يمكن إضافتها في المستقبل: المزيد من البنى (سواء المعروفة أو الغامضة)، والمزيد من أوضاع المعالج، ومحاكاة أفضل للبيئة، والتبديل الساخن بين مكتبات المحاكاة والتجميع والتفكيك، إلخ. جعل المحاكي والمُجمِّع والمُفكِّك يعملون معًا بسلاسة ليس بالأمر المباشر دائمًا.
قد لا تكون بعض الميزات مدعومة حاليًا لأنها تتطلب اتخاذ قرارات حول إعداد المحاكي. الهدف من هذا المشروع هو أن يكون حلاً عامًا لمُفسِّر أوامر ومحاكٍ لبنية مستهدفة. ونتيجة لذلك، ستكون خارطة الطريق للتطوير هي "إضافة الأشياء التي يطرحها الناس"، مع الحفاظ على سهولة الاستخدام والتطوير.
إذا كانت لديك أفكار، فلا تتردد في تقديم طلب سحب (PR).
إذا وجدت خطأً برمجيًا، فلا تتردد في فتح issue.
شكرًا لك واستمتع!
~ netspooky
تحية إلى haunted crew