From 5d32f1eafa5fed3e2d348f35b4ad561e46c7976b Mon Sep 17 00:00:00 2001 From: ale Date: Fri, 1 Sep 2023 17:05:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=B2=E6=AD=A2=20=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E4=BC=9A=E5=AF=BC=E8=87=B4=20?= =?UTF-8?q?=E9=87=8D=E6=96=B0=20=E6=89=93=E4=B9=B1=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/VSProj/Instruction.cs | 412 +++++++++++++++++++++++++++++++++++ 1 file changed, 412 insertions(+) create mode 100644 Source/VSProj/Instruction.cs diff --git a/Source/VSProj/Instruction.cs b/Source/VSProj/Instruction.cs new file mode 100644 index 0000000..97ad6dd --- /dev/null +++ b/Source/VSProj/Instruction.cs @@ -0,0 +1,412 @@ +/* + * Tencent is pleased to support the open source community by making InjectFix available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * InjectFix is licensed under the MIT License, except for the third-party components listed in the file 'LICENSE' which may be subject to their corresponding license terms. + * This file is subject to the terms and conditions defined in file 'LICENSE', which is part of this source code package. + */ + +namespace IFix.Core +{ + public enum Code + { + Cgt, + // Token: 0x04000007 RID: 7 + Stelem_R8, + // Token: 0x04000008 RID: 8 + Volatile, + // Token: 0x04000009 RID: 9 + Conv_Ovf_I4, + // Token: 0x0400000A RID: 10 + Add_Ovf, + // Token: 0x0400000B RID: 11 + Conv_Ovf_U4_Un, + // Token: 0x0400000C RID: 12 + Conv_Ovf_U1_Un, + // Token: 0x0400000D RID: 13 + Unaligned, + // Token: 0x0400000E RID: 14 + Ldc_R4, + // Token: 0x0400000F RID: 15 + Conv_Ovf_I_Un, + // Token: 0x04000010 RID: 16 + And, + // Token: 0x04000011 RID: 17 + Neg, + // Token: 0x04000012 RID: 18 + Ldind_I8, + // Token: 0x04000013 RID: 19 + Ldelem_Ref, + // Token: 0x04000014 RID: 20 + Conv_Ovf_I2_Un, + // Token: 0x04000015 RID: 21 + Add_Ovf_Un, + // Token: 0x04000016 RID: 22 + Cpblk, + // Token: 0x04000017 RID: 23 + Conv_Ovf_I, + // Token: 0x04000018 RID: 24 + Shr_Un, + // Token: 0x04000019 RID: 25 + Conv_Ovf_U4, + // Token: 0x0400001A RID: 26 + Ret, + // Token: 0x0400001B RID: 27 + Xor, + // Token: 0x0400001C RID: 28 + Clt, + // Token: 0x0400001D RID: 29 + Conv_I, + // Token: 0x0400001E RID: 30 + Ldind_I4, + // Token: 0x0400001F RID: 31 + Dup, + // Token: 0x04000020 RID: 32 + Ldelem_R4, + // Token: 0x04000021 RID: 33 + Clt_Un, + // Token: 0x04000022 RID: 34 + Ldarga, + // Token: 0x04000023 RID: 35 + Sizeof, + // Token: 0x04000024 RID: 36 + Mul, + // Token: 0x04000025 RID: 37 + Localloc, + // Token: 0x04000026 RID: 38 + Ckfinite, + // Token: 0x04000027 RID: 39 + Conv_U8, + // Token: 0x04000028 RID: 40 + Stelem_I, + // Token: 0x04000029 RID: 41 + Or, + // Token: 0x0400002A RID: 42 + Blt, + // Token: 0x0400002B RID: 43 + Ldelema, + // Token: 0x0400002C RID: 44 + Ldftn, + // Token: 0x0400002D RID: 45 + No, + // Token: 0x0400002E RID: 46 + Ldfld, + // Token: 0x0400002F RID: 47 + Conv_Ovf_I4_Un, + // Token: 0x04000030 RID: 48 + Tail, + // Token: 0x04000031 RID: 49 + Initblk, + // Token: 0x04000032 RID: 50 + Readonly, + // Token: 0x04000033 RID: 51 + Stelem_I1, + // Token: 0x04000034 RID: 52 + Bgt, + // Token: 0x04000035 RID: 53 + Sub_Ovf_Un, + // Token: 0x04000036 RID: 54 + Ldtoken, + // Token: 0x04000037 RID: 55 + Ldelem_I1, + // Token: 0x04000038 RID: 56 + Refanyval, + // Token: 0x04000039 RID: 57 + Ble, + // Token: 0x0400003A RID: 58 + Stind_I1, + // Token: 0x0400003B RID: 59 + Div_Un, + // Token: 0x0400003C RID: 60 + Ldarg, + // Token: 0x0400003D RID: 61 + Newanon, + // Token: 0x0400003E RID: 62 + Ldvirtftn2, + // Token: 0x0400003F RID: 63 + Conv_Ovf_U2, + // Token: 0x04000040 RID: 64 + Conv_Ovf_I1_Un, + // Token: 0x04000041 RID: 65 + Br, + // Token: 0x04000042 RID: 66 + Mkrefany, + // Token: 0x04000043 RID: 67 + Ldstr, + // Token: 0x04000044 RID: 68 + Newarr, + // Token: 0x04000045 RID: 69 + Ldtype, + // Token: 0x04000046 RID: 70 + Conv_Ovf_I1, + // Token: 0x04000047 RID: 71 + Conv_R4, + // Token: 0x04000048 RID: 72 + Ldc_I4, + // Token: 0x04000049 RID: 73 + Stelem_I4, + // Token: 0x0400004A RID: 74 + Not, + // Token: 0x0400004B RID: 75 + Conv_U2, + // Token: 0x0400004C RID: 76 + Rem_Un, + // Token: 0x0400004D RID: 77 + Ldelem_U2, + // Token: 0x0400004E RID: 78 + Conv_I4, + // Token: 0x0400004F RID: 79 + Stobj, + // Token: 0x04000050 RID: 80 + Brtrue, + // Token: 0x04000051 RID: 81 + Conv_U4, + // Token: 0x04000052 RID: 82 + Call, + // Token: 0x04000053 RID: 83 + Rem, + // Token: 0x04000054 RID: 84 + Castclass, + // Token: 0x04000055 RID: 85 + Conv_Ovf_I8, + // Token: 0x04000056 RID: 86 + Conv_I8, + // Token: 0x04000057 RID: 87 + Add, + // Token: 0x04000058 RID: 88 + Ldloc, + // Token: 0x04000059 RID: 89 + Conv_Ovf_U8_Un, + // Token: 0x0400005A RID: 90 + CallExtern, + // Token: 0x0400005B RID: 91 + Conv_U1, + // Token: 0x0400005C RID: 92 + Conv_Ovf_U1, + // Token: 0x0400005D RID: 93 + StackSpace, + // Token: 0x0400005E RID: 94 + Stsfld, + // Token: 0x0400005F RID: 95 + Shl, + // Token: 0x04000060 RID: 96 + Ldelem_R8, + // Token: 0x04000061 RID: 97 + Ldelem_I8, + // Token: 0x04000062 RID: 98 + Ldind_U4, + // Token: 0x04000063 RID: 99 + Break, + // Token: 0x04000064 RID: 100 + Bne_Un, + // Token: 0x04000065 RID: 101 + Sub_Ovf, + // Token: 0x04000066 RID: 102 + Conv_R8, + // Token: 0x04000067 RID: 103 + Mul_Ovf, + // Token: 0x04000068 RID: 104 + Brfalse, + // Token: 0x04000069 RID: 105 + Conv_Ovf_I2, + // Token: 0x0400006A RID: 106 + Jmp, + // Token: 0x0400006B RID: 107 + Conv_U, + // Token: 0x0400006C RID: 108 + Ldelem_U1, + // Token: 0x0400006D RID: 109 + Div, + // Token: 0x0400006E RID: 110 + Ldsfld, + // Token: 0x0400006F RID: 111 + Initobj, + // Token: 0x04000070 RID: 112 + Stelem_I8, + // Token: 0x04000071 RID: 113 + Newobj, + // Token: 0x04000072 RID: 114 + Stelem_Any, + // Token: 0x04000073 RID: 115 + Conv_I2, + // Token: 0x04000074 RID: 116 + Pop, + // Token: 0x04000075 RID: 117 + Unbox_Any, + // Token: 0x04000076 RID: 118 + Cpobj, + // Token: 0x04000077 RID: 119 + Stind_R8, + // Token: 0x04000078 RID: 120 + Ldind_I, + // Token: 0x04000079 RID: 121 + Conv_I1, + // Token: 0x0400007A RID: 122 + Cgt_Un, + // Token: 0x0400007B RID: 123 + Stelem_Ref, + // Token: 0x0400007C RID: 124 + Stind_I2, + // Token: 0x0400007D RID: 125 + Mul_Ovf_Un, + // Token: 0x0400007E RID: 126 + Ldind_R4, + // Token: 0x0400007F RID: 127 + Conv_Ovf_U, + // Token: 0x04000080 RID: 128 + Ldelem_I, + // Token: 0x04000081 RID: 129 + Stind_I4, + // Token: 0x04000082 RID: 130 + Nop, + // Token: 0x04000083 RID: 131 + Throw, + // Token: 0x04000084 RID: 132 + Ldobj, + // Token: 0x04000085 RID: 133 + Endfinally, + // Token: 0x04000086 RID: 134 + Ldvirtftn, + // Token: 0x04000087 RID: 135 + Ldsflda, + // Token: 0x04000088 RID: 136 + Callvirtvirt, + // Token: 0x04000089 RID: 137 + Stind_Ref, + // Token: 0x0400008A RID: 138 + Ldnull, + // Token: 0x0400008B RID: 139 + Stind_I8, + // Token: 0x0400008C RID: 140 + Ldelem_U4, + // Token: 0x0400008D RID: 141 + Conv_Ovf_U8, + // Token: 0x0400008E RID: 142 + Ble_Un, + // Token: 0x0400008F RID: 143 + Ldc_I8, + // Token: 0x04000090 RID: 144 + Stind_I, + // Token: 0x04000091 RID: 145 + Unbox, + // Token: 0x04000092 RID: 146 + Beq, + // Token: 0x04000093 RID: 147 + Blt_Un, + // Token: 0x04000094 RID: 148 + Switch, + // Token: 0x04000095 RID: 149 + Callvirt, + // Token: 0x04000096 RID: 150 + Constrained, + // Token: 0x04000097 RID: 151 + Refanytype, + // Token: 0x04000098 RID: 152 + Ldind_U1, + // Token: 0x04000099 RID: 153 + Starg, + // Token: 0x0400009A RID: 154 + Sub, + // Token: 0x0400009B RID: 155 + Ldflda, + // Token: 0x0400009C RID: 156 + Ldind_I1, + // Token: 0x0400009D RID: 157 + Rethrow, + // Token: 0x0400009E RID: 158 + Ldind_U2, + // Token: 0x0400009F RID: 159 + Ldind_R8, + // Token: 0x040000A0 RID: 160 + Ldelem_Any, + // Token: 0x040000A1 RID: 161 + Leave, + // Token: 0x040000A2 RID: 162 + Endfilter, + // Token: 0x040000A3 RID: 163 + Conv_Ovf_U_Un, + // Token: 0x040000A4 RID: 164 + Conv_Ovf_I8_Un, + // Token: 0x040000A5 RID: 165 + Stelem_R4, + // Token: 0x040000A6 RID: 166 + Stloc, + // Token: 0x040000A7 RID: 167 + Stfld, + // Token: 0x040000A8 RID: 168 + Ceq, + // Token: 0x040000A9 RID: 169 + Box, + // Token: 0x040000AA RID: 170 + Bge, + // Token: 0x040000AB RID: 171 + Ldind_I2, + // Token: 0x040000AC RID: 172 + Shr, + // Token: 0x040000AD RID: 173 + Arglist, + // Token: 0x040000AE RID: 174 + Conv_R_Un, + // Token: 0x040000AF RID: 175 + Stelem_I2, + // Token: 0x040000B0 RID: 176 + Bge_Un, + // Token: 0x040000B1 RID: 177 + Ldind_Ref, + // Token: 0x040000B2 RID: 178 + Ldc_R8, + // Token: 0x040000B3 RID: 179 + Ldelem_I4, + // Token: 0x040000B4 RID: 180 + Conv_Ovf_U2_Un, + // Token: 0x040000B5 RID: 181 + Bgt_Un, + // Token: 0x040000B6 RID: 182 + Stind_R4, + // Token: 0x040000B7 RID: 183 + Ldlen, + // Token: 0x040000B8 RID: 184 + Ldloca, + // Token: 0x040000B9 RID: 185 + Ldelem_I2, + // Token: 0x040000BA RID: 186 + Isinst + } + + [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)] + public struct Instruction + { + /// + /// 指令MAGIC + /// + public const ulong INSTRUCTION_FORMAT_MAGIC = 4952349763586359805; + + /// + /// 当前指令 + /// + public Code Code; + + /// + /// 操作数 + /// + public int Operand; + } + + public enum ExceptionHandlerType + { + Catch = 0, + Filter = 1, + Finally = 2, + Fault = 4 + } + + public sealed class ExceptionHandler + { + public System.Type CatchType; + public int CatchTypeId; + public int HandlerEnd; + public int HandlerStart; + public ExceptionHandlerType HandlerType; + public int TryEnd; + public int TryStart; + } +} \ No newline at end of file