This function returns the needed details for making support for the casting in the script engine.
79{
82 UINT32 TempOffsetOfFieldFromTop = 0;
83 UINT32 TempSizeOfField = 0;
84
85 if (strcmp(StructName, "STUPID_STRUCT1") == 0 ||
86 strcmp(StructName, "PSTUPID_STRUCT1") == 0)
87 {
88 if (strcmp(StructName, "PSTUPID_STRUCT1") == 0)
89 {
90 IsTheStructItselfAPointer =
TRUE;
91 }
92
93 if (strcmp(FiledOfStructName, "Flag32") == 0)
94 {
96 TempOffsetOfFieldFromTop = 0x0;
97 TempSizeOfField = 0x4;
98 strcpy(*NewStructOrTypeName, "UINT32");
99 }
100 else if (strcmp(FiledOfStructName, "Flag64") == 0)
101 {
103 TempOffsetOfFieldFromTop = 0x4;
104 TempSizeOfField = 0x8;
105 strcpy(*NewStructOrTypeName, "UINT64");
106 }
107 else if (strcmp(FiledOfStructName, "Context") == 0)
108 {
110 TempOffsetOfFieldFromTop = 0xc;
111 TempSizeOfField = 0x8;
112 strcpy(*NewStructOrTypeName, "PVOID");
113 }
114 else if (strcmp(FiledOfStructName, "StringValue") == 0)
115 {
117 TempOffsetOfFieldFromTop = 0x14;
118 TempSizeOfField = 0x8;
119 strcpy(*NewStructOrTypeName, "PUNICODE_STRING");
120 }
121 else
122 {
123
124
125
127 }
128 }
129 else if (strcmp(StructName, "STUPID_STRUCT2") == 0 ||
130 strcmp(StructName, "PSTUPID_STRUCT2") == 0)
131 {
132 if (strcmp(StructName, "PSTUPID_STRUCT2") == 0)
133 {
134 IsTheStructItselfAPointer =
TRUE;
135 }
136
137 if (strcmp(FiledOfStructName, "Sina32") == 0)
138 {
140 TempOffsetOfFieldFromTop = 0x0;
141 TempSizeOfField = 0x4;
142 strcpy(*NewStructOrTypeName, "UINT32");
143 }
144 else if (strcmp(FiledOfStructName, "Sina64") == 0)
145 {
147 TempOffsetOfFieldFromTop = 0x4;
148 TempSizeOfField = 0x8;
149 strcpy(*NewStructOrTypeName, "UINT64");
150 }
151 else if (strcmp(FiledOfStructName, "AghaaSina") == 0)
152 {
154 TempOffsetOfFieldFromTop = 0xc;
155 TempSizeOfField = 0x8;
156 strcpy(*NewStructOrTypeName, "PVOID");
157 }
158 else if (strcmp(FiledOfStructName, "UnicodeStr") == 0)
159 {
161 TempOffsetOfFieldFromTop = 0x14;
162 TempSizeOfField = 0x8;
163 strcpy(*NewStructOrTypeName, "PUNICODE_STRING");
164 }
165 else if (strcmp(FiledOfStructName, "StupidStruct1") == 0)
166 {
168 TempOffsetOfFieldFromTop = 0x1c;
169 TempSizeOfField = 0x8;
170 strcpy(*NewStructOrTypeName, "PSTUPID_STRUCT1");
171 }
172 else
173 {
174
175
176
178 }
179 }
180 else if (strcmp(StructName, "UNICODE_STRING") == 0 ||
181 strcmp(StructName, "PUNICODE_STRING") == 0)
182 {
183 if (strcmp(StructName, "PUNICODE_STRING") == 0)
184 {
185 IsTheStructItselfAPointer =
TRUE;
186 }
187
188 if (strcmp(FiledOfStructName, "Length") == 0)
189 {
191 TempOffsetOfFieldFromTop = 0x0;
192 TempSizeOfField = 0x2;
193 strcpy(*NewStructOrTypeName, "USHORT");
194 }
195 else if (strcmp(FiledOfStructName, "MaximumLength") == 0)
196 {
198 TempOffsetOfFieldFromTop = 0x2;
199 TempSizeOfField = 0x2;
200 strcpy(*NewStructOrTypeName, "USHORT");
201 }
202 else if (strcmp(FiledOfStructName, "Buffer") == 0)
203 {
205 TempOffsetOfFieldFromTop = 0x4;
206 TempSizeOfField = 0x8;
207 strcpy(*NewStructOrTypeName, "PWSTR");
208 }
209 else
210 {
211
212
213
215 }
216 }
217 else
218 {
219
220
221
223 }
224
225
226
227
228 *OffsetOfFieldFromTop = TempOffsetOfFieldFromTop;
229 *SizeOfField = TempSizeOfField;
230 *IsFiledOfStructNamePointerOrNot = IsPointer;
231 *IsStructNamePointerOrNot = IsTheStructItselfAPointer;
232
234}