
Beaengine adalah perpustakaan C yang dirancang untuk memecahkan kode instruksi dari 16 bit, 32 bit dan 64 bit arsitektur intel. It includes standard instructions set and instructions set from FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX, CLMUL, AES, MPX, AVX, AVX2, AVX512 (VEX & EVEX prefixes), CET, BMI1, BMI2, SGX, UINTR, KL, TDX and AMX extensions. Jika Anda ingin menganalisis kode berbahaya dan lebih umum kode yang dikaburkan, Beaengine mengirimkan kembali struktur kompleks yang menggambarkan dengan tepat instruksi yang dianalisis.
You can use it in C/C++ (usable and compilable with Visual Studio, GCC, MinGW, DigitalMars, BorlandC, WatcomC, SunForte, Pelles C, LCC), in assembler (usable with masm32 and masm64, nasm, fasm, GoAsm) in C#, in Python3, in Delphi, in PureBasic and in WinDev. Anda dapat menggunakannya dalam mode pengguna dan mode kernel.
Pertama, Anda dapat mengambil mnemonik dan operan sesuai dengan sintaks yang ditentukan: sintaks Intel untuk NASM, MASM32 dan MASM64, GoASM32 dan Goasm64, FASM (tidak ada sintaks AT&T sebenarnya). Selanjutnya, Anda dapat mewujudkan analisis yang akurat tentang aliran data dan aliran kontrol untuk menghasilkan irisan atau pola kebingungan.
Kode sumbernya berada di bawah lisensi LGPL3 dengan "Builder Makefile" dan header untuk bahasa berikut: C/C ++, C#, Python3, Delphi, Purebasic, MASM32, MASM64, NASM (x86 dan x64), FASM (x86 dan x64), GoSM (x86 dan x64), FASM (x86 dan x64), GoSM (x86 dan x64).
Beaengine diimplementasikan menggunakan tabel opcode dari dokumentasi Intel, tabel dari situs web Christian Ludloff www.sandpile.org dan Project X86Doc dari Felix Cloutier https://www.felixcliutier.com
Perangkat lunak ini didistribusikan di bawah lisensi LGPL. Lihat file menyalin dan menyalin.Lesser untuk lebih jelasnya.
#!/usr/bin/python3
from BeaEnginePython import *
instr = Disasm(bytes.fromhex('6202054000443322'))
instr.read()
print(instr.repr())
Output adalah:
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())
Output adalah:
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()
Mari kita mengekstrak struktur instruksi lengkap:
#!/usr/bin/python3
from BeaEnginePython import *
instr = Disasm(bytes.fromhex('62017d8115443322'))
instr.read()
print(instr.json())
Output adalah:
{
"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/releases
apt install cmake
git clone https://github.com/BeaEngine/beaengine.git
cmake beaengine
make
cmake -DoptBUILD_DLL=ON beaengine
make
Dokumentasi saat ini di sini menjelaskan bagaimana struktur kerja dari Beaengine.
Dokumentasi lama dapat dibaca di sini: http://beatrix2004.free.fr/beaengine/index1.php
Setiap rilis Beaengine disediakan dengan dokumentasi 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
Beberapa contoh dasar untuk menunjukkan bagaimana Beaengine bekerja di sini
Jika Anda ingin meningkatkan Beaengine atau hanya menambahkan beberapa fitur pribadi, berikut adalah beberapa tautan: