|
| 1 | + |
| 2 | + |
| 3 | +#ifndef __ADE32_HPP__ |
| 4 | +#define __ADE32_HPP__ |
| 5 | + |
| 6 | +#define C_ERROR 0xFFFFFFFF |
| 7 | +#define C_ADDR1 0x00000001 |
| 8 | +#define C_ADDR2 0x00000002 |
| 9 | +#define C_ADDR4 0x00000004 |
| 10 | +#define C_LOCK 0x00000008 |
| 11 | +#define C_67 0x00000010 |
| 12 | +#define C_66 0x00000020 |
| 13 | +#define C_REP 0x00000040 |
| 14 | +#define C_SEG 0x00000080 |
| 15 | +#define C_ANYPREFIX (C_66+C_67+C_LOCK+C_REP+C_SEG) |
| 16 | +#define C_DATA1 0x00000100 |
| 17 | +#define C_DATA2 0x00000200 |
| 18 | +#define C_DATA4 0x00000400 |
| 19 | +#define C_SIB 0x00000800 |
| 20 | +#define C_ADDR67 0x00001000 |
| 21 | +#define C_DATA66 0x00002000 |
| 22 | +#define C_MODRM 0x00004000 |
| 23 | +#define C_BAD 0x00008000 |
| 24 | +#define C_OPCODE2 0x00010000 |
| 25 | +#define C_REL 0x00020000 |
| 26 | +#define C_STOP 0x00040000 |
| 27 | + |
| 28 | +#pragma pack(push) |
| 29 | +#pragma pack(1) |
| 30 | + |
| 31 | +struct disasm_struct |
| 32 | +{ |
| 33 | + BYTE disasm_defaddr; // 00 |
| 34 | + BYTE disasm_defdata; // 01 |
| 35 | + DWORD disasm_len; // 02 03 04 05 |
| 36 | + DWORD disasm_flag; // 06 07 08 09 |
| 37 | + DWORD disasm_addrsize; // 0A 0B 0C 0D |
| 38 | + DWORD disasm_datasize; // 0E 0F 10 11 |
| 39 | + BYTE disasm_rep; // 12 |
| 40 | + BYTE disasm_seg; // 13 |
| 41 | + BYTE disasm_opcode; // 14 |
| 42 | + BYTE disasm_opcode2; // 15 |
| 43 | + BYTE disasm_modrm; // 16 |
| 44 | + BYTE disasm_sib; // 17 |
| 45 | + union |
| 46 | + { |
| 47 | + BYTE disasm_addr_b[8]; // 18 19 1A 1B 1C 1D 1E 1F |
| 48 | + |
| 49 | + WORD disasm_addr_w[4]; |
| 50 | + DWORD disasm_addr_d[2]; |
| 51 | + char disasm_addr_c[8]; |
| 52 | + short disasm_addr_s[4]; |
| 53 | + long disasm_addr_l[2]; |
| 54 | + }; |
| 55 | + union |
| 56 | + { |
| 57 | + BYTE disasm_data_b[8]; // 20 21 22 23 24 25 26 27 |
| 58 | + WORD disasm_data_w[4]; |
| 59 | + DWORD disasm_data_d[2]; |
| 60 | + char disasm_data_c[8]; |
| 61 | + short disasm_data_s[4]; |
| 62 | + long disasm_data_l[2]; |
| 63 | + }; |
| 64 | +}; // disasm_struct |
| 65 | + |
| 66 | +#pragma pack(pop) |
| 67 | + |
| 68 | +int disasm(BYTE* opcode0, disasm_struct* diza); |
| 69 | +DWORD ade32_asm(BYTE * output, disasm_struct* diza); |
| 70 | +int oplen(BYTE *opcode); |
| 71 | + |
| 72 | +#endif // __ADE32_HPP__ |
| 73 | + |
| 74 | + |
0 commit comments