
Beaengine هي مكتبة C مصممة لفك تشفير التعليمات من 16 بت و 32 بت و 64 بت من بنية Intel. ويتضمن تعيين تعليمات قياسية وتعليمات من FPU ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ، SSE4.1 ، SSE4.2 ، VMX ، CLMUL ، AES ، MPX ، AVX ، AVX2 ، AVX512 (PRIMES VEX & EVEX) ، CET ، BMI1 ، BMI2 ، إذا كنت ترغب في تحليل الرموز الخبيثة والرموز المفرطة بشكل عام ، فإن Beaengine ترسل بنية معقدة تصف بالتحديد التعليمات التي تم تحليلها.
يمكنك استخدامه في C/C ++ (قابلة للاستخدام وقابلة للتجميع مع Visual Studio و GCC و Mingw و DigitalMars و Borlandc و Watcomc و Sunforte و Pelles C و LCC) ، في التجميع (قابل للاستخدام مع Masm32 و Masm64 ، Nasm ، Fasm ، Goas) في Python3 ، في Delphi ، في Puredbasic. يمكنك استخدامه في وضع المستخدم ووضع kernel.
أولاً ، يمكنك استرداد ذكاء ومواد المعاملات وفقًا للبناء المحدد: بناء جملة Intel لـ NASM و MASM32 و MASM64 و GOASM32 و GOASM64 ، FASM (NO AT&T SYNTAX فعليًا). بعد ذلك ، يمكنك إدراك تحليل دقيق على تدفق البيانات وتدفق التحكم لإنشاء شرائح أو أنماط التشويش.
يقع رمز المصدر الخاص به تحت ترخيص LGPL3 مع "منشئ Makefile" ورؤوس اللغات التالية: C/C ++ ، C#، Python3 ، Delphi ، Purebasic ، Masm32 ، Masm64 ، Nasm (X86 و X64) ، Fasm (X86 و X64) ، Goasm (X86 و X64).
يتم تنفيذ Beaengine باستخدام جداول OpCode من وثائق Intel ، والجداول من موقع Christian Ludloff www.sandpile.org والمشروع x86doc من Felix Cloutier https://www.felixclouter.com
يتم توزيع هذا البرنامج تحت رخصة LGPL. راجع ملفات النسخ والنسخ.
#!/usr/bin/python3
from BeaEnginePython import *
instr = Disasm(bytes.fromhex('6202054000443322'))
instr.read()
print(instr.repr())
الإخراج هو:
vpshufb zmm24, zmm31, zmmword ptr [r11+r14+0880h]
rax : #!/usr/bin/python3
from BeaEnginePython import *
buffer = bytes.fromhex('4831c04889fbffc04989c49031ed66586a005f80c40c')
instr = Disasm(buffer)
while instr.read() > 0:
if instr.modifies("rax"):
print(f"{instr.repr():20}rax register is modified")
else:
print(instr.repr())
الإخراج هو:
xor rax, rax rax register is modified
mov rbx, rdi
inc eax rax register is modified
mov r12, rax
nop
xor ebp, ebp
pop ax rax register is modified
push 00000000h
pop rdi
add ah, 0Ch rax register is modified
#!/usr/bin/python3
from BeaEnginePython import *
instr = Disasm(bytes.fromhex('e90000000090e901000000cc90'))
while instr.read() > 0:
print(instr.repr())
if instr.is_jump():
instr.follow()
دعنا نستخرج بنية التعليمات الكاملة:
#!/usr/bin/python3
from BeaEnginePython import *
instr = Disasm(bytes.fromhex('62017d8115443322'))
instr.read()
print(instr.json())
الإخراج هو:
{
"repr": "vunpckhpd xmm24, xmm16, xmmword ptr [r11+r14+0220h]",
"category": "AVX512_INSTRUCTION",
"mnemonic": "vunpckhpd ",
"bytes": "62 01 7d 81 15 44 33 22",
"error": 0,
"arch": 64,
"operands": {
"1": {
"repr": "xmm24",
"type": "register",
"size": 128,
"mode": "write",
"register": {
"type": "xmm",
"value": "REG24"
}
},
"2": {
"repr": "xmm16",
"type": "register",
"size": 128,
"mode": "read",
"register": {
"type": "xmm",
"value": "REG16"
}
},
"3": {
"repr": "r11+r14+0220h",
"type": "memory",
"size": 128,
"mode": "read",
"memory": {
"base": "REG11",
"index": "REG14",
"scale": 1,
"displacement": "0x22"
}
}
},
"registers": {
"modified": {
"type": 4,
"gpr": "",
"mmx": "",
"xmm": "REG24",
"ymm": "",
"zmm": "",
"special": "",
"cr": "",
"dr": "",
"mem_management": "",
"mpx": "",
"opmask": "",
"segment": "",
"fpu": "",
"tmm": ""
},
"read": {
"type": 5,
"gpr": "REG11+REG14",
"mmx": "",
"xmm": "REG16",
"ymm": "",
"zmm": "",
"special": "",
"cr": "",
"dr": "",
"mem_management": "",
"mpx": "",
"opmask": "",
"segment": "",
"fpu": "",
"tmm": ""
}
},
"rflags": {
"of": null,
"sf": null,
"zf": null,
"af": null,
"pf": null,
"cf": null,
"tf": null,
"if": null,
"df": null,
"nt": null,
"rf": null
}
}
https://github.com/beaengine/beaengine/release
apt install cmake
git clone https://github.com/BeaEngine/beaengine.git
cmake beaengine
make
cmake -DoptBUILD_DLL=ON beaengine
make
الوثائق الحالية هنا تشرح كيف هي هياكل العمل من Beaengine.
يمكن قراءة الوثائق القديمة هنا: http://beatrix2004.free.fr/beaengine/index1.php
يتم تزويد كل إصدار Beaengine مع وثائق PDF:
sudo apt install pandoc texlive-latex-extra
cd doc
pandoc --highlight-style tango -V mainfont="Arial" -V geometry:margin=1cm --output=beaengine.pdf beaengine.md
pandoc --highlight-style tango -V mainfont="Arial" -V geometry:margin=1cm --output=examples.pdf examples.md
بعض الأمثلة الأساسية لإظهار كيف تعمل Beaengine هنا
إذا كنت ترغب في تحسين Beaengine أو مجرد إضافة بعض الميزات الخاصة ، فإليك بعض الروابط: