Skip to content

Commit 7b471fc

Browse files
committed
Added BeaEngine
1 parent 412e736 commit 7b471fc

5 files changed

Lines changed: 298 additions & 0 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-library BeaEngine
2+
"$(DIR)/HEADERS/BeaEngine.h"
3+
4+
-arch win32 "$(DIR)/DLL/BeaEngine.dll"
5+
-arch win64 "$(DIR)/DLL/BeaEngine64.dll"
6+
7+
-o JNA
245 KB
Binary file not shown.
229 KB
Binary file not shown.
Lines changed: 291 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,291 @@
1+
// Header for BeaEngine 3.0
2+
3+
#ifndef _BEA_ENGINE_
4+
#define _BEA_ENGINE_
5+
6+
7+
#define INSTRUCT_LENGTH 64
8+
9+
#pragma pack(1)
10+
typedef struct {
11+
BYTE W_;
12+
BYTE R_;
13+
BYTE X_;
14+
BYTE B_;
15+
BYTE state;
16+
} REX_Struct ;
17+
#pragma pack()
18+
19+
#pragma pack(1)
20+
typedef struct {
21+
int Number;
22+
int NbUndefined;
23+
BYTE LockPrefix;
24+
BYTE OperandSize;
25+
BYTE AddressSize;
26+
BYTE RepnePrefix;
27+
BYTE RepPrefix;
28+
BYTE FSPrefix;
29+
BYTE SSPrefix;
30+
BYTE GSPrefix;
31+
BYTE ESPrefix;
32+
BYTE CSPrefix;
33+
BYTE DSPrefix;
34+
REX_Struct REX;
35+
} PREFIXINFO ;
36+
#pragma pack()
37+
38+
#pragma pack(1)
39+
typedef struct {
40+
BYTE OF_;
41+
BYTE SF_;
42+
BYTE ZF_;
43+
BYTE AF_;
44+
BYTE PF_;
45+
BYTE CF_;
46+
BYTE TF_;
47+
BYTE IF_;
48+
BYTE DF_;
49+
BYTE NT_;
50+
BYTE RF_;
51+
BYTE alignment;
52+
} EFLStruct ;
53+
#pragma pack()
54+
55+
#pragma pack(4)
56+
typedef struct {
57+
long BaseRegister;
58+
long IndexRegister;
59+
long Scale;
60+
long long Displacement;
61+
} MEMORYTYPE ;
62+
#pragma pack()
63+
64+
65+
#pragma pack(1)
66+
typedef struct {
67+
long Category;
68+
long Opcode;
69+
char Mnemonic[16];
70+
long BranchType;
71+
EFLStruct Flags;
72+
long long AddrValue;
73+
long long Immediat;
74+
long ImplicitModifiedRegs;
75+
} INSTRTYPE;
76+
#pragma pack()
77+
78+
#pragma pack(4)
79+
typedef struct {
80+
char ArgMnemonic[32];
81+
long ArgType;
82+
long ArgSize;
83+
long AccessMode;
84+
MEMORYTYPE Memory;
85+
long SegmentReg;
86+
} ARGTYPE;
87+
#pragma pack()
88+
89+
90+
91+
#pragma pack(1)
92+
typedef struct _Disasm {
93+
long long EIP;
94+
long long VirtualAddr;
95+
long SecurityBlock;
96+
char CompleteInstr[INSTRUCT_LENGTH];
97+
long Archi;
98+
long Options;
99+
INSTRTYPE Instruction;
100+
ARGTYPE Argument1;
101+
ARGTYPE Argument2;
102+
ARGTYPE Argument3;
103+
PREFIXINFO Prefix;
104+
} DISASM, *PDISASM, *LPDISASM;
105+
#pragma pack()
106+
107+
#define ESReg 1
108+
#define DSReg 2
109+
#define FSReg 3
110+
#define GSReg 4
111+
#define CSReg 5
112+
#define SSReg 6
113+
114+
#define InvalidPrefix 4
115+
#define SuperfluousPrefix 2
116+
#define NotUsedPrefix 0
117+
#define MandatoryPrefix 8
118+
#define InUsePrefix 1
119+
120+
enum INSTRUCTION_TYPE
121+
{
122+
GENERAL_PURPOSE_INSTRUCTION = 0x10000,
123+
FPU_INSTRUCTION = 0x20000,
124+
MMX_INSTRUCTION = 0x40000,
125+
SSE_INSTRUCTION = 0x80000,
126+
SSE2_INSTRUCTION = 0x100000,
127+
SSE3_INSTRUCTION = 0x200000,
128+
SSSE3_INSTRUCTION = 0x400000,
129+
SSE41_INSTRUCTION = 0x800000,
130+
SSE42_INSTRUCTION = 0x1000000,
131+
SYSTEM_INSTRUCTION = 0x2000000,
132+
VM_INSTRUCTION = 0x4000000,
133+
UNDOCUMENTED_INSTRUCTION = 0x8000000,
134+
AMD_INSTRUCTION = 0x10000000,
135+
ILLEGAL_INSTRUCTION = 0x20000000,
136+
INCOMPATIBLE_TYPE = 0x80000000,
137+
138+
139+
DATA_TRANSFER = 0x1,
140+
ARITHMETIC_INSTRUCTION,
141+
LOGICAL_INSTRUCTION,
142+
SHIFT_ROTATE,
143+
BIT_BYTE,
144+
CONTROL_TRANSFER,
145+
STRING_INSTRUCTION,
146+
InOutINSTRUCTION,
147+
ENTER_LEAVE_INSTRUCTION,
148+
FLAG_CONTROL_INSTRUCTION,
149+
SEGMENT_REGISTER,
150+
MISCELLANEOUS_INSTRUCTION,
151+
COMPARISON_INSTRUCTION,
152+
LOGARITHMIC_INSTRUCTION,
153+
TRIGONOMETRIC_INSTRUCTION,
154+
UNSUPPORTED_INSTRUCTION,
155+
LOAD_CONSTANTS,
156+
FPUCONTROL,
157+
STATE_MANAGEMENT,
158+
CONVERSION_INSTRUCTION,
159+
SHUFFLE_UNPACK,
160+
PACKED_SINGLE_PRECISION,
161+
SIMD128bits,
162+
SIMD64bits,
163+
CACHEABILITY_CONTROL,
164+
FP_INTEGER_CONVERSION,
165+
SPECIALIZED_128bits,
166+
SIMD_FP_PACKED,
167+
SIMD_FP_HORIZONTAL ,
168+
AGENT_SYNCHRONISATION,
169+
PACKED_ALIGN_RIGHT ,
170+
PACKED_SIGN,
171+
PACKED_BLENDING_INSTRUCTION,
172+
PACKED_TEST,
173+
PACKED_MINMAX,
174+
HORIZONTAL_SEARCH,
175+
PACKED_EQUALITY,
176+
STREAMING_LOAD,
177+
INSERTION_EXTRACTION,
178+
DOT_PRODUCT,
179+
SAD_INSTRUCTION,
180+
ACCELERATOR_INSTRUCTION, // crc32, popcnt (sse4.2)
181+
ROUND_INSTRUCTION
182+
183+
};
184+
185+
enum EFLAGS_STATES
186+
{
187+
TE_ = 1,
188+
MO_ = 2,
189+
RE_ = 4,
190+
SE_ = 8,
191+
UN_ = 0x10,
192+
PR_ = 0x20
193+
};
194+
195+
enum BRANCH_TYPE
196+
{
197+
JO = 1,
198+
JC,
199+
JE,
200+
JA,
201+
JS,
202+
JP,
203+
JL,
204+
JG,
205+
JB,
206+
JECXZ,
207+
JmpType,
208+
CallType,
209+
RetType,
210+
JNO = -1,
211+
JNC = -2,
212+
JNE = -3,
213+
JNA = -4,
214+
JNS = -5,
215+
JNP = -6,
216+
JNL = -7,
217+
JNG = -8,
218+
JNB = -9
219+
};
220+
221+
enum ARGUMENTS_TYPE
222+
{
223+
NO_ARGUMENT = 0x10000000,
224+
REGISTER_TYPE = 0x20000000,
225+
MEMORY_TYPE = 0x40000000,
226+
CONSTANT_TYPE = 0x80000000,
227+
228+
MMX_REG = 0x10000,
229+
GENERAL_REG = 0x20000,
230+
FPU_REG = 0x40000,
231+
SSE_REG = 0x80000,
232+
CR_REG = 0x100000,
233+
DR_REG = 0x200000,
234+
SPECIAL_REG = 0x400000,
235+
MEMORY_MANAGEMENT_REG = 0x800000,
236+
SEGMENT_REG = 0x1000000,
237+
238+
RELATIVE_ = 0x4000000,
239+
ABSOLUTE_ = 0x8000000,
240+
241+
READ = 0x1,
242+
WRITE = 0x2,
243+
244+
REG0 = 0x1,
245+
REG1 = 0x2,
246+
REG2 = 0x4,
247+
REG3 = 0x8,
248+
REG4 = 0x10,
249+
REG5 = 0x20,
250+
REG6 = 0x40,
251+
REG7 = 0x80,
252+
REG8 = 0x100,
253+
REG9 = 0x200,
254+
REG10 = 0x400,
255+
REG11 = 0x800,
256+
REG12 = 0x1000,
257+
REG13 = 0x2000,
258+
REG14 = 0x4000,
259+
REG15 = 0x8000,
260+
};
261+
262+
enum SPECIAL_INFO
263+
{
264+
UNKNOWN_OPCODE = -1,
265+
OUT_OF_BLOCK = 0,
266+
267+
// === mask = 0xff
268+
NoTabulation = 0x00000000,
269+
Tabulation = 0x00000001,
270+
271+
// === mask = 0xff00
272+
MasmSyntax = 0x00000000,
273+
GoAsmSyntax = 0x00000100,
274+
NasmSyntax = 0x00000200,
275+
ATSyntax = 0x00000400,
276+
277+
// === mask = 0xff0000
278+
PrefixedNumeral = 0x00010000,
279+
SuffixedNumeral = 0x00000000,
280+
281+
// === mask = 0xff000000
282+
ShowSegmentRegs = 0x01000000
283+
};
284+
285+
286+
#ifdef __cplusplus
287+
extern "C"
288+
#endif
289+
int __stdcall Disasm(LPDISASM pDisAsm);
290+
291+
#endif
1020 KB
Binary file not shown.

0 commit comments

Comments
 (0)