⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 disasm.cpp

📁 将exe等可执行文件转化成c程序的反编译程序,先到汇编再到c
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xdc,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xdd,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xde,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xdf,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe0
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe1
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe2
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe3
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe4
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe5
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe6
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe7
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe8
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xe9
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xea
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xeb
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xec
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xed
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xee
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xef
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf0
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf1,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf2
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf3
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf4
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf5
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd6,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd7,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf8
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf9
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xfa
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xfb
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xfc
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xfd
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xfe,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE }	//0xff,
};


INSTRUCTION	instruction[] =
{
	{ C_ADD,		"ADD",		D_EB,	D_GB,	D_NONE },	//0x00,
	{ C_ADD,		"ADD",		D_EV,	D_GV,	D_NONE },	//0x01,
	{ C_ADD,		"ADD",		D_GB,	D_EB,	D_NONE },	//0x02,
	{ C_ADD,		"ADD",		D_GV,	D_EV,	D_NONE },	//0x03,
	{ C_ADD,		"ADD",		D_AL,	D_IB,	D_NONE },	//0x04,
	{ C_ADD,		"ADD",		D_AXV,	D_IV,	D_NONE },	//0x05,
	{ C_PUSH,		"PUSH",		D_ES,	D_NONE,	D_NONE },	//0x06,
	{ C_POP,		"POP",		D_ES,	D_NONE,	D_NONE },	//0x07,
	{ C_OR,			"OR",		D_EB,	D_GB,	D_NONE },	//0x08,
	{ C_OR,			"OR",		D_EV,	D_GV,	D_NONE },	//0x09,
	{ C_OR,			"OR",		D_GB,	D_EB,	D_NONE },	//0x0a,
	{ C_OR,			"OR",		D_GV,	D_EV,	D_NONE },	//0x0b,
	{ C_OR,			"OR",		D_AL,	D_IB,	D_NONE },	//0x0c,
	{ C_OR,			"OR",		D_AXV,	D_IV,	D_NONE },	//0x0d,
	{ C_PUSH,		"PUSH",		D_CS,	D_NONE,	D_NONE },	//0x0e,
	{ C_0FH,(PSTR)instruction0FH,D_NONE,D_NONE,	D_NONE },	//0x0f,
	{ C_ADC,		"ADC",		D_EB,	D_GB,	D_NONE },	//0x10,
	{ C_ADC,		"ADC",		D_EV,	D_GV,	D_NONE },	//0x11,
	{ C_ADC,		"ADC",		D_GB,	D_EB,	D_NONE },	//0x12,
	{ C_ADC,		"ADC",		D_GV,	D_EV,	D_NONE },	//0x13,
	{ C_ADC,		"ADC",		D_AL,	D_IB,	D_NONE },	//0x14,
	{ C_ADC,		"ADC",		D_AXV,	D_IV,	D_NONE },	//0x15,
	{ C_PUSH,		"PUSH",		D_SS,	D_NONE,	D_NONE },	//0x16,
	{ C_POP,		"POP",		D_SS,	D_NONE,	D_NONE },	//0x17,
	{ C_SBB,		"SBB",		D_EB,	D_GB,	D_NONE },	//0x18,
	{ C_SBB,		"SBB",		D_EV,	D_GV,	D_NONE },	//0x19,
	{ C_SBB,		"SBB",		D_GB,	D_EB,	D_NONE },	//0x1a,
	{ C_SBB,		"SBB",		D_GV,	D_EV,	D_NONE },	//0x1b,
	{ C_SBB,		"SBB",		D_AL,	D_IB,	D_NONE },	//0x1c,
	{ C_SBB,		"SBB",		D_AXV,	D_IV,	D_NONE },	//0x1d,
	{ C_PUSH,		"PUSH",		D_DS,	D_NONE,	D_NONE },	//0x1e,
	{ C_POP,		"POP",		D_DS,	D_NONE,	D_NONE },	//0x1f,
	{ C_AND,		"AND",		D_EB,	D_GB,	D_NONE },	//0x20,
	{ C_AND,		"AND",		D_EV,	D_GV,	D_NONE },	//0x21,
	{ C_AND,		"AND",		D_GB,	D_EB,	D_NONE },	//0x22,
	{ C_AND,		"AND",		D_GV,	D_EV,	D_NONE },	//0x23,
	{ C_AND,		"AND",		D_AL,	D_IB,	D_NONE },	//0x24,
	{ C_AND,		"AND",		D_AXV,	D_IV,	D_NONE },	//0x25,
	{ C_SEGPREFIX,	"ES:",		_ES_,	D_NONE,	D_NONE },	//0x26
	{ C_DAA,		"DAA",		D_NONE,	D_NONE,	D_NONE },	//0x27,
	{ C_SUB,		"SUB",		D_EB,	D_GB,	D_NONE },	//0x28,
	{ C_SUB,		"SUB",		D_EV,	D_GV,	D_NONE },	//0x29,
	{ C_SUB,		"SUB",		D_GB,	D_EB,	D_NONE },	//0x2a,
	{ C_SUB,		"SUB",		D_GV,	D_EV,	D_NONE },	//0x2b,
	{ C_SUB,		"SUB",		D_AL,	D_IB,	D_NONE },	//0x2c,
	{ C_SUB,		"SUB",		D_AXV,	D_IV,	D_NONE },	//0x2d,
	{ C_SEGPREFIX,	"CS:",		_CS_,	D_NONE,	D_NONE },	//0x2e
	{ C_DAS,		"DAS",		D_NONE,	D_NONE,	D_NONE },	//0x2f,
	{ C_XOR,		"XOR",		D_EB,	D_GB,	D_NONE },	//0x30,
	{ C_XOR,		"XOR",		D_EV,	D_GV,	D_NONE },	//0x31,
	{ C_XOR,		"XOR",		D_GB,	D_EB,	D_NONE },	//0x32,
	{ C_XOR,		"XOR",		D_GV,	D_EV,	D_NONE },	//0x33,
	{ C_XOR,		"XOR",		D_AL,	D_IB,	D_NONE },	//0x34,
	{ C_XOR,		"XOR",		D_AXV,	D_IV,	D_NONE },	//0x35,
	{ C_SEGPREFIX,	"SS:",		_SS_,	D_NONE,	D_NONE },	//0x36
	{ C_AAA,		"AAA",		D_NONE,	D_NONE,	D_NONE },	//0x37,
	{ C_CMP,		"CMP",		D_EB,	D_GB,	D_NONE },	//0x38,
	{ C_CMP,		"CMP",		D_EV,	D_GV,	D_NONE },	//0x39,
	{ C_CMP,		"CMP",		D_GB,	D_EB,	D_NONE },	//0x3a,
	{ C_CMP,		"CMP",		D_GV,	D_EV,	D_NONE },	//0x3b,
	{ C_CMP,		"CMP",		D_AL,	D_IB,	D_NONE },	//0x3c,
	{ C_CMP,		"CMP",		D_AXV,	D_IV,	D_NONE },	//0x3d,
	{ C_SEGPREFIX,	"DS:",		_DS_,	D_NONE,	D_NONE },	//0x3e
	{ C_AAS,		"AAS",		D_NONE,	D_NONE,	D_NONE },	//0x3f,
	{ C_INC,		"INC",		D_AXV,	D_NONE,	D_NONE },	//0x40,
	{ C_INC,		"INC",		D_CXV,	D_NONE,	D_NONE },	//0x41,
	{ C_INC,		"INC",		D_DXV,	D_NONE,	D_NONE },	//0x42,
	{ C_INC,		"INC",		D_BXV,	D_NONE,	D_NONE },	//0x43,
	{ C_INC,		"INC",		D_SPV,	D_NONE,	D_NONE },	//0x44,
	{ C_INC,		"INC",		D_BPV,	D_NONE,	D_NONE },	//0x45,
	{ C_INC,		"INC",		D_SIV,	D_NONE,	D_NONE },	//0x46,
	{ C_INC,		"INC",		D_DIV,	D_NONE,	D_NONE },	//0x47,
	{ C_DEC,		"DEC",		D_AXV,	D_NONE,	D_NONE },	//0x48,
	{ C_DEC,		"DEC",		D_CXV,	D_NONE,	D_NONE },	//0x49,
	{ C_DEC,		"DEC",		D_DXV,	D_NONE,	D_NONE },	//0x4a,
	{ C_DEC,		"DEC",		D_BXV,	D_NONE,	D_NONE },	//0x4b,
	{ C_DEC,		"DEC",		D_SPV,	D_NONE,	D_NONE },	//0x4c,
	{ C_DEC,		"DEC",		D_BPV,	D_NONE,	D_NONE },	//0x4d,
	{ C_DEC,		"DEC",		D_SIV,	D_NONE,	D_NONE },	//0x4e,
	{ C_DEC,		"DEC",		D_DIV,	D_NONE,	D_NONE },	//0x4f,
	{ C_PUSH,		"PUSH",		D_AXV,	D_NONE,	D_NONE },	//0x50,
	{ C_PUSH,		"PUSH",		D_CXV,	D_NONE,	D_NONE },	//0x51,
	{ C_PUSH,		"PUSH",		D_DXV,	D_NONE,	D_NONE },	//0x52,
	{ C_PUSH,		"PUSH",		D_BXV,	D_NONE,	D_NONE },	//0x53,
	{ C_PUSH,		"PUSH",		D_SPV,	D_NONE,	D_NONE },	//0x54,
	{ C_PUSH,		"PUSH",		D_BPV,	D_NONE,	D_NONE },	//0x55,
	{ C_PUSH,		"PUSH",		D_SIV,	D_NONE,	D_NONE },	//0x56,
	{ C_PUSH,		"PUSH",		D_DIV,	D_NONE,	D_NONE },	//0x57,
	{ C_POP,		"POP",		D_AXV,	D_NONE,	D_NONE },	//0x58,
	{ C_POP,		"POP",		D_CXV,	D_NONE,	D_NONE },	//0x59,
	{ C_POP,		"POP",		D_DXV,	D_NONE,	D_NONE },	//0x5a,
	{ C_POP,		"POP",		D_BXV,	D_NONE,	D_NONE },	//0x5b,
	{ C_POP,		"POP",		D_SPV,	D_NONE,	D_NONE },	//0x5c,
	{ C_POP,		"POP",		D_BPV,	D_NONE,	D_NONE },	//0x5d,
	{ C_POP,		"POP",		D_SIV,	D_NONE,	D_NONE },	//0x5e,
	{ C_POP,		"POP",		D_DIV,	D_NONE,	D_NONE },	//0x5f,
	{ C_PUSHA,		"PUSHA",	D_V,	D_NONE,	D_NONE },	//0x60,
	{ C_POPA,		"POPA",		D_V,	D_NONE,	D_NONE },	//0x61,
	{ C_BOUND,		"BOUND",	D_GV,	D_MA,	D_NONE },	//0x62,
	{ C_ARPL,		"ARPL",		D_EW,	D_GW,	D_NONE },	//0x63,
	{ C_SEGPREFIX,	"FS:",		_FS_,	D_NONE,	D_NONE },	//0x64
	{ C_SEGPREFIX,	"GS:",		_GS_,	D_NONE,	D_NONE },	//0x65
	{ C_OPRSIZE,	NULL,		D_NONE,	D_NONE,	D_NONE },	//0x66
	{ C_ADRSIZE,	NULL,		D_NONE,	D_NONE,	D_NONE },	//0x67
	{ C_PUSH,		"PUSH",		D_IV,	D_NONE,	D_NONE },	//0x68,
	{ C_IMUL,		"IMUL",		D_GV,	D_EV,	D_IV   },	//0x69,
	{ C_PUSH,		"PUSH",		D_SB,	D_NONE,	D_NONE },	//0x6a,
	{ C_IMUL,		"IMUL",		D_GV,	D_EV,	D_IB   },	//0x6b,
	{ C_INS,		"INS",		D_XB,	D_DX,	D_NONE },	//0x6c,
	{ C_INS,		"INS",		D_XV,	D_DX,	D_NONE },	//0x6d,
	{ C_OUTS,		"OUTS",		D_DX,	D_XB,	D_NONE },	//0x6e,
	{ C_OUTS,		"OUTS",		D_DX,	D_XV,	D_NONE },	//0x6f,
	{ C_JO,			"JO",		D_JB,	D_NONE,	D_NONE },	//0x70,
	{ C_JNO,		"JNO",		D_JB,	D_NONE,	D_NONE },	//0x71,
	{ C_JB,			"JB",		D_JB,	D_NONE,	D_NONE },	//0x72,
	{ C_JNB,		"JNB",		D_JB,	D_NONE,	D_NONE },	//0x73,
	{ C_JZ,			"JZ",		D_JB,	D_NONE,	D_NONE },	//0x74,
	{ C_JNZ,		"JNZ",		D_JB,	D_NONE,	D_NONE },	//0x75,
	{ C_JNA,		"JNA",		D_JB,	D_NONE,	D_NONE },	//0x76,
	{ C_JA,			"JA",		D_JB,	D_NONE,	D_NONE },	//0x77,
	{ C_JS,			"JS",		D_JB,	D_NONE,	D_NONE },	//0x78,
	{ C_JNS,		"JNS",		D_JB,	D_NONE,	D_NONE },	//0x79,
	{ C_JP,			"JP",		D_JB,	D_NONE,	D_NONE },	//0x7a,
	{ C_JNP,		"JNP",		D_JB,	D_NONE,	D_NONE },	//0x7b,
	{ C_JL,			"JL",		D_JB,	D_NONE,	D_NONE },	//0x7c,
	{ C_JNL,		"JNL",		D_JB,	D_NONE,	D_NONE },	//0x7d,
	{ C_JLE,		"JLE",		D_JB,	D_NONE,	D_NONE },	//0x7e,
	{ C_JNLE,		"JNLE",		D_JB,	D_NONE,	D_NONE },	//0x7f,
	{ C_GROUP,(PSTR)grouptable1,D_EB,	D_IB,	D_NONE },	//0x80,
	{ C_GROUP,(PSTR)grouptable1,D_EV,	D_IV,	D_NONE },	//0x81,
	{ C_GROUP,(PSTR)grouptable1,D_EB,	D_IB,	D_NONE },	//0x82,
	{ C_GROUP,(PSTR)grouptable1,D_EV,	D_SB,	D_NONE },	//0x83,
	{ C_TEST,		"TEST",		D_EB,	D_GB,	D_NONE },	//0x84,
	{ C_TEST,		"TEST",		D_EV,	D_GV,	D_NONE },	//0x85,
	{ C_XCHG,		"XCHG",		D_EB,	D_GB,	D_NONE },	//0x86,
	{ C_XCHG,		"XCHG",		D_EV,	D_GV,	D_NONE },	//0x87,
	{ C_MOV,		"MOV",		D_EB,	D_GB,	D_NONE },	//0x88,
	{ C_MOV,		"MOV",		D_EV,	D_GV,	D_NONE },	//0x89,
	{ C_MOV,		"MOV",		D_GB,	D_EB,	D_NONE },	//0x8a,
	{ C_MOV,		"MOV",		D_GV,	D_EV,	D_NONE },	//0x8b,
	{ C_MOV,		"MOV",		D_EW,	D_SW,	D_NONE },	//0x8c,
	{ C_LEA,		"LEA",		D_GV,	D_MV,	D_NONE },	//0x8d,
	{ C_MOV,		"MOV",		D_SW,	D_EW,	D_NONE },	//0x8e,
	{ C_POP,		"POP",		D_EV,	D_NONE,	D_NONE },	//0x8f,
	{ C_NOP,		"NOP",		D_NONE,	D_NONE,	D_NONE },	//0x90,
	{ C_XCHG,		"XCHG",		D_CXV,	D_AXV,	D_NONE },	//0x91,
	{ C_XCHG,		"XCHG",		D_DXV,	D_AXV,	D_NONE },	//0x92,
	{ C_XCHG,		"XCHG",		D_BXV,	D_AXV,	D_NONE },	//0x93,
	{ C_XCHG,		"XCHG",		D_SPV,	D_AXV,	D_NONE },	//0x94,
	{ C_XCHG,		"XCHG",		D_BPV,	D_AXV,	D_NONE },	//0x95,
	{ C_XCHG,		"XCHG",		D_SIV,	D_AXV,	D_NONE },	//0x96,
	{ C_XCHG,		"XCHG",		D_DIV,	D_AXV,	D_NONE },	//0x97,
	{ C_CBW,		"CBW",		D_NONE,	D_NONE,	D_NONE },	//0x98,
	{ C_CWD,		"CWD",		D_NONE,	D_NONE,	D_NONE },	//0x99,
	{ C_CALLFAR,	"CALL",		D_JP,	D_NONE,	D_NONE },	//0x9a,
	{ C_WAIT,		"WAIT",		D_NONE,	D_NONE,	D_NONE },	//0x9b,
	{ C_PUSHF,		"PUSHF",	D_V,	D_NONE,	D_NONE },	//0x9c,
	{ C_POPF,		"POPF",		D_V,	D_NONE,	D_NONE },	//0x9d,
	{ C_SAHF,		"SAHF",		D_V,	D_NONE,	D_NONE },	//0x9e,
	{ C_LAHF,		"LAHF",		D_V,	D_NONE,	D_NONE },	//0x9f,
	{ C_MOV,		"MOV",		D_AL,	D_OB,	D_NONE },	//0xa0,
	{ C_MOV,		"MOV",		D_AXV,	D_OV,	D_NONE },	//0xa1,
	{ C_MOV,		"MOV",		D_OB,	D_AL,	D_NONE },	//0xa2,
	{ C_MOV,		"MOV",		D_OV,	D_AXV,	D_NONE },	//0xa3,
	{ C_MOVS,		"MOVS",		D_XB,	D_NONE,	D_NONE },	//0xa4,
	{ C_MOVS,		"MOVS",		D_XV,	D_NONE,	D_NONE },	//0xa5,
	{ C_CMPS,		"CMPS",		D_XB,	D_NONE,	D_NONE },	//0xa6,
	{ C_CMPS,		"CMPS",		D_XV,	D_NONE,	D_NONE },	//0xa7,
	{ C_TEST,		"TEST",		D_AL,	D_IB,	D_NONE },	//0xa8,
	{ C_TEST,		"TEST",		D_AXV,	D_IV,	D_NONE },	//0xa9,
	{ C_STOS,		"STOS",		D_XB,	D_NONE,	D_NONE },	//0xaa,
	{ C_STOS,		"STOS",		D_XV,	D_NONE,	D_NONE },	//0xab,
	{ C_LODS,		"LODS",		D_XB,	D_NONE,	D_NONE },	//0xac,
	{ C_LODS,		"LODS",		D_XV,	D_NONE,	D_NONE },	//0xad,
	{ C_SCAS,		"SCAS",		D_XB,	D_NONE,	D_NONE },	//0xae,
	{ C_SCAS,		"SCAS",		D_XV,	D_NONE,	D_NONE },	//0xaf,
	{ C_MOV,		"MOV",		D_AL,	D_IB,	D_NONE },	//0xb0,
	{ C_MOV,		"MOV",		D_CL,	D_IB,	D_NONE },	//0xb1,
	{ C_MOV,		"MOV",		D_DL,	D_IB,	D_NONE },	//0xb2,
	{ C_MOV,		"MOV",		D_BL,	D_IB,	D_NONE },	//0xb3,
	{ C_MOV,		"MOV",		D_AH,	D_IB,	D_NONE },	//0xb4,
	{ C_MOV,		"MOV",		D_CH,	D_IB,	D_NONE },	//0xb5,
	{ C_MOV,		"MOV",		D_DH,	D_IB,	D_NONE },	//0xb6,
	{ C_MOV,		"MOV",		D_BH,	D_IB,	D_NONE },	//0xb7,
	{ C_MOV,		"MOV",		D_AXV,	D_IV,	D_NONE },	//0xb8,
	{ C_MOV,		"MOV",		D_CXV,	D_IV,	D_NONE },	//0xb9,
	{ C_MOV,		"MOV",		D_DXV,	D_IV,	D_NONE },	//0xba,
	{ C_MOV,		"MOV",		D_BXV,	D_IV,	D_NONE },	//0xbb,
	{ C_MOV,		"MOV",		D_SPV,	D_IV,	D_NONE },	//0xbc,
	{ C_MOV,		"MOV",		D_BPV,	D_IV,	D_NONE },	//0xbd,
	{ C_MOV,		"MOV",		D_SIV,	D_IV,	D_NONE },	//0xbe,
	{ C_MOV,		"MOV",		D_DIV,	D_IV,	D_NONE },	//0xbf,
	{ C_GROUP,(PSTR)grouptable2,D_EB,	D_IB,	D_NONE },	//0xc0,
	{ C_GROUP,(PSTR)grouptable2,D_EV,	D_IB,	D_NONE },	//0xc1,
	{ C_RET,		"RET",		D_IW,	D_NONE,	D_NONE },	//0xc2,
	{ C_RET,		"RET",		D_NONE,	D_NONE,	D_NONE },	//0xc3,
	{ C_LES,		"LES",		D_GV,	D_MP,	D_NONE },	//0xc4,
	{ C_LDS,		"LDS",		D_GV,	D_MP,	D_NONE },	//0xc5,
	{ C_GROUP,(PSTR)grouptable3,D_EB,	D_IB,	D_NONE },	//0xc6,
	{ C_GROUP,(PSTR)grouptable3,D_EV,	D_IV,	D_NONE },	//0xc7,
	{ C_ENTER,		"ENTER",	D_IW,	D_IB,	D_NONE },	//0xc8,
	{ C_LEAVE,		"LEAVE",	D_NONE,	D_NONE,	D_NONE },	//0xc9,
	{ C_RETF,		"RETF",		D_IW,	D_NONE,	D_NONE },	//0xca,
	{ C_RETF,		"RETF",		D_NONE,	D_NONE,	D_NONE },	//0xcb,
	{ C_INT3,		"INT3",		D_NONE,	D_NONE,	D_NONE },	//0xcc,
	{ C_INT,		"INT",		D_IB,	D_NONE,	D_NONE },	//0xcd,
	{ C_INTO,		"INTO",		D_NONE,	D_NONE,	D_NONE },	//0xce,
	{ C_IRET,		"IRET",		D_NONE,	D_NONE,	D_NONE },	//0xcf,
	{ C_GROUP,(PSTR)grouptable2,D_EB,	D_1,	D_NONE },	//0xd0,
	{ C_GROUP,(PSTR)grouptable2,D_EV,	D_1,	D_NONE },	//0xd1,
	{ C_GROUP,(PSTR)grouptable2,D_EB,	D_CL,	D_NONE },	//0xd2,
	{ C_GROUP,(PSTR)grouptable2,D_EV,	D_CL,	D_NONE },	//0xd3,
	{ C_AAM,		"AAM",		D_IB,	D_NONE,	D_NONE },	//0xd4,
	{ C_AAD,		"AAD",		D_IB,	D_NONE,	D_NONE },	//0xd5,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd6,
	{ C_XLAT,		"XLAT",		D_NONE,	D_NONE,	D_NONE },	//0xd7,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd8,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd9,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xda,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xdb,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xdc,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xdd,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xde,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xdf,
	{ C_LOOPNZ,		"LOOPNZ",	D_JB,	D_NONE,	D_NONE },	//0xe0
	{ C_LOOPZ,		"LOOPZ",	D_JB,	D_NONE,	D_NONE },	//0xe1
	{ C_LOOP,		"LOOP",		D_JB,	D_NONE,	D_NONE },	//0xe2
	{ C_JCXZ,		"JCXZ",		D_JB,	D_NONE,	D_NONE },	//0xe3
	{ C_IN,			"IN",		D_AL,	D_IB,	D_NONE },	//0xe4
	{ C_IN,			"IN",		D_AXV,	D_IB,	D_NONE },	//0xe5
	{ C_OUT,		"OUT",		D_IB,	D_AL,	D_NONE },	//0xe6
	{ C_OUT,		"OUT",		D_IB,	D_AXV,	D_NONE },	//0xe7
	{ C_CALL,		"CALL",		D_JV,	D_NONE,	D_NONE },	//0xe8
	{ C_JMP,		"JMP",		D_JV,	D_NONE,	D_NONE },	//0xe9
	{ C_JMPFAR,		"JMP",		D_JP,	D_NONE,	D_NONE },	//0xea
	{ C_JMP,		"JMP",		D_JB,	D_NONE,	D_NONE },	//0xeb
	{ C_IN,			"IN",		D_AL,	D_DX,	D_NONE },	//0xec
	{ C_IN,			"IN",		D_AXV,	D_DX,	D_NONE },	//0xed
	{ C_OUT,		"OUT",		D_DX,	D_AL,	D_NONE },	//0xee
	{ C_OUT,		"OUT",		D_DX,	D_AXV,	D_NONE },	//0xef
	{ C_LOCK,		"LOCK",		D_NONE,	D_NONE,	D_NONE },	//0xf0
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xf1,
	{ C_REPNZ,		"REPNZ",	D_NONE,	D_NONE,	D_NONE },	//0xf2
	{ C_REPZ,		"REPZ",		D_NONE,	D_NONE,	D_NONE },	//0xf3
	{ C_HLT,		"HLT",		D_NONE,	D_NONE,	D_NONE },	//0xf4
	{ C_CMC,		"CMC",		D_NONE,	D_NONE,	D_NONE },	//0xf5
	{ C_GROUP,(PSTR)grouptable4,D_EB,	D_NONE,	D_NONE },	//0xf6,
	{ C_GROUP,(PSTR)grouptable5,D_EV,	D_NONE,	D_NONE },	//0xf7,
	{ C_CLC,		"CLC",		D_NONE,	D_NONE,	D_NONE },	//0xf8
	{ C_STC,		"STC",		D_NONE,	D_NONE,	D_NONE },	//0xf9
	{ C_CLI,		"CLI",		D_NONE,	D_NONE,	D_NONE },	//0xfa
	{ C_STI,		"STI",		D_NONE,	D_NONE,	D_NONE },	//0xfb
	{ C_CLD,		"CLD",		D_NONE,	D_NONE,	D_NONE },	//0xfc
	{ C_STD,		"STD",		D_NONE,	D_NONE,	D_NONE },	//0xfd
	{ C_GROUP,(PSTR)grouptable6,D_EB,	D_NONE,	D_NONE },	//0xfe,
	{ C_GROUP,(PSTR)grouptable7,D_EV,	D_NONE,	D_NONE }	//0xff,
};
	
