// ADE32 v2.02c by z0mbie #ifndef __ADE32_H__ #define __ADE32_H__ #define C_ERROR 0xFFFFFFFF #define C_ADDR1 0x00000001 #define C_ADDR2 0x00000002 #define C_ADDR4 0x00000004 #define C_LOCK 0x00000008 #define C_67 0x00000010 #define C_66 0x00000020 #define C_REP 0x00000040 #define C_SEG 0x00000080 #define C_ANYPREFIX (C_66+C_67+C_LOCK+C_REP+C_SEG) #define C_DATA1 0x00000100 #define C_DATA2 0x00000200 #define C_DATA4 0x00000400 #define C_SIB 0x00000800 #define C_ADDR67 0x00001000 #define C_DATA66 0x00002000 #define C_MODRM 0x00004000 #define C_BAD 0x00008000 #define C_OPCODE2 0x00010000 #define C_REL 0x00020000 #define C_STOP 0x00040000 #pragma pack(push) #pragma pack(1) struct disasm_struct { BYTE disasm_defaddr; // 00 BYTE disasm_defdata; // 01 DWORD disasm_len; // 02 03 04 05 DWORD disasm_flag; // 06 07 08 09 DWORD disasm_addrsize; // 0A 0B 0C 0D DWORD disasm_datasize; // 0E 0F 10 11 BYTE disasm_rep; // 12 BYTE disasm_seg; // 13 BYTE disasm_opcode; // 14 BYTE disasm_opcode2; // 15 BYTE disasm_modrm; // 16 BYTE disasm_sib; // 17 union { BYTE disasm_addr_b[8]; // 18 19 1A 1B 1C 1D 1E 1F WORD disasm_addr_w[4]; DWORD disasm_addr_d[2]; char disasm_addr_c[8]; short disasm_addr_s[4]; long disasm_addr_l[2]; }; union { BYTE disasm_data_b[8]; // 20 21 22 23 24 25 26 27 WORD disasm_data_w[4]; DWORD disasm_data_d[2]; char disasm_data_c[8]; short disasm_data_s[4]; long disasm_data_l[2]; }; }; // disasm_struct #pragma pack(pop) int disasm(BYTE* opcode0, disasm_struct* diza); int oplen(BYTE* opcode); #endif // __ADE32_H__