-
-
Notifications
You must be signed in to change notification settings - Fork 1
reverse engineering workflow
The most reliable workflow separates discovery, reading, recording, and mutation. Let each step produce evidence for the next one.
Open the binary, then check:
-
ida_session_statefor the active binary and useful next actions -
ida_session_statusforsafe_modeand analysis completion -
ida_overviewfor architecture, entry points, and analysis context -
ida_list_importsandida_list_stringsfor an initial capability map
For a known API, string, or symbol, begin with ida_find. Use
ida_list_functions when you need an inventory rather than a match.
For each promising function:
- Call
ida_decompilewhen pseudocode is useful. - Call
ida_disassemblewhen instruction-level details matter. - Follow
ida_xrefs_toandida_callersto understand inputs and reachability. - Use
ida_calleesorida_callgraphto understand what the function invokes. - Use
ida_read_bytesto verify bytes when IDA's interpretation is uncertain.
Decompilation includes bounded structural evidence when available. Treat that evidence as a guide to verify, not as a substitute for checking the relevant instructions and references.
Write a finding when you have a claim worth carrying forward. Include:
- a precise title;
- what the code does and what it does not establish;
- an address when possible;
- confidence;
- evidence such as a call, string, constant, or related address.
Use ida_mark_examined for a reviewed but uninteresting or inconclusive
function. This prevents repeated dead ends from consuming later sessions.
Use ida_next_target deliberately:
-
unresolvedfor open questions and unverified findings; -
staleafter relevant IDB changes; -
conflictwhen claims disagree; -
coveragefor frequently called but unread functions; -
frontierfor callers and callees around confirmed findings.
Each candidate includes a reason. Read the candidate, then record the outcome; the workspace becomes more useful as the investigation becomes more explicit.
Use ida_publish_findings with dry_run: true first. Confirm that the proposed
comments and names are appropriate, then repeat with the required
risk_ack: true. Publishing is an IDB mutation and should be treated as an
analyst review step, not automatic truth promotion.
References: generated operation reference, investigation workspace implementation.