[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-trail-of-bits-idac":3,"mdc--tr1nxj-key":34,"related-repo-trail-of-bits-idac":1479,"related-org-trail-of-bits-idac":1487},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"idac","reverse-engineer binaries with IDA Pro","Use for reverse-engineering work through the local `idac` CLI against a live IDA GUI session, an existing `.i64` \u002F `.idb` database, or a binary that IDA can open. Trigger this skill when the task involves decompilation, disassembly, ctree or microcode inspection, functions, locals, types, xrefs, strings, imports, C++ class or vtable recovery, target or backend selection, prototype or local\u002Ftype mutations, reanalysis, or IDAPython execution through IDA.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"trail-of-bits","Trail of Bits","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftrail-of-bits.png","trailofbits",[13,17,20],{"name":14,"slug":15,"type":16},"Engineering","engineering","tag",{"name":18,"slug":19,"type":16},"Code Analysis","code-analysis",{"name":21,"slug":22,"type":16},"Debugging","debugging",39,"https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fidac","2026-07-29T05:39:49.791057",null,3,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"idac - IDA Pro command line tool for agents and humans","https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fidac\u002Ftree\u002FHEAD\u002Fsrc\u002Fidac\u002Fskills\u002Fidac","---\nname: idac\ndescription: Use for reverse-engineering work through the local `idac` CLI against a live IDA GUI session, an existing `.i64` \u002F `.idb` database, or a binary that IDA can open. Trigger this skill when the task involves decompilation, disassembly, ctree or microcode inspection, functions, locals, types, xrefs, strings, imports, C++ class or vtable recovery, target or backend selection, prototype or local\u002Ftype mutations, reanalysis, or IDAPython execution through IDA.\n---\n\n# idac\n\nUse `idac` for IDA-backed reverse engineering through a live IDA GUI, an existing `.i64` \u002F `.idb`, or a binary that IDA can open.\nPrefer first-class `idac` commands, then `idac py exec`, then external or ad hoc tooling only when `idac` cannot cover the task.\n\n## Critical defaults\n\n- Work from the binary first. Do not search the web or external source trees unless the user explicitly asks for that or the task is specifically about external correlation.\n- Run one `idac` command at a time for each target. Use `batch`, `decompilemany`, and `--out` artifacts for broad work instead of background parallel commands.\n- Use `decompile --f5` or `decompilemany --f5` during type or prototype recovery. `--f5` is an alias for `--no-cache`.\n- Preview supported persistent mutations first, then commit only after the preview confirms the intended change. Outside batch mode, `preview` requires `-o\u002F--out`.\n- Before `function prototype set`, run `function prototype show`. Run `function prototype check` first when the declaration uses a custom calling convention (`__usercall`, `__userpurge`, `__spoils`) or references newly imported types; declare missing support types before dependent prototypes.\n- Before importing large headers, validate with `type check --decl-file ...`.\n- After type or prototype mutations, run `misc reanalyze`, then reread pseudocode or locals before rename-heavy cleanup. Calibrate local renames from fresh `function locals list --json` output using `--local-id` or `--index`; see `idac docs workflows` for selector calibration.\n- Before executing a mutation batch, run `batch \u003Cbatch.idac> --lint --out \u003Clint.json>` and fix reported issues.\n- Context selection: omit `-c` for one live GUI session, use `-c pid:\u003Cpid>` for multiple GUI sessions, and use `-c \"db:\u002Fpath\"` for headless work.\n- When working in an idac workspace, keep audit notes append-only and factual. Distinguish proven facts from inferred names, types, and semantics.\n\nWhen this guide is installed as a skill, the reference files sit alongside it; otherwise use `idac docs TOPIC` for the same material. For CLI syntax, prefer targeted help such as `idac type class --help`; use `idac --full-help` only when the command surface itself is unclear.\n\n## When not to use\n\n- The task is not IDA-backed and the user wants standalone RE tooling.\n- The task is source-level debugging or runtime inspection; use a debugger directly.\n- A first-class `idac` command already covers the task; do not start with raw IDAPython.\n- The task is static analysis, linting, or vulnerability scanning outside IDA-driven reverse-engineering work.\n\n## Choose the path\n\n```\nWhat is the task?\n│\n├─ Read-only inspection (decompile, list, xrefs, strings, ctree, microcode)\n│   └─ Run `idac docs cli`\n│\n├─ Mutation (rename, retype, prototype, type declare)\n│   └─ Run `idac docs workflows`\n│\n├─ C++ class or vtable recovery\n│   └─ Run `idac docs class-recovery` and `idac docs ida-cpp-type-details`\n│\n├─ Context\u002Ftarget selection, backend state, or bridge trouble\n│   └─ Run `idac docs targets` or `idac docs troubleshooting`\n│\n└─ No first-class command covers the task\n    └─ Use `idac py exec` with a small explicit script\n```\n\n## First commands\n\nUse only the commands that match the current target state:\n\n```bash\n# always: discover live GUI and headless targets\nidac targets list --json\n# headless binary import\nidac database open \"\u002Fpath\u002Fto\u002Fbinary\" --json\n# headless database or imported binary context\nidac database show -c \"db:\u002Fpath\u002Fto\u002Fbinary\" --json\n# single live GUI session: omit -c\nidac function list \"init|open|close\" --demangle --regex -i --json --out \u002Ftmp\u002Ffunctions.json\n# one of several live GUI sessions: select the pid from targets list\nidac decompile \"sub_08041337\" -c \"pid:1234\" -o \u002Ftmp\u002Fsub_08041337.c\n# single live GUI session: omit -c\nidac decompile \"sub_08041337\" -o \u002Ftmp\u002Fsub_08041337.c\n# current context\nidac xrefs \"sub_08041337\" --json\nidac disasm --start \"0x100000460\" --end \"0x1000004a0\"\n```\n\n## Mutation outline\n\nUse `idac docs workflows` (`workflows.md`) for exact syntax.\n\n1. Discovery and read-only audit.\n2. Preview each persistent mutation.\n3. Lint mutation batches before running them.\n4. Commit the mutation.\n5. Run `misc reanalyze` after type or prototype changes.\n6. Reread pseudocode or locals; calibrate local selectors from fresh JSON.\n7. Verify final readback and, when working in a workspace, record the pass in the workspace audit log (`audit\u002F\u003Ctarget>-recovery.md`) if one exists.\n\nFor headless `db:` work, checkpoint with `database save`; `database close` saves by default, and `database close --discard` abandons pending changes. Live GUI edits remain in the IDA session.\n\n## Class recovery outline\n\nUse `idac docs class-recovery` (`class-recovery.md`) for the full workflow and `idac docs ida-cpp-type-details` (`ida-cpp-type-details.md`) before importing C++ class or vtable declarations.\n\n## Python escape hatch\n\nUse `py exec` only when no first-class command covers the task cleanly:\n\n```bash\nidac py exec --code \"print(hex(idaapi.get_imagebase())); result = {'entry': hex(idc.get_inf_attr(idc.INF_START_EA))}\"\n```\n\nSupported modes: `--code`, `--stdin`, `--script`. `--script` preserves IDAPython script semantics such as `__file__`, script-directory imports, and `sys.argv` when IDA exposes that helper. Add `--persist` only when later `py exec` calls in the same session must reuse Python globals.\nThe execution scope includes the core `ida*` modules that `idac` imports itself, plus `idautils`, `idc`, and `result`.\n\n## Reference index\n\n| File | `idac docs` topic | When to read |\n|------|-------------------|--------------|\n| `references\u002Fcli.md` | `cli` | Command grammar, common reads, preview, batch, output notes |\n| `references\u002Ftargets-and-backends.md` | `targets` | Context selection, GUI vs `idalib`, opening binaries, target discovery |\n| `references\u002Fworkflows.md` | `workflows` | Safe mutation loop, batch, selector calibration, post-mutation readback |\n| `references\u002Fclass-recovery.md` | `class-recovery` | C++ class recovery workflow, naming rules, vtable guidance, verification |\n| `references\u002Fida-cpp-type-details.md` | `ida-cpp-type-details` | IDA C++ parser expectations, `__vftable`, `*_vtbl`, multiple inheritance |\n| `references\u002Fida-set-types.md` | `ida-set-types` | IDA C declaration syntax: calling conventions, usercall locations, attribute and type keywords |\n| `references\u002Fida-advanced-type-annotations.md` | `ida-advanced-type-annotations` | Scattered argument locations and other advanced IDA declaration annotations |\n| `references\u002Ftroubleshooting.md` | `troubleshooting` | Bridge, backend, mutation, stale-result, or sandbox problems |\n| `references\u002Ftemplates\u002FREADME.md` | `templates` | Reusable prototype-pass, rename-pass, checkpoint-note, and locals-jq templates (printed in full) |\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,46,98,105,361,390,396,426,432,444,450,455,854,860,879,933,970,976,1010,1016,1028,1070,1171,1177,1473],{"type":40,"tag":41,"props":42,"children":43},"element","h1",{"id":4},[44],{"type":45,"value":4},"text",{"type":40,"tag":47,"props":48,"children":49},"p",{},[50,52,58,60,66,68,74,76,81,83,89,91,96],{"type":45,"value":51},"Use ",{"type":40,"tag":53,"props":54,"children":56},"code",{"className":55},[],[57],{"type":45,"value":4},{"type":45,"value":59}," for IDA-backed reverse engineering through a live IDA GUI, an existing ",{"type":40,"tag":53,"props":61,"children":63},{"className":62},[],[64],{"type":45,"value":65},".i64",{"type":45,"value":67}," \u002F ",{"type":40,"tag":53,"props":69,"children":71},{"className":70},[],[72],{"type":45,"value":73},".idb",{"type":45,"value":75},", or a binary that IDA can open.\nPrefer first-class ",{"type":40,"tag":53,"props":77,"children":79},{"className":78},[],[80],{"type":45,"value":4},{"type":45,"value":82}," commands, then ",{"type":40,"tag":53,"props":84,"children":86},{"className":85},[],[87],{"type":45,"value":88},"idac py exec",{"type":45,"value":90},", then external or ad hoc tooling only when ",{"type":40,"tag":53,"props":92,"children":94},{"className":93},[],[95],{"type":45,"value":4},{"type":45,"value":97}," cannot cover the task.",{"type":40,"tag":99,"props":100,"children":102},"h2",{"id":101},"critical-defaults",[103],{"type":45,"value":104},"Critical defaults",{"type":40,"tag":106,"props":107,"children":108},"ul",{},[109,115,151,187,207,258,270,314,327,356],{"type":40,"tag":110,"props":111,"children":112},"li",{},[113],{"type":45,"value":114},"Work from the binary first. Do not search the web or external source trees unless the user explicitly asks for that or the task is specifically about external correlation.",{"type":40,"tag":110,"props":116,"children":117},{},[118,120,125,127,133,135,141,143,149],{"type":45,"value":119},"Run one ",{"type":40,"tag":53,"props":121,"children":123},{"className":122},[],[124],{"type":45,"value":4},{"type":45,"value":126}," command at a time for each target. Use ",{"type":40,"tag":53,"props":128,"children":130},{"className":129},[],[131],{"type":45,"value":132},"batch",{"type":45,"value":134},", ",{"type":40,"tag":53,"props":136,"children":138},{"className":137},[],[139],{"type":45,"value":140},"decompilemany",{"type":45,"value":142},", and ",{"type":40,"tag":53,"props":144,"children":146},{"className":145},[],[147],{"type":45,"value":148},"--out",{"type":45,"value":150}," artifacts for broad work instead of background parallel commands.",{"type":40,"tag":110,"props":152,"children":153},{},[154,155,161,163,169,171,177,179,185],{"type":45,"value":51},{"type":40,"tag":53,"props":156,"children":158},{"className":157},[],[159],{"type":45,"value":160},"decompile --f5",{"type":45,"value":162}," or ",{"type":40,"tag":53,"props":164,"children":166},{"className":165},[],[167],{"type":45,"value":168},"decompilemany --f5",{"type":45,"value":170}," during type or prototype recovery. ",{"type":40,"tag":53,"props":172,"children":174},{"className":173},[],[175],{"type":45,"value":176},"--f5",{"type":45,"value":178}," is an alias for ",{"type":40,"tag":53,"props":180,"children":182},{"className":181},[],[183],{"type":45,"value":184},"--no-cache",{"type":45,"value":186},".",{"type":40,"tag":110,"props":188,"children":189},{},[190,192,198,200,206],{"type":45,"value":191},"Preview supported persistent mutations first, then commit only after the preview confirms the intended change. Outside batch mode, ",{"type":40,"tag":53,"props":193,"children":195},{"className":194},[],[196],{"type":45,"value":197},"preview",{"type":45,"value":199}," requires ",{"type":40,"tag":53,"props":201,"children":203},{"className":202},[],[204],{"type":45,"value":205},"-o\u002F--out",{"type":45,"value":186},{"type":40,"tag":110,"props":208,"children":209},{},[210,212,218,220,226,228,234,236,242,243,249,250,256],{"type":45,"value":211},"Before ",{"type":40,"tag":53,"props":213,"children":215},{"className":214},[],[216],{"type":45,"value":217},"function prototype set",{"type":45,"value":219},", run ",{"type":40,"tag":53,"props":221,"children":223},{"className":222},[],[224],{"type":45,"value":225},"function prototype show",{"type":45,"value":227},". Run ",{"type":40,"tag":53,"props":229,"children":231},{"className":230},[],[232],{"type":45,"value":233},"function prototype check",{"type":45,"value":235}," first when the declaration uses a custom calling convention (",{"type":40,"tag":53,"props":237,"children":239},{"className":238},[],[240],{"type":45,"value":241},"__usercall",{"type":45,"value":134},{"type":40,"tag":53,"props":244,"children":246},{"className":245},[],[247],{"type":45,"value":248},"__userpurge",{"type":45,"value":134},{"type":40,"tag":53,"props":251,"children":253},{"className":252},[],[254],{"type":45,"value":255},"__spoils",{"type":45,"value":257},") or references newly imported types; declare missing support types before dependent prototypes.",{"type":40,"tag":110,"props":259,"children":260},{},[261,263,269],{"type":45,"value":262},"Before importing large headers, validate with ",{"type":40,"tag":53,"props":264,"children":266},{"className":265},[],[267],{"type":45,"value":268},"type check --decl-file ...",{"type":45,"value":186},{"type":40,"tag":110,"props":271,"children":272},{},[273,275,281,283,289,291,297,298,304,306,312],{"type":45,"value":274},"After type or prototype mutations, run ",{"type":40,"tag":53,"props":276,"children":278},{"className":277},[],[279],{"type":45,"value":280},"misc reanalyze",{"type":45,"value":282},", then reread pseudocode or locals before rename-heavy cleanup. Calibrate local renames from fresh ",{"type":40,"tag":53,"props":284,"children":286},{"className":285},[],[287],{"type":45,"value":288},"function locals list --json",{"type":45,"value":290}," output using ",{"type":40,"tag":53,"props":292,"children":294},{"className":293},[],[295],{"type":45,"value":296},"--local-id",{"type":45,"value":162},{"type":40,"tag":53,"props":299,"children":301},{"className":300},[],[302],{"type":45,"value":303},"--index",{"type":45,"value":305},"; see ",{"type":40,"tag":53,"props":307,"children":309},{"className":308},[],[310],{"type":45,"value":311},"idac docs workflows",{"type":45,"value":313}," for selector calibration.",{"type":40,"tag":110,"props":315,"children":316},{},[317,319,325],{"type":45,"value":318},"Before executing a mutation batch, run ",{"type":40,"tag":53,"props":320,"children":322},{"className":321},[],[323],{"type":45,"value":324},"batch \u003Cbatch.idac> --lint --out \u003Clint.json>",{"type":45,"value":326}," and fix reported issues.",{"type":40,"tag":110,"props":328,"children":329},{},[330,332,338,340,346,348,354],{"type":45,"value":331},"Context selection: omit ",{"type":40,"tag":53,"props":333,"children":335},{"className":334},[],[336],{"type":45,"value":337},"-c",{"type":45,"value":339}," for one live GUI session, use ",{"type":40,"tag":53,"props":341,"children":343},{"className":342},[],[344],{"type":45,"value":345},"-c pid:\u003Cpid>",{"type":45,"value":347}," for multiple GUI sessions, and use ",{"type":40,"tag":53,"props":349,"children":351},{"className":350},[],[352],{"type":45,"value":353},"-c \"db:\u002Fpath\"",{"type":45,"value":355}," for headless work.",{"type":40,"tag":110,"props":357,"children":358},{},[359],{"type":45,"value":360},"When working in an idac workspace, keep audit notes append-only and factual. Distinguish proven facts from inferred names, types, and semantics.",{"type":40,"tag":47,"props":362,"children":363},{},[364,366,372,374,380,382,388],{"type":45,"value":365},"When this guide is installed as a skill, the reference files sit alongside it; otherwise use ",{"type":40,"tag":53,"props":367,"children":369},{"className":368},[],[370],{"type":45,"value":371},"idac docs TOPIC",{"type":45,"value":373}," for the same material. For CLI syntax, prefer targeted help such as ",{"type":40,"tag":53,"props":375,"children":377},{"className":376},[],[378],{"type":45,"value":379},"idac type class --help",{"type":45,"value":381},"; use ",{"type":40,"tag":53,"props":383,"children":385},{"className":384},[],[386],{"type":45,"value":387},"idac --full-help",{"type":45,"value":389}," only when the command surface itself is unclear.",{"type":40,"tag":99,"props":391,"children":393},{"id":392},"when-not-to-use",[394],{"type":45,"value":395},"When not to use",{"type":40,"tag":106,"props":397,"children":398},{},[399,404,409,421],{"type":40,"tag":110,"props":400,"children":401},{},[402],{"type":45,"value":403},"The task is not IDA-backed and the user wants standalone RE tooling.",{"type":40,"tag":110,"props":405,"children":406},{},[407],{"type":45,"value":408},"The task is source-level debugging or runtime inspection; use a debugger directly.",{"type":40,"tag":110,"props":410,"children":411},{},[412,414,419],{"type":45,"value":413},"A first-class ",{"type":40,"tag":53,"props":415,"children":417},{"className":416},[],[418],{"type":45,"value":4},{"type":45,"value":420}," command already covers the task; do not start with raw IDAPython.",{"type":40,"tag":110,"props":422,"children":423},{},[424],{"type":45,"value":425},"The task is static analysis, linting, or vulnerability scanning outside IDA-driven reverse-engineering work.",{"type":40,"tag":99,"props":427,"children":429},{"id":428},"choose-the-path",[430],{"type":45,"value":431},"Choose the path",{"type":40,"tag":433,"props":434,"children":438},"pre",{"className":435,"code":437,"language":45},[436],"language-text","What is the task?\n│\n├─ Read-only inspection (decompile, list, xrefs, strings, ctree, microcode)\n│   └─ Run `idac docs cli`\n│\n├─ Mutation (rename, retype, prototype, type declare)\n│   └─ Run `idac docs workflows`\n│\n├─ C++ class or vtable recovery\n│   └─ Run `idac docs class-recovery` and `idac docs ida-cpp-type-details`\n│\n├─ Context\u002Ftarget selection, backend state, or bridge trouble\n│   └─ Run `idac docs targets` or `idac docs troubleshooting`\n│\n└─ No first-class command covers the task\n    └─ Use `idac py exec` with a small explicit script\n",[439],{"type":40,"tag":53,"props":440,"children":442},{"__ignoreMap":441},"",[443],{"type":45,"value":437},{"type":40,"tag":99,"props":445,"children":447},{"id":446},"first-commands",[448],{"type":45,"value":449},"First commands",{"type":40,"tag":47,"props":451,"children":452},{},[453],{"type":45,"value":454},"Use only the commands that match the current target state:",{"type":40,"tag":433,"props":456,"children":460},{"className":457,"code":458,"language":459,"meta":441,"style":441},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# always: discover live GUI and headless targets\nidac targets list --json\n# headless binary import\nidac database open \"\u002Fpath\u002Fto\u002Fbinary\" --json\n# headless database or imported binary context\nidac database show -c \"db:\u002Fpath\u002Fto\u002Fbinary\" --json\n# single live GUI session: omit -c\nidac function list \"init|open|close\" --demangle --regex -i --json --out \u002Ftmp\u002Ffunctions.json\n# one of several live GUI sessions: select the pid from targets list\nidac decompile \"sub_08041337\" -c \"pid:1234\" -o \u002Ftmp\u002Fsub_08041337.c\n# single live GUI session: omit -c\nidac decompile \"sub_08041337\" -o \u002Ftmp\u002Fsub_08041337.c\n# current context\nidac xrefs \"sub_08041337\" --json\nidac disasm --start \"0x100000460\" --end \"0x1000004a0\"\n","bash",[461],{"type":40,"tag":53,"props":462,"children":463},{"__ignoreMap":441},[464,476,501,509,547,556,595,604,664,673,726,734,766,775,804],{"type":40,"tag":465,"props":466,"children":469},"span",{"class":467,"line":468},"line",1,[470],{"type":40,"tag":465,"props":471,"children":473},{"style":472},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[474],{"type":45,"value":475},"# always: discover live GUI and headless targets\n",{"type":40,"tag":465,"props":477,"children":479},{"class":467,"line":478},2,[480,485,491,496],{"type":40,"tag":465,"props":481,"children":483},{"style":482},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[484],{"type":45,"value":4},{"type":40,"tag":465,"props":486,"children":488},{"style":487},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[489],{"type":45,"value":490}," targets",{"type":40,"tag":465,"props":492,"children":493},{"style":487},[494],{"type":45,"value":495}," list",{"type":40,"tag":465,"props":497,"children":498},{"style":487},[499],{"type":45,"value":500}," --json\n",{"type":40,"tag":465,"props":502,"children":503},{"class":467,"line":27},[504],{"type":40,"tag":465,"props":505,"children":506},{"style":472},[507],{"type":45,"value":508},"# headless binary import\n",{"type":40,"tag":465,"props":510,"children":512},{"class":467,"line":511},4,[513,517,522,527,533,538,543],{"type":40,"tag":465,"props":514,"children":515},{"style":482},[516],{"type":45,"value":4},{"type":40,"tag":465,"props":518,"children":519},{"style":487},[520],{"type":45,"value":521}," database",{"type":40,"tag":465,"props":523,"children":524},{"style":487},[525],{"type":45,"value":526}," open",{"type":40,"tag":465,"props":528,"children":530},{"style":529},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[531],{"type":45,"value":532}," \"",{"type":40,"tag":465,"props":534,"children":535},{"style":487},[536],{"type":45,"value":537},"\u002Fpath\u002Fto\u002Fbinary",{"type":40,"tag":465,"props":539,"children":540},{"style":529},[541],{"type":45,"value":542},"\"",{"type":40,"tag":465,"props":544,"children":545},{"style":487},[546],{"type":45,"value":500},{"type":40,"tag":465,"props":548,"children":550},{"class":467,"line":549},5,[551],{"type":40,"tag":465,"props":552,"children":553},{"style":472},[554],{"type":45,"value":555},"# headless database or imported binary context\n",{"type":40,"tag":465,"props":557,"children":559},{"class":467,"line":558},6,[560,564,568,573,578,582,587,591],{"type":40,"tag":465,"props":561,"children":562},{"style":482},[563],{"type":45,"value":4},{"type":40,"tag":465,"props":565,"children":566},{"style":487},[567],{"type":45,"value":521},{"type":40,"tag":465,"props":569,"children":570},{"style":487},[571],{"type":45,"value":572}," show",{"type":40,"tag":465,"props":574,"children":575},{"style":487},[576],{"type":45,"value":577}," -c",{"type":40,"tag":465,"props":579,"children":580},{"style":529},[581],{"type":45,"value":532},{"type":40,"tag":465,"props":583,"children":584},{"style":487},[585],{"type":45,"value":586},"db:\u002Fpath\u002Fto\u002Fbinary",{"type":40,"tag":465,"props":588,"children":589},{"style":529},[590],{"type":45,"value":542},{"type":40,"tag":465,"props":592,"children":593},{"style":487},[594],{"type":45,"value":500},{"type":40,"tag":465,"props":596,"children":598},{"class":467,"line":597},7,[599],{"type":40,"tag":465,"props":600,"children":601},{"style":472},[602],{"type":45,"value":603},"# single live GUI session: omit -c\n",{"type":40,"tag":465,"props":605,"children":607},{"class":467,"line":606},8,[608,612,617,621,625,630,634,639,644,649,654,659],{"type":40,"tag":465,"props":609,"children":610},{"style":482},[611],{"type":45,"value":4},{"type":40,"tag":465,"props":613,"children":614},{"style":487},[615],{"type":45,"value":616}," function",{"type":40,"tag":465,"props":618,"children":619},{"style":487},[620],{"type":45,"value":495},{"type":40,"tag":465,"props":622,"children":623},{"style":529},[624],{"type":45,"value":532},{"type":40,"tag":465,"props":626,"children":627},{"style":487},[628],{"type":45,"value":629},"init|open|close",{"type":40,"tag":465,"props":631,"children":632},{"style":529},[633],{"type":45,"value":542},{"type":40,"tag":465,"props":635,"children":636},{"style":487},[637],{"type":45,"value":638}," --demangle",{"type":40,"tag":465,"props":640,"children":641},{"style":487},[642],{"type":45,"value":643}," --regex",{"type":40,"tag":465,"props":645,"children":646},{"style":487},[647],{"type":45,"value":648}," -i",{"type":40,"tag":465,"props":650,"children":651},{"style":487},[652],{"type":45,"value":653}," --json",{"type":40,"tag":465,"props":655,"children":656},{"style":487},[657],{"type":45,"value":658}," --out",{"type":40,"tag":465,"props":660,"children":661},{"style":487},[662],{"type":45,"value":663}," \u002Ftmp\u002Ffunctions.json\n",{"type":40,"tag":465,"props":665,"children":667},{"class":467,"line":666},9,[668],{"type":40,"tag":465,"props":669,"children":670},{"style":472},[671],{"type":45,"value":672},"# one of several live GUI sessions: select the pid from targets list\n",{"type":40,"tag":465,"props":674,"children":676},{"class":467,"line":675},10,[677,681,686,690,695,699,703,707,712,716,721],{"type":40,"tag":465,"props":678,"children":679},{"style":482},[680],{"type":45,"value":4},{"type":40,"tag":465,"props":682,"children":683},{"style":487},[684],{"type":45,"value":685}," decompile",{"type":40,"tag":465,"props":687,"children":688},{"style":529},[689],{"type":45,"value":532},{"type":40,"tag":465,"props":691,"children":692},{"style":487},[693],{"type":45,"value":694},"sub_08041337",{"type":40,"tag":465,"props":696,"children":697},{"style":529},[698],{"type":45,"value":542},{"type":40,"tag":465,"props":700,"children":701},{"style":487},[702],{"type":45,"value":577},{"type":40,"tag":465,"props":704,"children":705},{"style":529},[706],{"type":45,"value":532},{"type":40,"tag":465,"props":708,"children":709},{"style":487},[710],{"type":45,"value":711},"pid:1234",{"type":40,"tag":465,"props":713,"children":714},{"style":529},[715],{"type":45,"value":542},{"type":40,"tag":465,"props":717,"children":718},{"style":487},[719],{"type":45,"value":720}," -o",{"type":40,"tag":465,"props":722,"children":723},{"style":487},[724],{"type":45,"value":725}," \u002Ftmp\u002Fsub_08041337.c\n",{"type":40,"tag":465,"props":727,"children":729},{"class":467,"line":728},11,[730],{"type":40,"tag":465,"props":731,"children":732},{"style":472},[733],{"type":45,"value":603},{"type":40,"tag":465,"props":735,"children":737},{"class":467,"line":736},12,[738,742,746,750,754,758,762],{"type":40,"tag":465,"props":739,"children":740},{"style":482},[741],{"type":45,"value":4},{"type":40,"tag":465,"props":743,"children":744},{"style":487},[745],{"type":45,"value":685},{"type":40,"tag":465,"props":747,"children":748},{"style":529},[749],{"type":45,"value":532},{"type":40,"tag":465,"props":751,"children":752},{"style":487},[753],{"type":45,"value":694},{"type":40,"tag":465,"props":755,"children":756},{"style":529},[757],{"type":45,"value":542},{"type":40,"tag":465,"props":759,"children":760},{"style":487},[761],{"type":45,"value":720},{"type":40,"tag":465,"props":763,"children":764},{"style":487},[765],{"type":45,"value":725},{"type":40,"tag":465,"props":767,"children":769},{"class":467,"line":768},13,[770],{"type":40,"tag":465,"props":771,"children":772},{"style":472},[773],{"type":45,"value":774},"# current context\n",{"type":40,"tag":465,"props":776,"children":778},{"class":467,"line":777},14,[779,783,788,792,796,800],{"type":40,"tag":465,"props":780,"children":781},{"style":482},[782],{"type":45,"value":4},{"type":40,"tag":465,"props":784,"children":785},{"style":487},[786],{"type":45,"value":787}," xrefs",{"type":40,"tag":465,"props":789,"children":790},{"style":529},[791],{"type":45,"value":532},{"type":40,"tag":465,"props":793,"children":794},{"style":487},[795],{"type":45,"value":694},{"type":40,"tag":465,"props":797,"children":798},{"style":529},[799],{"type":45,"value":542},{"type":40,"tag":465,"props":801,"children":802},{"style":487},[803],{"type":45,"value":500},{"type":40,"tag":465,"props":805,"children":807},{"class":467,"line":806},15,[808,812,817,822,826,831,835,840,844,849],{"type":40,"tag":465,"props":809,"children":810},{"style":482},[811],{"type":45,"value":4},{"type":40,"tag":465,"props":813,"children":814},{"style":487},[815],{"type":45,"value":816}," disasm",{"type":40,"tag":465,"props":818,"children":819},{"style":487},[820],{"type":45,"value":821}," --start",{"type":40,"tag":465,"props":823,"children":824},{"style":529},[825],{"type":45,"value":532},{"type":40,"tag":465,"props":827,"children":828},{"style":487},[829],{"type":45,"value":830},"0x100000460",{"type":40,"tag":465,"props":832,"children":833},{"style":529},[834],{"type":45,"value":542},{"type":40,"tag":465,"props":836,"children":837},{"style":487},[838],{"type":45,"value":839}," --end",{"type":40,"tag":465,"props":841,"children":842},{"style":529},[843],{"type":45,"value":532},{"type":40,"tag":465,"props":845,"children":846},{"style":487},[847],{"type":45,"value":848},"0x1000004a0",{"type":40,"tag":465,"props":850,"children":851},{"style":529},[852],{"type":45,"value":853},"\"\n",{"type":40,"tag":99,"props":855,"children":857},{"id":856},"mutation-outline",[858],{"type":45,"value":859},"Mutation outline",{"type":40,"tag":47,"props":861,"children":862},{},[863,864,869,871,877],{"type":45,"value":51},{"type":40,"tag":53,"props":865,"children":867},{"className":866},[],[868],{"type":45,"value":311},{"type":45,"value":870}," (",{"type":40,"tag":53,"props":872,"children":874},{"className":873},[],[875],{"type":45,"value":876},"workflows.md",{"type":45,"value":878},") for exact syntax.",{"type":40,"tag":880,"props":881,"children":882},"ol",{},[883,888,893,898,903,915,920],{"type":40,"tag":110,"props":884,"children":885},{},[886],{"type":45,"value":887},"Discovery and read-only audit.",{"type":40,"tag":110,"props":889,"children":890},{},[891],{"type":45,"value":892},"Preview each persistent mutation.",{"type":40,"tag":110,"props":894,"children":895},{},[896],{"type":45,"value":897},"Lint mutation batches before running them.",{"type":40,"tag":110,"props":899,"children":900},{},[901],{"type":45,"value":902},"Commit the mutation.",{"type":40,"tag":110,"props":904,"children":905},{},[906,908,913],{"type":45,"value":907},"Run ",{"type":40,"tag":53,"props":909,"children":911},{"className":910},[],[912],{"type":45,"value":280},{"type":45,"value":914}," after type or prototype changes.",{"type":40,"tag":110,"props":916,"children":917},{},[918],{"type":45,"value":919},"Reread pseudocode or locals; calibrate local selectors from fresh JSON.",{"type":40,"tag":110,"props":921,"children":922},{},[923,925,931],{"type":45,"value":924},"Verify final readback and, when working in a workspace, record the pass in the workspace audit log (",{"type":40,"tag":53,"props":926,"children":928},{"className":927},[],[929],{"type":45,"value":930},"audit\u002F\u003Ctarget>-recovery.md",{"type":45,"value":932},") if one exists.",{"type":40,"tag":47,"props":934,"children":935},{},[936,938,944,946,952,954,960,962,968],{"type":45,"value":937},"For headless ",{"type":40,"tag":53,"props":939,"children":941},{"className":940},[],[942],{"type":45,"value":943},"db:",{"type":45,"value":945}," work, checkpoint with ",{"type":40,"tag":53,"props":947,"children":949},{"className":948},[],[950],{"type":45,"value":951},"database save",{"type":45,"value":953},"; ",{"type":40,"tag":53,"props":955,"children":957},{"className":956},[],[958],{"type":45,"value":959},"database close",{"type":45,"value":961}," saves by default, and ",{"type":40,"tag":53,"props":963,"children":965},{"className":964},[],[966],{"type":45,"value":967},"database close --discard",{"type":45,"value":969}," abandons pending changes. Live GUI edits remain in the IDA session.",{"type":40,"tag":99,"props":971,"children":973},{"id":972},"class-recovery-outline",[974],{"type":45,"value":975},"Class recovery outline",{"type":40,"tag":47,"props":977,"children":978},{},[979,980,986,987,993,995,1001,1002,1008],{"type":45,"value":51},{"type":40,"tag":53,"props":981,"children":983},{"className":982},[],[984],{"type":45,"value":985},"idac docs class-recovery",{"type":45,"value":870},{"type":40,"tag":53,"props":988,"children":990},{"className":989},[],[991],{"type":45,"value":992},"class-recovery.md",{"type":45,"value":994},") for the full workflow and ",{"type":40,"tag":53,"props":996,"children":998},{"className":997},[],[999],{"type":45,"value":1000},"idac docs ida-cpp-type-details",{"type":45,"value":870},{"type":40,"tag":53,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":45,"value":1007},"ida-cpp-type-details.md",{"type":45,"value":1009},") before importing C++ class or vtable declarations.",{"type":40,"tag":99,"props":1011,"children":1013},{"id":1012},"python-escape-hatch",[1014],{"type":45,"value":1015},"Python escape hatch",{"type":40,"tag":47,"props":1017,"children":1018},{},[1019,1020,1026],{"type":45,"value":51},{"type":40,"tag":53,"props":1021,"children":1023},{"className":1022},[],[1024],{"type":45,"value":1025},"py exec",{"type":45,"value":1027}," only when no first-class command covers the task cleanly:",{"type":40,"tag":433,"props":1029,"children":1031},{"className":457,"code":1030,"language":459,"meta":441,"style":441},"idac py exec --code \"print(hex(idaapi.get_imagebase())); result = {'entry': hex(idc.get_inf_attr(idc.INF_START_EA))}\"\n",[1032],{"type":40,"tag":53,"props":1033,"children":1034},{"__ignoreMap":441},[1035],{"type":40,"tag":465,"props":1036,"children":1037},{"class":467,"line":468},[1038,1042,1047,1052,1057,1061,1066],{"type":40,"tag":465,"props":1039,"children":1040},{"style":482},[1041],{"type":45,"value":4},{"type":40,"tag":465,"props":1043,"children":1044},{"style":487},[1045],{"type":45,"value":1046}," py",{"type":40,"tag":465,"props":1048,"children":1049},{"style":487},[1050],{"type":45,"value":1051}," exec",{"type":40,"tag":465,"props":1053,"children":1054},{"style":487},[1055],{"type":45,"value":1056}," --code",{"type":40,"tag":465,"props":1058,"children":1059},{"style":529},[1060],{"type":45,"value":532},{"type":40,"tag":465,"props":1062,"children":1063},{"style":487},[1064],{"type":45,"value":1065},"print(hex(idaapi.get_imagebase())); result = {'entry': hex(idc.get_inf_attr(idc.INF_START_EA))}",{"type":40,"tag":465,"props":1067,"children":1068},{"style":529},[1069],{"type":45,"value":853},{"type":40,"tag":47,"props":1071,"children":1072},{},[1073,1075,1081,1082,1088,1089,1095,1097,1102,1104,1110,1112,1118,1120,1126,1128,1133,1135,1141,1143,1148,1150,1156,1157,1163,1164,1170],{"type":45,"value":1074},"Supported modes: ",{"type":40,"tag":53,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":45,"value":1080},"--code",{"type":45,"value":134},{"type":40,"tag":53,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":45,"value":1087},"--stdin",{"type":45,"value":134},{"type":40,"tag":53,"props":1090,"children":1092},{"className":1091},[],[1093],{"type":45,"value":1094},"--script",{"type":45,"value":1096},". ",{"type":40,"tag":53,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":45,"value":1094},{"type":45,"value":1103}," preserves IDAPython script semantics such as ",{"type":40,"tag":53,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":45,"value":1109},"__file__",{"type":45,"value":1111},", script-directory imports, and ",{"type":40,"tag":53,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":45,"value":1117},"sys.argv",{"type":45,"value":1119}," when IDA exposes that helper. Add ",{"type":40,"tag":53,"props":1121,"children":1123},{"className":1122},[],[1124],{"type":45,"value":1125},"--persist",{"type":45,"value":1127}," only when later ",{"type":40,"tag":53,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":45,"value":1025},{"type":45,"value":1134}," calls in the same session must reuse Python globals.\nThe execution scope includes the core ",{"type":40,"tag":53,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":45,"value":1140},"ida*",{"type":45,"value":1142}," modules that ",{"type":40,"tag":53,"props":1144,"children":1146},{"className":1145},[],[1147],{"type":45,"value":4},{"type":45,"value":1149}," imports itself, plus ",{"type":40,"tag":53,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":45,"value":1155},"idautils",{"type":45,"value":134},{"type":40,"tag":53,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":45,"value":1162},"idc",{"type":45,"value":142},{"type":40,"tag":53,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":45,"value":1169},"result",{"type":45,"value":186},{"type":40,"tag":99,"props":1172,"children":1174},{"id":1173},"reference-index",[1175],{"type":45,"value":1176},"Reference index",{"type":40,"tag":1178,"props":1179,"children":1180},"table",{},[1181,1211],{"type":40,"tag":1182,"props":1183,"children":1184},"thead",{},[1185],{"type":40,"tag":1186,"props":1187,"children":1188},"tr",{},[1189,1195,1206],{"type":40,"tag":1190,"props":1191,"children":1192},"th",{},[1193],{"type":45,"value":1194},"File",{"type":40,"tag":1190,"props":1196,"children":1197},{},[1198,1204],{"type":40,"tag":53,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":45,"value":1203},"idac docs",{"type":45,"value":1205}," topic",{"type":40,"tag":1190,"props":1207,"children":1208},{},[1209],{"type":45,"value":1210},"When to read",{"type":40,"tag":1212,"props":1213,"children":1214},"tbody",{},[1215,1242,1276,1302,1328,1369,1395,1421,1447],{"type":40,"tag":1186,"props":1216,"children":1217},{},[1218,1228,1237],{"type":40,"tag":1219,"props":1220,"children":1221},"td",{},[1222],{"type":40,"tag":53,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":45,"value":1227},"references\u002Fcli.md",{"type":40,"tag":1219,"props":1229,"children":1230},{},[1231],{"type":40,"tag":53,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":45,"value":1236},"cli",{"type":40,"tag":1219,"props":1238,"children":1239},{},[1240],{"type":45,"value":1241},"Command grammar, common reads, preview, batch, output notes",{"type":40,"tag":1186,"props":1243,"children":1244},{},[1245,1254,1263],{"type":40,"tag":1219,"props":1246,"children":1247},{},[1248],{"type":40,"tag":53,"props":1249,"children":1251},{"className":1250},[],[1252],{"type":45,"value":1253},"references\u002Ftargets-and-backends.md",{"type":40,"tag":1219,"props":1255,"children":1256},{},[1257],{"type":40,"tag":53,"props":1258,"children":1260},{"className":1259},[],[1261],{"type":45,"value":1262},"targets",{"type":40,"tag":1219,"props":1264,"children":1265},{},[1266,1268,1274],{"type":45,"value":1267},"Context selection, GUI vs ",{"type":40,"tag":53,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":45,"value":1273},"idalib",{"type":45,"value":1275},", opening binaries, target discovery",{"type":40,"tag":1186,"props":1277,"children":1278},{},[1279,1288,1297],{"type":40,"tag":1219,"props":1280,"children":1281},{},[1282],{"type":40,"tag":53,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":45,"value":1287},"references\u002Fworkflows.md",{"type":40,"tag":1219,"props":1289,"children":1290},{},[1291],{"type":40,"tag":53,"props":1292,"children":1294},{"className":1293},[],[1295],{"type":45,"value":1296},"workflows",{"type":40,"tag":1219,"props":1298,"children":1299},{},[1300],{"type":45,"value":1301},"Safe mutation loop, batch, selector calibration, post-mutation readback",{"type":40,"tag":1186,"props":1303,"children":1304},{},[1305,1314,1323],{"type":40,"tag":1219,"props":1306,"children":1307},{},[1308],{"type":40,"tag":53,"props":1309,"children":1311},{"className":1310},[],[1312],{"type":45,"value":1313},"references\u002Fclass-recovery.md",{"type":40,"tag":1219,"props":1315,"children":1316},{},[1317],{"type":40,"tag":53,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":45,"value":1322},"class-recovery",{"type":40,"tag":1219,"props":1324,"children":1325},{},[1326],{"type":45,"value":1327},"C++ class recovery workflow, naming rules, vtable guidance, verification",{"type":40,"tag":1186,"props":1329,"children":1330},{},[1331,1340,1349],{"type":40,"tag":1219,"props":1332,"children":1333},{},[1334],{"type":40,"tag":53,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":45,"value":1339},"references\u002Fida-cpp-type-details.md",{"type":40,"tag":1219,"props":1341,"children":1342},{},[1343],{"type":40,"tag":53,"props":1344,"children":1346},{"className":1345},[],[1347],{"type":45,"value":1348},"ida-cpp-type-details",{"type":40,"tag":1219,"props":1350,"children":1351},{},[1352,1354,1360,1361,1367],{"type":45,"value":1353},"IDA C++ parser expectations, ",{"type":40,"tag":53,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":45,"value":1359},"__vftable",{"type":45,"value":134},{"type":40,"tag":53,"props":1362,"children":1364},{"className":1363},[],[1365],{"type":45,"value":1366},"*_vtbl",{"type":45,"value":1368},", multiple inheritance",{"type":40,"tag":1186,"props":1370,"children":1371},{},[1372,1381,1390],{"type":40,"tag":1219,"props":1373,"children":1374},{},[1375],{"type":40,"tag":53,"props":1376,"children":1378},{"className":1377},[],[1379],{"type":45,"value":1380},"references\u002Fida-set-types.md",{"type":40,"tag":1219,"props":1382,"children":1383},{},[1384],{"type":40,"tag":53,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":45,"value":1389},"ida-set-types",{"type":40,"tag":1219,"props":1391,"children":1392},{},[1393],{"type":45,"value":1394},"IDA C declaration syntax: calling conventions, usercall locations, attribute and type keywords",{"type":40,"tag":1186,"props":1396,"children":1397},{},[1398,1407,1416],{"type":40,"tag":1219,"props":1399,"children":1400},{},[1401],{"type":40,"tag":53,"props":1402,"children":1404},{"className":1403},[],[1405],{"type":45,"value":1406},"references\u002Fida-advanced-type-annotations.md",{"type":40,"tag":1219,"props":1408,"children":1409},{},[1410],{"type":40,"tag":53,"props":1411,"children":1413},{"className":1412},[],[1414],{"type":45,"value":1415},"ida-advanced-type-annotations",{"type":40,"tag":1219,"props":1417,"children":1418},{},[1419],{"type":45,"value":1420},"Scattered argument locations and other advanced IDA declaration annotations",{"type":40,"tag":1186,"props":1422,"children":1423},{},[1424,1433,1442],{"type":40,"tag":1219,"props":1425,"children":1426},{},[1427],{"type":40,"tag":53,"props":1428,"children":1430},{"className":1429},[],[1431],{"type":45,"value":1432},"references\u002Ftroubleshooting.md",{"type":40,"tag":1219,"props":1434,"children":1435},{},[1436],{"type":40,"tag":53,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":45,"value":1441},"troubleshooting",{"type":40,"tag":1219,"props":1443,"children":1444},{},[1445],{"type":45,"value":1446},"Bridge, backend, mutation, stale-result, or sandbox problems",{"type":40,"tag":1186,"props":1448,"children":1449},{},[1450,1459,1468],{"type":40,"tag":1219,"props":1451,"children":1452},{},[1453],{"type":40,"tag":53,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":45,"value":1458},"references\u002Ftemplates\u002FREADME.md",{"type":40,"tag":1219,"props":1460,"children":1461},{},[1462],{"type":40,"tag":53,"props":1463,"children":1465},{"className":1464},[],[1466],{"type":45,"value":1467},"templates",{"type":40,"tag":1219,"props":1469,"children":1470},{},[1471],{"type":45,"value":1472},"Reusable prototype-pass, rename-pass, checkpoint-note, and locals-jq templates (printed in full)",{"type":40,"tag":1474,"props":1475,"children":1476},"style",{},[1477],{"type":45,"value":1478},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1480,"total":468},[1481],{"slug":4,"name":4,"fn":5,"description":6,"org":1482,"tags":1483,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1484,1485,1486],{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"items":1488,"total":1641},[1489,1508,1518,1536,1551,1562,1574,1584,1597,1608,1619,1630],{"slug":1490,"name":1490,"fn":1491,"description":1492,"org":1493,"tags":1494,"stars":1505,"repoUrl":1506,"updatedAt":1507},"address-sanitizer","detect memory errors during fuzzing","AddressSanitizer detects memory errors during fuzzing. Use when fuzzing C\u002FC++ code to find buffer overflows and use-after-free bugs.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1495,1498,1499,1502],{"name":1496,"slug":1497,"type":16},"C#","c",{"name":21,"slug":22,"type":16},{"name":1500,"slug":1501,"type":16},"Security","security",{"name":1503,"slug":1504,"type":16},"Testing","testing",6139,"https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fskills","2026-07-17T06:05:14.925095",{"slug":1509,"name":1509,"fn":1510,"description":1511,"org":1512,"tags":1513,"stars":1505,"repoUrl":1506,"updatedAt":1517},"aflpp","perform multi-core fuzzing of C\u002FC++ projects","AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C\u002FC++ projects.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1514,1515,1516],{"name":1496,"slug":1497,"type":16},{"name":1500,"slug":1501,"type":16},{"name":1503,"slug":1504,"type":16},"2026-07-17T06:05:12.433192",{"slug":1519,"name":1519,"fn":1520,"description":1521,"org":1522,"tags":1523,"stars":1505,"repoUrl":1506,"updatedAt":1535},"agentic-actions-auditor","audit GitHub Actions for security vulnerabilities","Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI, OpenAI Codex, and GitHub AI Inference. Detects attack vectors where attacker-controlled input reaches AI agents running in CI\u002FCD pipelines, including env var intermediary patterns, direct expression injection, dangerous sandbox configurations, and wildcard user allowlists. Use when reviewing workflow files that invoke AI coding agents, auditing CI\u002FCD pipeline security for prompt injection risks, or evaluating agentic action configurations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1524,1527,1530,1531,1534],{"name":1525,"slug":1526,"type":16},"Agents","agents",{"name":1528,"slug":1529,"type":16},"CI\u002FCD","ci-cd",{"name":18,"slug":19,"type":16},{"name":1532,"slug":1533,"type":16},"GitHub Actions","github-actions",{"name":1500,"slug":1501,"type":16},"2026-07-18T05:47:48.564744",{"slug":1537,"name":1537,"fn":1538,"description":1539,"org":1540,"tags":1541,"stars":1505,"repoUrl":1506,"updatedAt":1550},"algorand-vulnerability-scanner","scan Algorand smart contracts for vulnerabilities","Scans Algorand smart contracts for 11 common vulnerabilities including rekeying attacks, unchecked transaction fees, missing field validations, and access control issues. Use when auditing Algorand projects (TEAL\u002FPyTeal).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1542,1545,1546,1547],{"name":1543,"slug":1544,"type":16},"Audit","audit",{"name":18,"slug":19,"type":16},{"name":1500,"slug":1501,"type":16},{"name":1548,"slug":1549,"type":16},"Smart Contracts","smart-contracts","2026-07-18T05:47:43.989063",{"slug":1552,"name":1552,"fn":1553,"description":1554,"org":1555,"tags":1556,"stars":1505,"repoUrl":1506,"updatedAt":1561},"ask-questions-if-underspecified","clarify requirements before implementation","Clarify requirements before implementing. Use when serious doubts arise.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1557,1558],{"name":14,"slug":15,"type":16},{"name":1559,"slug":1560,"type":16},"Productivity","productivity","2026-07-17T06:05:33.543262",{"slug":1563,"name":1563,"fn":1564,"description":1565,"org":1566,"tags":1567,"stars":1505,"repoUrl":1506,"updatedAt":1573},"atheris","fuzz Python code with Atheris","Atheris is a coverage-guided Python fuzzer based on libFuzzer. Use for fuzzing pure Python code and Python C extensions.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1568,1571,1572],{"name":1569,"slug":1570,"type":16},"Python","python",{"name":1500,"slug":1501,"type":16},{"name":1503,"slug":1504,"type":16},"2026-07-17T06:05:14.575191",{"slug":1575,"name":1575,"fn":1576,"description":1577,"org":1578,"tags":1579,"stars":1505,"repoUrl":1506,"updatedAt":1583},"audit-augmentation","augment code graphs with audit findings","Augments Trailmark code graphs with external audit findings from SARIF static analysis results, weAudit annotation files, and version-gated Trailmark 0.4.x binary-analysis graph exports. Maps findings to graph nodes by file and line overlap, creates severity-based subgraphs, and enables cross-referencing findings with pre-analysis data (blast radius, taint, etc.). Use when projecting SARIF results onto a code graph, overlaying weAudit annotations, importing binary graph findings, cross-referencing Semgrep, CodeQL, or binary-analysis findings with call graph data, or visualizing audit findings in the context of code structure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1580,1581,1582],{"name":1543,"slug":1544,"type":16},{"name":18,"slug":19,"type":16},{"name":1500,"slug":1501,"type":16},"2026-08-01T05:44:54.920542",{"slug":1585,"name":1585,"fn":1586,"description":1587,"org":1588,"tags":1589,"stars":1505,"repoUrl":1506,"updatedAt":1596},"audit-context-building","build architectural context for code analysis","Enables ultra-granular, line-by-line code analysis to build deep architectural context before vulnerability or bug finding.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1590,1593,1594,1595],{"name":1591,"slug":1592,"type":16},"Architecture","architecture",{"name":1543,"slug":1544,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},"2026-07-18T05:47:40.122449",{"slug":1598,"name":1598,"fn":1599,"description":1600,"org":1601,"tags":1602,"stars":1505,"repoUrl":1506,"updatedAt":1607},"audit-prep-assistant","prepare codebases for security audits","Prepares codebases for security review using Trail of Bits' checklist. Helps set review goals, runs static analysis tools, increases test coverage, removes dead code, ensures accessibility, and generates documentation (flowcharts, user stories, inline comments).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1603,1604,1605,1606],{"name":1543,"slug":1544,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":1500,"slug":1501,"type":16},"2026-07-18T05:47:39.210985",{"slug":1609,"name":1609,"fn":1610,"description":1611,"org":1612,"tags":1613,"stars":1505,"repoUrl":1506,"updatedAt":1618},"burpsuite-project-parser","parse Burp Suite project files","Searches and explores Burp Suite project files (.burp) from the command line. Use when searching response headers or bodies with regex patterns, extracting security audit findings, dumping proxy history or site map data, or analyzing HTTP traffic captured in a Burp project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1614,1615,1617],{"name":1543,"slug":1544,"type":16},{"name":1616,"slug":1236,"type":16},"CLI",{"name":1500,"slug":1501,"type":16},"2026-07-17T06:05:33.198077",{"slug":1620,"name":1620,"fn":1621,"description":1622,"org":1623,"tags":1624,"stars":1505,"repoUrl":1506,"updatedAt":1629},"c-review","audit C and C++ code","Performs comprehensive C\u002FC++ security review for memory corruption, integer overflows, race conditions, and platform-specific vulnerabilities. Use when auditing native C\u002FC++ applications, reviewing daemons or services for memory safety, or hunting integer overflow \u002F use-after-free \u002F race conditions in userspace code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1625,1626,1627,1628],{"name":1543,"slug":1544,"type":16},{"name":1496,"slug":1497,"type":16},{"name":18,"slug":19,"type":16},{"name":1500,"slug":1501,"type":16},"2026-07-17T06:05:11.333374",{"slug":1631,"name":1631,"fn":1632,"description":1633,"org":1634,"tags":1635,"stars":1505,"repoUrl":1506,"updatedAt":1640},"cairo-vulnerability-scanner","scan Cairo and StarkNet contracts for vulnerabilities","Scans Cairo\u002FStarkNet smart contracts for 6 critical vulnerabilities including felt252 arithmetic overflow, L1-L2 messaging issues, address conversion problems, and signature replay. Use when auditing StarkNet projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1636,1637,1638,1639],{"name":1543,"slug":1544,"type":16},{"name":18,"slug":19,"type":16},{"name":1500,"slug":1501,"type":16},{"name":1548,"slug":1549,"type":16},"2026-07-18T05:47:42.84568",111]