Token导航 LogoToken导航TokenDH.com
研究检索只读github未标认证来源可访问许可证需确认审计通过

disassemblydisassembly 搜索

Agent Skill

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

总安装

220

周安装

9

GitHub Stars

18

下载量

71
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 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

简介

用于反汇编代码分析、控制流追踪和操作数格式化。

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

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

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

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