
BeaEngine ist eine C -Bibliothek, mit der Anweisungen aus 16 Bits, 32 Bits und 64 -Bit -Intel -Architekturen dekodiert wurden. Es enthält Standardanweisungen und Anweisungen, die von FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, VMX, Clmul, AES, MPX, AVX, AVX2, AVX512 (Vex & Evex Prefixes), CET, BMI1, BMI2, BMI2, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGX, SGS, enthalten sind. Erweiterungen. Wenn Sie böswillige Codes und allgemeiner verschleierte Codes analysieren möchten, sendet BeaEngine eine komplexe Struktur zurück, die genau die analysierten Anweisungen beschreibt.
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. Sie können es im Benutzermodus und im Kernel -Modus verwenden.
Erstens können Sie Mnemonik und Operanden gemäß der angegebenen Syntax: Intel -Syntax für Nasm, Masm32 und Masm64, GOASM32 und GOASM64, Fasm (keine AT & T -Syntax) abrufen. Als nächstes können Sie eine genaue Analyse zu Datenfluss und Kontrollflus erkennen, um Schnitte oder Verschleierung Muster zu generieren.
Sein Quellcode unterliegt LGPL3 -Lizenz mit einem "Makefile Builder" und Header für folgende Sprachen: C/C ++, C#, Python3, Delphi, PureBasic, Masm32, Masm64, Nasm (X86 und X64), Fasm (X86 und X64), GOASM (X86 und X64).
BeaEngine wird mit Opcode -Tabellen aus der Intel -Dokumentation, Tabellen von der Christian Ludloff -Website www.sandpile.org und Project X86DOC von Felix Cloutier https://www.felixcloutier.com implementiert
Diese Software wird unter der LGPL -Lizenz verteilt. Weitere Informationen finden Sie im Kopieren und Kopieren.
#!/usr/bin/python3
from BeaEnginePython import *
instr = Disasm(bytes.fromhex('6202054000443322'))
instr.read()
print(instr.repr())
Ausgabe ist:
vpshufb zmm24, zmm31, zmmword ptr [r11+r14+0880h]
rax -Registers: #!/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())
Ausgabe ist:
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()
Lassen Sie uns die vollständige Anweisungsstruktur extrahieren:
#!/usr/bin/python3
from BeaEnginePython import *
instr = Disasm(bytes.fromhex('62017d8115443322'))
instr.read()
print(instr.json())
Ausgabe ist:
{
"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
Aktuelle Dokumentation hier erklärt, wie Arbeitsstrukturen von BeaEngine sind.
Alte Dokumentation kann hier gelesen werden: http://beatrix2004.free.fr/beaengine/index1.php
Jede Beaengine -Veröffentlichung wird mit PDF -Dokumentation versehen:
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
Einige grundlegende Beispiele, um zu zeigen, wie Beaengine hier arbeitet
Wenn Sie BeaEngine verbessern oder einfach einige private Funktionen hinzufügen möchten, finden Sie hier einige Links: