MCPcopy Create free account
hub / github.com/axhlzy/FridaDebugger / formatEvent

Function formatEvent

scripts/function-stalker.js:254–288  ·  view source on GitHub ↗
(state, ev)

Source from the content-addressed store, hash-verified

252function sym(addr) { return CONFIG.symbolicate ? resolve(addr).text : addr.toString(); }
253
254function formatEvent(state, ev) {
255 const type = ev[0];
256 switch (type) {
257 case "call": {
258 const from = np(ev[1]), to = np(ev[2]), depth = ev[3];
259 const r = resolve(to);
260 if (!inScope(state.scope, r.lib)) return null;
261 return `${C.cyan}CALL${C.reset} ${sym(from)} -> ${r.text} ${C.dim}depth=${depth}${C.reset}`;
262 }
263 case "ret": {
264 const from = np(ev[1]), to = np(ev[2]);
265 const r = resolve(from);
266 if (!inScope(state.scope, r.lib)) return null;
267 return `${C.dim}RET ${C.reset} ${r.text} -> ${sym(to)}`;
268 }
269 case "block": {
270 const start = np(ev[1]), end = np(ev[2]);
271 const r = resolve(start);
272 if (!inScope(state.scope, r.lib)) return null;
273 const size = end && start ? parseInt(end.sub(start).toString(), 16) : 0;
274 return `${C.yellow}BLOCK${C.reset} ${r.text} ${C.dim}(${size}B)${C.reset}`;
275 }
276 case "compile": {
277 const r = resolve(np(ev[1]));
278 if (!inScope(state.scope, r.lib)) return null;
279 return `${C.dim}COMPILE${C.reset} ${r.text}`;
280 }
281 case "exec": {
282 const r = resolve(np(ev[1]));
283 if (!inScope(state.scope, r.lib)) return null;
284 return `EXEC ${r.text}`;
285 }
286 default: return null;
287 }
288}
289
290// --- install hooks ----------------------------------------------------------
291const hooks = [];

Callers 1

drainEventsFunction · 0.70

Calls 4

npFunction · 0.70
resolveFunction · 0.70
inScopeFunction · 0.70
symFunction · 0.70

Tested by

no test coverage detected