//******************************************************


void st_IDA_OUT::output(PSTR buf)
{
    CString retn;
    if (!this->LockName.IsEmpty())
    {
        retn += this->LockName;
        retn += " ";
    }
    if (!this->RepName.IsEmpty())
    {
        retn += this->RepName;
        retn += " ";
    }
    if (!this->CmdStr.IsEmpty())
    {
        retn += this->CmdStr;
        retn += " ";

        while (retn.GetLength() < 7)
            retn += " ";
    }

    //par1
    {
        CString tem = this->Par1Ptr;
        tem += this->Par1SegPrefix;
        tem += this->Par1Str;
        if (!tem.IsEmpty())
            retn += tem;
    }
    //par2
    {
        CString tem = this->Par2Ptr;
        tem += this->Par2SegPrefix;
        tem += this->Par2Str;
        if (!tem.IsEmpty())
        {
            retn += ',';
            retn += tem;
        }
    }
    //par3
    {
        CString tem = this->Par3Str;
        if (!tem.IsEmpty())
        {
            retn += ',';
            retn += tem;
        }
    }

    strcpy(buf, retn);
}
DWORD   CDisasm::Disassembler_X(PBYTE codebuf, DWORD eip, OUT st_IDA_OUT* idaout)
{
//    if (memcmp(codebuf, "\x0F\xAF\xC0", 3) == 0)
//    {
//       memcmp(codebuf, "\x0F\xAF\xC0", 3);	//imul eax, eax
//   }
    m_idaout = idaout;

	UasmCode	= codebuf;
	BaseAddress	= eip;

	// Initialize data
    CodeCount	= 0;       /*  It's code's number.   */
	OpSize		= U_Size;
	AdrSize		= U_Size;
	SegPrefix	= _NOSEG_;
	LockPrefix	= NOPREFIX;
	RepPrefix	= NOPREFIX;
	U_ErrorCode	= ERR_NOERROR;

    DisassemblerOne();

	// Has any error?
	if (U_ErrorCode != ERR_NOERROR)
	{
		this->m_idaout->CmdStr = "INVALID_CODE";
		return 1;
	}

	return CodeCount;
}
/*
void proc1();
int main(int argc,char** argv)
{
    proc1();
    return 0;

    if(argc<2)
    {
        dbgout("Usage: disasm file.com\n");
        return 1;
    }
	
    char	buf[128];
	FILE *fp = fopen(argv[1],"rb");

	DWORD	filelen	= filelength(fileno(fp));
	PBYTE	codebuf = new BYTE[filelen+1];

	fread(codebuf,filelen,1,fp);
	fclose(fp);

	Set_Disassembler_Mode(BIT32);

	for(DWORD len=0;len < filelen;)
	{
        DWORD pos = len+0x100;
		len += Disassembler(buf,codebuf+len,pos);
		dbgout("%08x %s\n",pos,buf);
	}

	delete codebuf;

	return 0;
}
*/

//******************************************************

void	CDisasm::OpSizePrefix()
{
	if( OpSize==BIT16 )
		OpSize=BIT32;
	else
		OpSize=BIT16;
}

void	CDisasm::AdrSizePrefix()
{
	if( AdrSize==BIT16 )
		AdrSize=BIT32;
	else
		AdrSize=BIT16;
}

/***********************************************************/

/*
void	SetName(PSTR name)
{
	Putchs(name);
	SetBufPtrTox2();
}*/

BYTE	PeekB(PBYTE codebuf)
{
	return *codebuf;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -