Token导航 LogoToken导航

Agent Skill · 研究检索

disassembly(disassembly 搜索)

disassembly 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

disassembly 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为只读;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 69,087。

总安装 220周安装 9GitHub Stars 18下载 71核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:disassembly(disassembly 搜索)
来源仓库:https://github.com/allthingsida/idasql-skills
仓库路径:skills/disassembly
安装命令:
npx skills add https://github.com/allthingsida/idasql-skills --skill disassembly
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/allthingsida/idasql-skills --skill disassembly

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于反汇编代码分析、控制流追踪和操作数格式化。适合查找指令级证据、进行调用关系分析或定位代码段边界。使用时需先获取段映射信息,再结合关键词筛选结果,避免误读原始字节。安装前请确认权限范围和维护状态,注意可能触发命令执行或文件读写。disassembly 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/disassembly

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/allthingsida/idasql-skills --skill disassembly;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

disassembly 怎么安装?

在终端执行 npx skills add https://github.com/allthingsida/idasql-skills --skill disassembly。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

disassembly 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

disassembly 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

disassembly 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

disassembly 用的人多吗?

公开数据是累计安装 220 次,近一周安装 9 次,下载 71 次,GitHub 18 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

disassembly 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 只想先试试效果、不希望它改动本地文件的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
disassembly

disassembly 搜索 · 本页

22018只读未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文


Trigger Intents

Use this skill when user asks for:

  • Function/segment/instruction inspection
  • Call-site or control-flow analysis from disassembly
  • Operand formatting and low-level code structure
  • Raw byte/instruction-level evidence

Route to:

  • decompiler for AST/pseudocode semantics
  • xrefs for relationship-heavy caller/callee workflows
  • debugger for patching/breakpoint actions

Do This First (Warm-Start Sequence)

-- 1) Orientation
SELECT * FROM welcome;

-- 2) Segment map
SELECT name, printf('0x%X', start_ea) AS start_ea, printf('0x%X', end_ea) AS end_ea, perm
FROM segments
ORDER BY start_ea;

-- 3) Largest functions (triage anchors)
SELECT name, printf('0x%X', address) AS addr, size
FROM funcs
ORDER BY size DESC
LIMIT 20;

Interpretation guidance:

  • Start from executable segments and largest/highly connected functions.
  • Use func_addr constraints early when querying instruction-heavy surfaces.

Failure and Recovery

  • Slow queries on instructions/heads:

- Add WHERE func_addr = X or tight EA ranges.

  • Missing expected symbol names:

- Pivot to address-based workflows and enrich via names updates later.

  • Ambiguous control-flow behavior:

- Cross-check with disasm_calls and then escalate to decompiler.


Handoff Patterns

  1. disassembly -> xrefs for relation expansion.
  2. disassembly -> decompiler for semantic interpretation.
  3. disassembly -> debugger for patch/breakpoint execution.

Entity Tables

funcs

All detected functions in the binary with prototype information.

ColumnTypeDescription
addressINTFunction start address
nameTEXTFunction name
sizeINTFunction size in bytes
end_eaINTFunction end address
flagsINTFunction flags

Prototype columns (populated when type info available):

ColumnTypeDescription
return_typeTEXTReturn type string (e.g., "int", "void *")
return_is_ptrINT1 if return type is pointer
return_is_intINT1 if return type is exactly int
return_is_integralINT1 if return type is int-like (int, long, DWORD, BOOL)
return_is_voidINT1 if return type is void
arg_countINTNumber of function arguments
calling_convTEXTCalling convention (cdecl, stdcall, fastcall, etc.)
-- 10 largest functions
SELECT name, size FROM funcs ORDER BY size DESC LIMIT 10;

-- Functions starting with "sub_" (auto-named, not analyzed)
SELECT name, printf('0x%X', address) as addr FROM funcs WHERE name LIKE 'sub_%';

-- Functions returning integers with 3+ arguments
SELECT name, return_type, arg_count FROM funcs
WHERE return_is_integral = 1 AND arg_count >= 3;

Write operations:

-- Create a function
INSERT INTO funcs (address) VALUES (0x401000);

-- Rename a function
UPDATE funcs SET name = 'my_func' WHERE address = 0x401000;

-- Delete a function
DELETE FROM funcs WHERE address = 0x401000;

segments

Memory segments. Supports INSERT, UPDATE (name, class, perm), and DELETE.

ColumnTypeRWDescription
start_eaINTRSegment start
end_eaINTRSegment end
nameTEXTRWSegment name (.text,.data, etc.)
classTEXTRWSegment class (CODE, DATA)
permINTRWPermissions (R=4, W=2, X=1)
-- Find executable segments
SELECT name, printf('0x%X', start_ea) as start FROM segments WHERE perm & 1 = 1;

-- Rename a segment
UPDATE segments SET name = '.mytext' WHERE start_ea = 0x401000;

