86{
92 UINT32 ActionBreakToDebuggerLength = 0;
93 UINT32 ActionCustomCodeLength = 0;
94 UINT32 ActionScriptLength = 0;
98 string Cmd;
99
100
101
102
103
105
106 if (!Cmd.compare("!syscall") || !Cmd.compare("!syscall2"))
107 {
109 &CommandTokens,
111 &Event,
112 &EventLength,
113 &ActionBreakToDebugger,
114 &ActionBreakToDebuggerLength,
115 &ActionCustomCode,
116 &ActionCustomCodeLength,
117 &ActionScript,
118 &ActionScriptLength,
119 &EventParsingErrorCause))
120 {
121 return;
122 }
123 }
124 else
125 {
127 &CommandTokens,
129 &Event,
130 &EventLength,
131 &ActionBreakToDebugger,
132 &ActionBreakToDebuggerLength,
133 &ActionCustomCode,
134 &ActionCustomCodeLength,
135 &ActionScript,
136 &ActionScriptLength,
137 &EventParsingErrorCause))
138 {
139 return;
140 }
141 }
142
143
144
145
146
147
148
149
150
151
152
153 if (!Cmd.compare("!syscall") || !Cmd.compare("!syscall2"))
154 {
155 for (auto Section : CommandTokens)
156 {
161 {
162 continue;
163 }
164
165 else if (!GetSyscallNumber)
166 {
167
168
169
172 &SpecialTarget))
173 {
174
175
176
177 ShowMessages("unknown parameter '%s'\n\n",
179
180 if (!Cmd.compare("!syscall") || !Cmd.compare("!syscall2"))
181 {
183 }
184 else
185 {
187 }
188
190 return;
191 }
192 else
193 {
194 GetSyscallNumber =
TRUE;
195 }
196 }
197 else
198 {
199
200
201
202 ShowMessages("unknown parameter '%s'\n\n",
204
205 if (!Cmd.compare("!syscall") || !Cmd.compare("!syscall2"))
206 {
208 }
209 else
210 {
212 }
213
215 return;
216 }
217 }
218
219
220
221
223 }
224
225
226
227
228 if (!Cmd.compare("!syscall2") || !Cmd.compare("!sysret2"))
229 {
230
231
232
234 }
235 else
236 {
237
238
239
241 }
242
243
244
245
247 {
248
249
250
251
252
253
255 return;
256 }
257
258
259
260
262 ActionBreakToDebugger,
263 ActionBreakToDebuggerLength,
264 ActionCustomCode,
265 ActionCustomCodeLength,
266 ActionScript,
267 ActionScriptLength))
268 {
269
270
271
272
274 return;
275 }
276}
std::string GetCaseSensitiveStringFromCommandToken(CommandToken TargetToken)
Get case sensitive string from command token.
Definition common.cpp:467
std::string GetLowerStringFromCommandToken(CommandToken TargetToken)
Get lower case string from command token.
Definition common.cpp:484
BOOLEAN CompareLowerCaseStrings(CommandToken TargetToken, const CHAR *StringToCompare)
Compare lower case strings.
Definition common.cpp:503
VOID FreeEventsAndActionsMemory(PDEBUGGER_GENERAL_EVENT_DETAIL Event, PDEBUGGER_GENERAL_ACTION ActionBreakToDebugger, PDEBUGGER_GENERAL_ACTION ActionCustomCode, PDEBUGGER_GENERAL_ACTION ActionScript)
Deallocate buffers relating to events and actions.
Definition debugger.cpp:1688
BOOLEAN InterpretGeneralEventAndActionsFields(vector< CommandToken > *CommandTokens, VMM_EVENT_TYPE_ENUM EventType, PDEBUGGER_GENERAL_EVENT_DETAIL *EventDetailsToFill, PUINT32 EventBufferLength, PDEBUGGER_GENERAL_ACTION *ActionDetailsToFillBreakToDebugger, PUINT32 ActionBufferLengthBreakToDebugger, PDEBUGGER_GENERAL_ACTION *ActionDetailsToFillCustomCode, PUINT32 ActionBufferLengthCustomCode, PDEBUGGER_GENERAL_ACTION *ActionDetailsToFillScript, PUINT32 ActionBufferLengthScript, PDEBUGGER_EVENT_PARSING_ERROR_CAUSE ReasonForErrorInParsing)
Interpret general event fields.
Definition debugger.cpp:1736
BOOLEAN SendEventToKernel(PDEBUGGER_GENERAL_EVENT_DETAIL Event, UINT32 EventBufferLength)
Register the event to the kernel.
Definition debugger.cpp:1367
BOOLEAN RegisterActionToEvent(PDEBUGGER_GENERAL_EVENT_DETAIL Event, PDEBUGGER_GENERAL_ACTION ActionBreakToDebugger, UINT32 ActionBreakToDebuggerLength, PDEBUGGER_GENERAL_ACTION ActionCustomCode, UINT32 ActionCustomCodeLength, PDEBUGGER_GENERAL_ACTION ActionScript, UINT32 ActionScriptLength)
Register the action to the event.
Definition debugger.cpp:1483
NULL()
Definition test-case-generator.py:530
UINT64 OptionalParam2
Definition Events.h:278
UINT64 OptionalParam1
Definition Events.h:277
DEBUGGER_EVENT_OPTIONS Options
Definition Events.h:396
BOOLEAN SymbolConvertNameOrExprToAddress(const string &TextToConvert, PUINT64 Result)
check and convert string to a 64 bit unsigned integer and also check for symbol object names and eval...
Definition symbol.cpp:359
VOID CommandSysretHelp()
help of the !sysret command
Definition syscall-sysret.cpp:54
VOID CommandSyscallHelp()
help of the !syscall command
Definition syscall-sysret.cpp:20