mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
232 lines
5.9 KiB
232 lines
5.9 KiB
#ifndef _Lc_c_h
|
|
#define _Lc_c_h
|
|
#define ONE (1)
|
|
#define TCTRL_ENTRYPOINT_BITNUM (0)
|
|
#define TCTRL_ENTRYPOINT_BITMASK (1)
|
|
#define TCTRL_SPLITPOINT_BITNUM (1)
|
|
#define TCTRL_SPLITPOINT_BITMASK (2)
|
|
#define TCTRL_ENDFRAG_BITNUM (2)
|
|
#define TCTRL_ENDFRAG_BITMASK (4)
|
|
#define TCTRL_SPM_PREDICTED_BITNUM (4)
|
|
#define TCTRL_SPM_PREDICTED_BITMASK (16)
|
|
#define TCTRL_FOLDED_BITNUM (5)
|
|
#define TCTRL_FOLDED_BITMASK (32)
|
|
#define TCTRL_SOFTIMM_BIT_S (7)
|
|
#define TCTRL_SOFTIMM_BIT_E (6)
|
|
#define TCTRL_SOFTIMM_BITMASK (192)
|
|
#define NUM_HASH_BITS (6)
|
|
#define HASH_MASK (63)
|
|
#define BYTES_PER_HCU (4)
|
|
#define MORE_PRS_MASK (128)
|
|
#define JUMP_REC_NULL ((struct JUMP_REC*)0)
|
|
#define CODE_ELEM_NULL ((IU32*)0)
|
|
#define MAX_JUMP_REC_PER_FRAG (33)
|
|
#define VCT_NODE_REC_NULL ((struct VCT_NODE_REC*)0)
|
|
#define DS_CHANGE (65536)
|
|
#define DS_RW_IMM (131072)
|
|
#define CS_RW_IMM (262144)
|
|
#define RW_IMM_SIZE_MASK (3670016)
|
|
#define RW_IMM_SIZE_SHIFT (19)
|
|
#define RW_IMM_SIZE_TOPBIT (21)
|
|
#define IMM_RW_OPT_MASK (393216)
|
|
#define IMM_RW_MASK (458752)
|
|
#define HBP_TOUCHER_BITNUM (22)
|
|
#define HBP_TOUCHER_MASK (4194304)
|
|
#define HBP_CLIENT_BITNUM (23)
|
|
#define HBP_CLIENT_MASK (8388608)
|
|
#define HBP_SET_BITNUM (24)
|
|
#define HBP_SET_MASK (16777216)
|
|
#define HBP_POSV_CHECK_BITNUM (25)
|
|
#define HBP_POSV_CHECK_MASK (33554432)
|
|
#define HBP_NEGV_CHECK_BITNUM (26)
|
|
#define HBP_NEGV_CHECK_MASK (67108864)
|
|
#define IcLineOfCode (20)
|
|
#define IcCallCodeSize (40)
|
|
#define IcMaxImmedSize (20)
|
|
#define IcGotoCodeSize (20)
|
|
#define IcMaxFtUpdateSize (60)
|
|
#define IcMaxUnivUpdateSize (80)
|
|
enum AccessType
|
|
{
|
|
ACCESS_NA = 0,
|
|
ACCESS_READ = 1,
|
|
ACCESS_WRITE = 2,
|
|
ACCESS_READ_WRITE = 3,
|
|
ACCESS_VALIDATED_WRITE = 4
|
|
};
|
|
enum CopierActionPhase
|
|
{
|
|
CpActionPhaseInstruction = 0,
|
|
CpActionPhaseCopying = 1,
|
|
CpActionPhaseExecute = 2
|
|
};
|
|
enum CopierAction
|
|
{
|
|
CopierActionCopyZero = 0,
|
|
CopierActionCopyOne = 1,
|
|
CopierActionCopyTwo = 2,
|
|
CopierActionCopyThree = 3,
|
|
CopierActionCopyFour = 4,
|
|
CopierActionCopyFive = 5,
|
|
CopierActionCopySix = 6,
|
|
CopierActionCopyVariable = 7,
|
|
CopierActionPrePatchJcond = 8,
|
|
CopierActionPatchJcond = 9,
|
|
CopierActionBackoverMarker = 10,
|
|
CopierActionSubrId = 11,
|
|
CopierActionNeedSafeContinueFragmentCheck = 12,
|
|
CopierActionNpxExceptionData = 13,
|
|
CopierActionNeedNextIntelEip = 14,
|
|
CopierActionTupleImmARG1 = 15,
|
|
CopierActionTupleImmARG2 = 16,
|
|
CopierActionTupleImmARG3 = 17,
|
|
CopierActionTupleImmV5 = 18,
|
|
CopierActionTupleImmV6 = 19,
|
|
CopierActionTupleImmV7 = 20,
|
|
CopierActionTupleImmV8 = 21,
|
|
CopierActionTupleImmV9 = 22,
|
|
CopierActionTupleImmV10 = 23,
|
|
CopierActionTupleImmV11 = 24,
|
|
CopierActionTupleImmV12 = 25,
|
|
CopierActionTupleImmV13 = 26,
|
|
CopierActionTupleImmV14 = 27,
|
|
CopierActionTupleImmV15 = 28,
|
|
CopierActionTupleImmV16 = 29,
|
|
CopierActionTupleImmV17 = 30,
|
|
CopierActionTupleImmV18 = 31,
|
|
CopierActionTupleImmV19 = 32,
|
|
CopierActionTupleImmV20 = 33,
|
|
CopierActionTupleImmV21 = 34,
|
|
CopierActionTupleImmV22 = 35,
|
|
CopierActionTupleImmV23 = 36,
|
|
CopierActionTupleDisp = 37,
|
|
CopierActionTupleImm2ARG2 = 38,
|
|
CopierActionTupleImm2ARG3 = 39,
|
|
CopierActionTupleRetEIP = 40,
|
|
CopierActionImmRWPhysPtr = 41,
|
|
CopierActionDsBaseFromDisp = 42,
|
|
CopierActionTearOffFlags = 43,
|
|
CopierActionSetsFt = 44,
|
|
CopierActionTrackFt = 45,
|
|
CopierActionSrcFt = 46,
|
|
CopierActionSrcFtSquelch = 47,
|
|
CopierActionTearOffFlagsEnd = 48,
|
|
CopierActionSrcFtPopf = 49,
|
|
CopierActionSrcCarryFlagInARG3 = 50,
|
|
CopierActionSrcCond_O_InARG3 = 51,
|
|
CopierActionSrcCond_Z_InARG3 = 52,
|
|
CopierActionSrcCond_BE_InARG3 = 53,
|
|
CopierActionSrcCond_S_InARG3 = 54,
|
|
CopierActionSrcCond_P_InARG3 = 55,
|
|
CopierActionSrcCond_L_InARG3 = 56,
|
|
CopierActionSrcCond_LE_InARG3 = 57,
|
|
CopierActionProfFragIndex = 58,
|
|
CopierNoteSrcEAX = 59,
|
|
CopierNoteSrcAX = 60,
|
|
CopierNoteDstEAX = 61,
|
|
CopierNoteDstAX = 62,
|
|
CopierNoteDstAL = 63,
|
|
CopierNoteSrcEBX = 64,
|
|
CopierNoteSrcBX = 65,
|
|
CopierNoteDstEBX = 66,
|
|
CopierNoteDstBX = 67,
|
|
CopierNoteDstBL = 68,
|
|
CopierNoteSrcECX = 69,
|
|
CopierNoteSrcCX = 70,
|
|
CopierNoteDstECX = 71,
|
|
CopierNoteDstCX = 72,
|
|
CopierNoteDstCL = 73,
|
|
CopierNoteSrcEDX = 74,
|
|
CopierNoteSrcDX = 75,
|
|
CopierNoteDstEDX = 76,
|
|
CopierNoteDstDX = 77,
|
|
CopierNoteDstDL = 78,
|
|
CopierNoteSrcEBP = 79,
|
|
CopierNoteDstEBP = 80,
|
|
CopierNoteDstBP = 81,
|
|
CopierNoteSrcEDI = 82,
|
|
CopierNoteDstEDI = 83,
|
|
CopierNoteDstDI = 84,
|
|
CopierNoteSrcESI = 85,
|
|
CopierNoteDstESI = 86,
|
|
CopierNoteDstSI = 87,
|
|
CopierNoteAddSingleInstruction = 88,
|
|
CopierNoteProcessSingleInstruction = 89,
|
|
CopierNoteSrcESP = 90,
|
|
CopierNoteSrcSP = 91,
|
|
CopierNotePostDstSP = 92,
|
|
CopierNotePostDstESP = 93,
|
|
CopierNotePostCommitPop = 94,
|
|
CopierNoteClearStackLocallyDangerous = 95,
|
|
CopierNoteHspAdjust = 96,
|
|
CopierNoteSetupHbp = 97,
|
|
CopierNoteGetHbpPlusDisp = 98,
|
|
CopierNoteAddrBP = 99,
|
|
CopierNoteAddrEBP = 100,
|
|
CopierNoteHspCheck = 101,
|
|
CopierNoteSrcUniverse = 102,
|
|
CopierNoteSetDF = 103,
|
|
CopierNoteClearDF = 104,
|
|
CopierNoteEnableImmRWOpt = 105,
|
|
CopierNoteBPILabel = 106,
|
|
CopierNoteCoRoutineReturnNeeded = 107,
|
|
CopierNoteCoRoutineReturnNotNeeded = 108,
|
|
CopierNoteCoRoutineReturnIfActive = 109,
|
|
CopierNoteLazySaveCoRoRet = 110,
|
|
CopierNoteForceSaveCoRoRet = 111,
|
|
CopierNoteCheckMaskedCLnonZero = 112,
|
|
CopierNoteCheckMaskedSoftImmedNonZeroARG1 = 113,
|
|
CopierNoteCheckMaskedSoftImmedNonZeroARG2 = 114,
|
|
CopierActionLast = 115
|
|
};
|
|
enum CopyEnum
|
|
{
|
|
CopyOne = 0,
|
|
CopyTwo = 1,
|
|
CopyThree = 2,
|
|
CopyFour = 3,
|
|
CopyFive = 4,
|
|
CopySix = 5
|
|
};
|
|
struct VCT_NODE_REC
|
|
{
|
|
IU8 actionRecord[3];
|
|
IU8 nextNode;
|
|
IU32 vsMask;
|
|
IU32 vsMatch;
|
|
IU32 codeRecord[1];
|
|
};
|
|
struct TUPLE_REC
|
|
{
|
|
IS32 disp;
|
|
IU32 immed;
|
|
IU32 immed2;
|
|
IU32 start_eip;
|
|
IU32 ret_eip;
|
|
IU32 flags;
|
|
IU32 cvs;
|
|
IU8 control;
|
|
IU8 intel_length;
|
|
IU16 ea_EFI;
|
|
IU16 aux_ea_EFI;
|
|
IU16 access_EFI;
|
|
IU16 access_type;
|
|
IU16 business_EFI;
|
|
IS32 stack_movement;
|
|
IU16 immed_offs;
|
|
IU16 immed2_offs;
|
|
IU8 reloc1;
|
|
IU8 reloc2;
|
|
IBOOL opnd32;
|
|
};
|
|
struct JUMP_REC
|
|
{
|
|
IU32 intelEa;
|
|
IU32 *hostAddr;
|
|
struct EntryPointCacheREC *univ;
|
|
struct JUMP_REC *next;
|
|
struct JUMP_REC *prev;
|
|
IBOOL ftStatus;
|
|
IUH ftVal;
|
|
};
|
|
#endif /* ! _Lc_c_h */
|