names

All named locations (functions, labels, data). Supports INSERT, UPDATE, and DELETE.

ColumnTypeRWDescription
addressINTRAddress
nameTEXTRWName
-- Create/set a name
INSERT INTO names (address, name) VALUES (0x401000, 'my_symbol');

-- Rename
UPDATE names SET name = 'my_symbol_renamed' WHERE address = 0x401000;

entries

Entry points (exports, program entry, tls callbacks, etc.).

ColumnTypeDescription
ordinalINTExport ordinal
addressINTEntry address
nameTEXTEntry name

Instruction Tables

instructions

instructions is the disassembly table. For scalar disassembly text at a specific EA, use disasm_at(ea[, context]). Use disasm_func() or disasm_range() when you explicitly need a function/range listing. Decoded instructions support DELETE (converts instruction to unexplored bytes) and operand representation updates via operand*_format_spec.

WHERE func_addr = X is the fast path (function-item iterator). Without it, the table scans all code heads.

ColumnTypeDescription
addressINTInstruction address
func_addrINTContaining function
itypeINTInstruction type (architecture-specific)
mnemonicTEXTInstruction mnemonic
sizeINTInstruction size
operand0..operand7TEXTOperand text (0..7)
disasmTEXTFull disassembly line
operand0_class..operand7_classTEXTOperand class: reg, imm, displ, mem,...
operand0_repr_kind..operand7_repr_kindTEXTCurrent representation: plain, enum, stroff
operand0_repr_type_name..operand7_repr_type_nameTEXTEnum name or stroff path
operand0_format_spec..operand7_format_specTEXT (RW)Apply/clear representation for a specific operand
-- Instruction profile of a function (FAST)
SELECT mnemonic, COUNT(*) as count
FROM instructions WHERE func_addr = 0x401330
GROUP BY mnemonic ORDER BY count DESC;

-- Find all call instructions in a function
SELECT address, disasm FROM instructions
WHERE func_addr = 0x401000 AND mnemonic = 'call';

-- Apply enum representation to operand 1
UPDATE instructions
SET operand1_format_spec = 'enum:MY_ENUM'
WHERE address = 0x401020;

-- Clear representation back to plain
UPDATE instructions
SET operand1_format_spec = 'clear'
WHERE address = 0x401020;

Performance: WHERE func_addr = X uses O(function_size) iteration. Without this constraint, it scans the entire database.

disasm_calls

All call instructions with resolved targets.

ColumnTypeDescription
func_addrINTFunction containing the call
eaINTCall instruction address
callee_addrINTTarget address (0 if unknown)
callee_nameTEXTTarget name
-- Functions that call malloc
SELECT DISTINCT func_at(func_addr) as caller
FROM disasm_calls WHERE callee_name LIKE '%malloc%';

blocks

Basic blocks within functions. Use func_ea constraint for performance.

ColumnTypeDescription
func_eaINTContaining function
start_eaINTBlock start
end_eaINTBlock end
sizeINTBlock size
-- Blocks in a specific function (FAST - uses constraint pushdown)
SELECT * FROM blocks WHERE func_ea = 0x401000;

-- Functions with most basic blocks
SELECT func_at(func_ea) as name, COUNT(*) as blocks
FROM blocks GROUP BY func_ea ORDER BY blocks DESC LIMIT 10;

cfg_edges

Control flow graph edges between basic blocks. Always use WHERE func_ea = X (filter_eq pushdown, O(blocks in function)).

ColumnTypeDescription
func_eaINTContaining function
from_blockINTSource block address
to_blockINTTarget block address
edge_typeTEXTnormal (single-successor or fallback label), true/false (generic first/second arms for a two-way branch; labels follow successor order, not taken/fallthrough semantics)
-- Get CFG structure
SELECT * FROM cfg_edges WHERE func_ea = 0x401000;

-- Find branch points (conditional blocks)
SELECT from_block, COUNT(*) as succ_count
FROM cfg_edges WHERE func_ea = 0x401000
GROUP BY from_block HAVING succ_count > 1;

-- Find merge points (blocks with multiple predecessors)
SELECT to_block, COUNT(*) as pred_count
FROM cfg_edges WHERE func_ea = 0x401000
GROUP BY to_block HAVING pred_count > 1;

-- Function complexity ranking: combine CFG, loops, and call metrics
SELECT f.name, f.size,
       (SELECT COUNT(*)
        FROM (
            SELECT ce.from_block
            FROM cfg_edges ce
            WHERE ce.func_ea = f.address
            GROUP BY ce.from_block
            HAVING COUNT(*) > 1
        ) branch_blocks) as branch_sites,
       (SELECT COUNT(*) FROM disasm_loops dl WHERE dl.func_addr = f.address) as loops,
       (SELECT COUNT(*) FROM disasm_calls dc WHERE dc.func_addr = f.address) as calls_made
