mirror of https://github.com/x64dbg/zydis
				
				
				
			Added `ZYDIS_ATTRIB_IS_FAR_BRANCH` attribute for far JMP/CALL/RET instructions
This commit is contained in:
		
							parent
							
								
									9222f80b97
								
							
						
					
					
						commit
						6315e29aa5
					
				|  | @ -222,6 +222,12 @@ typedef uint64_t ZydisInstructionAttributes; | |||
|  * Priviliged instructions are any instructions that require a current ring level below 3. | ||||
|  */ | ||||
| #define ZYDIS_ATTRIB_IS_PRIVILEGED              0x0000000000000100 // (1 <<  8)
 | ||||
| 
 | ||||
| /**
 | ||||
|  * @brief   The instruction is a far JMP/CALL/RET. | ||||
|  */ | ||||
| #define ZYDIS_ATTRIB_IS_FAR_BRANCH              0x0000001000000000 // (1 << 36) // TODO: rebase
 | ||||
| 
 | ||||
| /**
 | ||||
|  * @brief   The instruction accepts the lock prefix (0xF0).  | ||||
|  */ | ||||
|  | @ -346,11 +352,11 @@ typedef uint64_t ZydisInstructionAttributes; | |||
| /**
 | ||||
|  * @brief   The instruction has the operand-size prefix (0x66).  | ||||
|  */ | ||||
| #define ZYDIS_ATTRIB_HAS_OPERANDSIZE            0x0000000400000000 // (1 << 34)
 | ||||
| #define ZYDIS_ATTRIB_HAS_OPERANDSIZE            0x0000000400000000 // (1 << 34) // TODO: rename
 | ||||
| /**
 | ||||
|  * @brief   The instruction has the address-size prefix (0x67).  | ||||
|  */ | ||||
| #define ZYDIS_ATTRIB_HAS_ADDRESSSIZE            0x0000000800000000 // (1 << 35)
 | ||||
| #define ZYDIS_ATTRIB_HAS_ADDRESSSIZE            0x0000000800000000 // (1 << 35) // TODO: rename
 | ||||
| 
 | ||||
| /* ---------------------------------------------------------------------------------------------- */ | ||||
| /* R/E/FLAGS info                                                                                 */ | ||||
|  |  | |||
|  | @ -2030,6 +2030,10 @@ static void ZydisSetAttributes(ZydisDecoderContext* context, ZydisDecodedInstruc | |||
|         { | ||||
|             instruction->attributes |= ZYDIS_ATTRIB_IS_PRIVILEGED; | ||||
|         } | ||||
|         if (def->isFarBranch) | ||||
|         { | ||||
|             instruction->attributes |= ZYDIS_ATTRIB_IS_FAR_BRANCH; | ||||
|         } | ||||
|         if (def->acceptsLock) | ||||
|         { | ||||
|             instruction->attributes |= ZYDIS_ATTRIB_ACCEPTS_LOCK; | ||||
|  |  | |||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -6240,6 +6240,7 @@ const ZydisOperandDefinition operandDefinitions[] = | |||
|     { ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG, ZYDIS_OPERAND_VISIBILITY_IMPLICIT, ZYDIS_OPERAND_ACTION_WRITE, { 0, 0, 0 }, ZYDIS_IELEMENT_TYPE_INVALID, { .reg = { ZYDIS_IMPLREG_TYPE_STATIC, { .reg = ZYDIS_REGISTER_DS } } } },  | ||||
|     { ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG, ZYDIS_OPERAND_VISIBILITY_IMPLICIT, ZYDIS_OPERAND_ACTION_WRITE, { 0, 0, 0 }, ZYDIS_IELEMENT_TYPE_INVALID, { .reg = { ZYDIS_IMPLREG_TYPE_STATIC, { .reg = ZYDIS_REGISTER_FS } } } },  | ||||
|     { ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG, ZYDIS_OPERAND_VISIBILITY_IMPLICIT, ZYDIS_OPERAND_ACTION_WRITE, { 0, 0, 0 }, ZYDIS_IELEMENT_TYPE_INVALID, { .reg = { ZYDIS_IMPLREG_TYPE_STATIC, { .reg = ZYDIS_REGISTER_GS } } } },  | ||||
|     { ZYDIS_SEMANTIC_OPTYPE_MEM, ZYDIS_OPERAND_VISIBILITY_EXPLICIT, ZYDIS_OPERAND_ACTION_READ, { 1, 1, 1 }, ZYDIS_IELEMENT_TYPE_INT64, { .encoding = ZYDIS_OPERAND_ENCODING_MODRM_RM } },  | ||||
|     { ZYDIS_SEMANTIC_OPTYPE_GPR32_32_64, ZYDIS_OPERAND_VISIBILITY_EXPLICIT, ZYDIS_OPERAND_ACTION_READ, { 0, 0, 0 }, ZYDIS_IELEMENT_TYPE_INVALID, { .encoding = ZYDIS_OPERAND_ENCODING_MODRM_RM } },  | ||||
|     { ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG, ZYDIS_OPERAND_VISIBILITY_IMPLICIT, ZYDIS_OPERAND_ACTION_READ, { 0, 0, 0 }, ZYDIS_IELEMENT_TYPE_INVALID, { .reg = { ZYDIS_IMPLREG_TYPE_STATIC, { .reg = ZYDIS_REGISTER_ES } } } },  | ||||
|     { ZYDIS_SEMANTIC_OPTYPE_IMPLICIT_REG, ZYDIS_OPERAND_VISIBILITY_IMPLICIT, ZYDIS_OPERAND_ACTION_READ, { 0, 0, 0 }, ZYDIS_IELEMENT_TYPE_INVALID, { .reg = { ZYDIS_IMPLREG_TYPE_STATIC, { .reg = ZYDIS_REGISTER_CS } } } },  | ||||
|  |  | |||
|  | @ -572,6 +572,7 @@ typedef struct ZydisInstructionDefinitionDEFAULT_ | |||
| { | ||||
|     ZYDIS_INSTRUCTION_DEFINITION_BASE; | ||||
|     ZydisBool isPrivileged                  ZYDIS_BITFIELD( 1); | ||||
|     ZydisBool isFarBranch                   ZYDIS_BITFIELD( 1); | ||||
|     ZydisBool acceptsLock                   ZYDIS_BITFIELD( 1); | ||||
|     ZydisBool acceptsREP                    ZYDIS_BITFIELD( 1); | ||||
|     ZydisBool acceptsREPEREPZ               ZYDIS_BITFIELD( 1); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue