diff options
| author | blasty <blasty@local> | 2026-07-25 00:51:28 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-07-25 00:51:28 +0200 |
| commit | be23d13852f4efd062641957b4dcec10622fc0c6 (patch) | |
| tree | b2f020fca47fc0afb472d317e91e60ba468a514f /docs/PROJECTS.md | |
| parent | split: follow the decomp across functions as the listing cursor crosses bounds (diff) | |
| download | ida-tui-be23d13852f4efd062641957b4dcec10622fc0c6.tar.gz ida-tui-be23d13852f4efd062641957b4dcec10622fc0c6.tar.xz ida-tui-be23d13852f4efd062641957b4dcec10622fc0c6.zip | |
strings: browse every string in the binary and jump to it (IDA's Shift+F12)
ida-pro-mcp exposes no full strings list (only a filtered/capped "interesting"
survey), so this is a new injected tool plus a filterable browser.
* server/patch_server.py: list_strings(offset,count,min_len,refresh) — every
literal from idautils.Strings() as {addr,text,len,type}, paginated, with a
module-level cache keyed by min_len (rebuilding is O(n) and the browser pages
the whole list).
* domain: StrLit dataclass + Program.strings() — pages the full list once and
caches it.
* app: StringsPalette modal (mirrors SymbolPalette) — case-insensitive substring
filter with the match highlighted, addr/len/text columns, ↑↓/Enter/Esc.
Bodies are sanitized to one printable line (\n/\r/\t escaped, non-printables
dropped, long strings clipped) so control chars can't break the layout;
display strings are pre-rendered+pre-lowered once since filtering runs per
keystroke. Enter jumps to the literal in the unified listing via _goto_ea.
Bound to '"' and Shift+F12, plus a "Strings…" command-palette entry.
Verified on echo: 150 strings listed with addr/len/text, filtering 'usage'
narrows to 2 (case-insensitive), Enter lands the listing cursor on the literal.
Pilot `strings` scenario 6/6; full suite 165/2-flake.
Diffstat (limited to 'docs/PROJECTS.md')
0 files changed, 0 insertions, 0 deletions