FROM funcs f
WHERE f.size > 32
ORDER BY branch_sites DESC
LIMIT 20;

function_chunks

Cached table with one row per function chunk. Aggregate by func_addr when you need function-level span or density metrics.

ColumnTypeDescription
func_addrINTFunction address
chunk_startINTChunk start address
chunk_endINTChunk end address
block_countINTNumber of blocks in chunk
total_sizeINTTotal size of chunk
SELECT * FROM function_chunks WHERE func_addr = 0x401000;

SQL Functions -- Disassembly

FunctionDescription
disasm_at(addr)Canonical listing line for containing head (works for code/data)
disasm_at(addr, n)Canonical listing line with +/- n neighboring heads
disasm(addr)Single disassembly line at address
disasm(addr, n)Next N instructions from address (count-based)
disasm_range(start, end)All disassembly lines in address range [start, end)
disasm_func(addr)Full disassembly of function containing address
make_code(addr)Create instruction at address (returns 1/0)
make_code_range(start, end)Create instructions in range, returns created count
mnemonic(addr)Instruction mnemonic only
operand(addr, n)Operand text (n=0-5)

Disassembly Examples

-- Canonical single-EA disassembly (safe for code or data)
SELECT disasm_at(0x401000);

-- Canonical context window (+/- 2 heads)
SELECT disasm_at(0x401000, 2);

-- Full function disassembly (resolves boundaries via get_func)
SELECT disasm_func(address) FROM funcs WHERE name = '_main';

-- Disassemble a specific address range
SELECT disasm_range(0x401000, 0x401100);

-- Sliding window: next 5 instructions from an address
SELECT disasm(0x401000, 5);

SQL Functions -- Names & Functions

Address argument note: addr/ea/func_addr parameters accept integer EAs, numeric strings, and symbol names.

FunctionDescription
name_at(addr)Name at address
func_at(addr)Function name containing address
func_start(addr)Start of containing function
func_end(addr)End of containing function
func_qty()Total function count
func_at_index(n)Function address at index (O(1))

SQL Functions -- Navigation

FunctionDescription
next_head(addr)Next defined item
prev_head(addr)Previous defined item
segment_at(addr)Segment name at address
hex(val)Format as hex string

SQL Functions -- Item Analysis

FunctionDescription
item_type(addr)Item type flags at address
item_size(addr)Item size at address
is_code(addr)Returns 1 if address is code
is_data(addr)Returns 1 if address is data
flags_at(addr)Raw IDA flags at address

SQL Functions -- Instruction Details

FunctionDescription
itype(addr)Instruction type code (processor-specific)
decode_insn(addr)Full instruction info as JSON
operand_type(addr, n)Operand type code (o_void, o_reg, etc.)
operand_value(addr, n)Operand value (register num, immediate, etc.)

SQL Functions -- File Generation

FunctionDescription
gen_listing(path)Generate full-database listing output (LST)

SQL Functions -- Graph Generation

FunctionDescription
gen_cfg_dot(addr)Generate CFG as DOT graph string
gen_cfg_dot_file(addr, path)Write CFG DOT to file
gen_schema_dot()Generate database schema as DOT
-- Get CFG for a function as DOT format
SELECT gen_cfg_dot(0x401000);

Performance Rules

TableArchitectureKey ConstraintNotes
funcsIndex-Basednone neededO(1) per row via getn_func(i) -- always fast
instructionsIteratorfunc_addrFunction-item iterator (fast) vs full code-head scan (slow)
blocksIteratorfunc_eaConstraint pushdown: iterates blocks of one function
cfg_edgesIteratorfunc_eafilter_eq pushdown: O(blocks in function)
disasm_callsGeneratorfunc_addrLazy streaming, respects LIMIT
headsIteratoraddress rangeCan be very large -- always use address range filters
segmentsIndex-Basednone neededSmall table, always fast
namesIteratornone neededIterates IDA's name list

Key rules:

  • funcs is always fast -- no constraint needed.
  • instructions without func_addr scans every code head -- use func_addr for per-function queries.
  • blocks without func_ea iterates all functions' flowcharts -- always constrain.
  • heads is the largest table in most databases. Always filter by address range.

Cost model:

funcs (full scan)            -> O(func_qty()), typically ~1000s, fast
instructions WHERE func_addr -> O(function_size / avg_insn_size)
instructions (no constraint) -> O(total_code_heads), potentially 100K+
blocks WHERE func_ea         -> O(block_count_in_func), fast
cfg_edges WHERE func_ea      -> O(block_count_in_func), fast
disasm_calls WHERE func_addr -> O(instructions_in_func), streaming

Additional Resources

平台分布

Codex

36.13%
按下载量换算26

Claude

28.5%
按下载量换算20

Cursor

21.73%
按下载量换算15

Gemini CLI

9.51%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills