AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,445 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载本文档围绕binary-diffskill 的 Symbol Migration Prompt Template符号迁移 Prompt 模板展开讲解如何在旧版二进制有完整符号、新版二进制无符号如 PDB 缺失、程序更新的场景下用固定 Prompt 模板 LLM 批量比对反汇编与伪代码程序化输出 YAML 符号映射并批量写回新版 IDB。读完本文你将掌握模板的完整结构与填充规则、5 类符号vcall/call/funcptr/gv/struct_offset的 YAML 输出契约、Python 批量调用与解析脚本骨架、锚点选择策略以及 DeepSeek/GPT/Claude 的多模型成本调度方案。适用场景什么时候该用符号迁移本模板是 binary-diff skill 的配套参考文件references/prompt-template.md专为以下四类有旧版符号 新版无符号的对比场景设计内核/驱动缺 PDB有旧版ntoskrnl.exe的符号新版 PDB 被下架需要用旧版符号推导新版非导出函数地址程序更新后符号迁移曾经逆向过某个程序程序更新后不想重新逆一遍用旧版结果批量迁移保护机制更新旧版有完整逆向结果新版需要快速定位同一函数的新偏移任何有旧版符号 新版无符号的二进制对比场景。在 skill 分工上binary-diff与同仓库的 ida-reverse从零开始逆向、radare2快速侦察有明确边界从零逆向用ida-reverse或radare2有旧版结果、迁移到新版用本 skill两个完全不同的二进制对比则用 BinDiff / Diaphora 等传统工具。相比传统方案LLM 批量比对的核心优势是成本与速度的平衡人工开两个 IDA 窗口对比 200 个函数需要数小时BinDiff 自动匹配快但结构变化大时准确率下降完全交给 Agent 逐个逆向成本约 50-100 元且慢而本方案约 1 元、每函数约 10 秒、准确率高——关键在于LLM 只负责看两段代码找对应关系这一个步骤其余全部程序化。核心原理一条可编程的符号迁移管线旧版函数有符号 新版同一函数无符号 ↓ ↓ 导出反汇编 伪代码 导出反汇编 伪代码 ↓ ↓ └──────── LLM 结构化比对 ────────┘ ↓ 输出 YAML符号映射表 ↓ 程序化解析 → 批量应用到新版 IDB三个关键设计决定了该方案可靠且廉价prompt 是固定模板程序化填充不需要每次手写指令只需替换 5 个变量输入输出格式确定程序化解析LLM 被要求只输出指定结构的 YAML脚本可稳定解析LLM 只做看代码、找对应这一步时间成本和 token 成本极低。数据准备依赖 IDA 的 MCP 自动化接口idapro_*工具详见 ida-mcp-cheatsheet.md旧版用idapro_disasm(addr函数名)与idapro_decompile(addr函数名)导出有符号的反汇编与伪代码新版用同样的工具按锚点地址导出无符号版本。IDA MCP 的启动、开库与保活方式见 LOCAL-SETUP.mdstart.ps1启动 13337 端口 HTTP 服务器、open.ps1打开目标文件并返回session_id。标准比对 Prompt完整模板与逐段解读以下为可直接复制使用的标准 Prompt来自 prompt-template.md。它同时呈现参考函数与待逆向函数两套反汇编 伪代码要求 LLM 收集指定符号在新版函数中的所有引用并以 YAML 输出I have disassembly outputs and procedure code of the same function. This is the function for reference: **Disassembly for Reference** c {disasm_for_reference}Procedure code for Reference{procedure_for_reference}This is the function you need to reverse-engineering:Disassembly to reverse-engineering{disasm_code}Procedure code to reverse-engineering{procedure}What you need to do is to collect all references to {symbol_name_list} in the function you need to reverse-engineering and output those references as YAML.Example:found_vcall: - insn_va: 0x180777700 insn_disasm: call [rax68h] vfunc_offset: 0x68 func_name: ILoopMode_OnLoopActivate found_call: - insn_va: 0x180888800 insn_disasm: call sub_180999900 func_name: CLoopMode_RegisterEventMapInternal found_funcptr: - insn_va: 0x180666600 insn_disasm: lea rdx, sub_15BC910 funcptr_name: CLoopMode_OnClientPollNetworking found_gv: - insn_va: 0x180444400 insn_disasm: mov rcx, cs:qword_180666600 gv_name: g_pNetworkMessages found_struct_offset: - insn_va: 0x1801BA12A insn_disasm: mov rcx, [r1458h] offset: 0x58 size: 8 struct_name: CResourceService member_name: m_pEntitySystemIf nothing found, output an empty YAML. DO NOT output anything other than the desired YAML. DO NOT collect unrelated symbols.模板的核心约束有三条全部写死在 Prompt 尾部 - **无匹配时输出空 YAML**If nothing found, output an empty YAML保证解析端永远能拿到合法结构 - **除目标 YAML 外不输出任何内容**DO NOT output anything other than the desired YAML避免模型夹带解释文字破坏 yaml.safe_load - **不收集无关符号**DO NOT collect unrelated symbols控制输出信噪比。 [SKILL.md](https://link.gitcode.com/i/386c6259de561210e472dd318fd0245f#L100-L142) 中保留了更详尽的示例版本为每条 YAML 条目补充了字段约束注释例如 found_vcall 的 insn_va 必须是带 displacement 偏移的指令Always be the instruction with displacement offsetfound_funcptr 的指令必须真正加载/引用函数指针目标地址found_gv 必须加载/引用全局变量并特别强调**虚函数指针永远归入 found_vcall 而非 found_struct_offset**。生产环境建议直接使用带这些注释的完整版本它能让模型对字段语义的理解更准确。 ## 变量填充说明五个占位符的来源与获取方式 | 变量 | 来源 | 获取方式 | |------|------|---------| | {disasm_for_reference} | 旧版 IDA | idapro_disasm(addr函数名) | | {procedure_for_reference} | 旧版 IDA | idapro_decompile(addr函数名) | | {disasm_code} | 新版 IDA | idapro_disasm(addr对应地址) | | {procedure} | 新版 IDA | idapro_decompile(addr对应地址) | | {symbol_name_list} | 旧版提取 | 从 reference 代码中提取所有非 sub_/loc_ 的符号名 | 两点实操注意一是新旧版本的导出方式有差异——旧版按**函数名**导出有符号新版按**锚点对应的地址**导出无符号二是 {symbol_name_list} 不是手写的而是从旧版参考代码中**程序化提取**所有非自动命名sub_/loc_ 前缀的符号名再用逗号拼接填入模板这正是后续 Python 骨架中 , .join(symbols) 的由来。 ## 批量调用脚本骨架填充、调用、解析、应用 模板的价值在于批量复用。[prompt-template.md](https://link.gitcode.com/i/8883922798890882788c39e80c63c39a) 给出了可直接运行的 Python 骨架核心是两个函数 **migrate_function** —— 单函数迁移读取 prompt-template.txt用 str.format 填充 5 个变量以 temperature: 0确定性输出POST 到 LLM Chat Completions 接口然后做 YAML 块提取 python import yaml import httpx import json from pathlib import Path PROMPT_TEMPLATE open(prompt-template.txt).read() def migrate_function(ref_disasm, ref_procedure, target_disasm, target_procedure, symbols, api_url, api_key, modeldeepseek-chat): prompt PROMPT_TEMPLATE.format( disasm_for_referenceref_disasm, procedure_for_referenceref_procedure, disasm_codetarget_disasm, proceduretarget_procedure, symbol_name_list, .join(symbols) ) resp httpx.post(api_url, json{ model: model, messages: [{role: user, content: prompt}], temperature: 0 }, headers{Authorization: fBearer {api_key}}, timeout60) content resp.json()[choices][0][message][content] # 提取 YAML 块 if yaml in content: yaml_str content.split(yaml)[1].split()[0] elif in content: yaml_str content.split()[1].split()[0] else: yaml_str content return yaml.safe_load(yaml_str)提取逻辑做了三级容错优先取yaml代码块其次取任意代码块最后直接按裸 YAML 解析——即使模型偶尔没有严格按模板输出代码块标记脚本也能兜底。apply_results—— 将 YAML 结果转换为对新版 IDB 的批量操作。它对五类符号分别处理def apply_results(results, ida_session): 将解析后的 YAML 结果应用到 IDA if not results: return renames [] comments [] if found_call in results: for item in results[found_call]: # 从 insn_disasm 中提取 call target # call sub_XXXXXXX → 提取 sub_XXXXXXX 的地址 renames.append({addr: item[insn_va], name: item[func_name], type: call_target}) if found_funcptr in results: for item in results[found_funcptr]: renames.append({addr: item[insn_va], name: item[funcptr_name], type: funcptr_target}) if found_gv in results: for item in results[found_gv]: renames.append({addr: item[insn_va], name: item[gv_name], type: gv}) if found_vcall in results: for item in results[found_vcall]: comments.append({ addr: item[insn_va], comment: fvcall: {item[func_name]} {item[vfunc_offset]} }) if found_struct_offset in results: for item in results[found_struct_offset]: comments.append({ addr: item[insn_va], comment: f{item[struct_name]}.{item[member_name]} {item[offset]} }) return {renames: renames, comments: comments}可以观察到应用动作的精细分工found_call、found_funcptr、found_gv属于可重命名的符号引用生成renames列表而found_vcall虚函数间接调用无法安全重命名指令本身与found_struct_offset结构体偏移属于只能加注释的信息生成comments列表。这与 SKILL.md 中解析后的应用动作一一对应found_call → idapro_rename(addrcall_target, namefunc_name) found_vcall → idapro_set_comments(addrinsn_va, commentvcall: {func_name} {offset}) found_funcptr → idapro_rename(addrfuncptr_target, namefuncptr_name) found_gv → idapro_rename(addrgv_addr, namegv_name) found_struct_offset → idapro_set_comments(addrinsn_va, comment{struct_name}.{member_name})落地时renames可通过 IDA MCP 的idapro_rename(batch{func: [...]})批量执行comments通过idapro_set_comments(items[...])写入两者参数格式参见 ida-mcp-cheatsheet.md 的修改操作一节。注意found_call的 rename 目标是从insn_disasm中解析出的call 目标地址而非指令自身地址found_gv同理重命名的是被引用的全局变量地址。API 配置建议多模型成本调度模板文档给出的推荐配置是一个按函数规模分级的模型路由# 默认用 DeepSeek便宜 default: api_url: https://api.deepseek.com/v1/chat/completions model: deepseek-chat # 超大函数回退到 GPT fallback: api_url: https://api.openai.com/v1/chat/completions model: gpt-4o # 或者用 Claude alternative: api_url: https://api.anthropic.com/v1/messages model: claude-sonnet-4-20250514调度策略与 SKILL.md 的模型选型表一致默认 DeepSeek中小函数、批量处理、成本极低、速度快遇到 context 超限或结果不准时自动升级——超大函数反汇编超过 500 行切 GPT-4o需要更强推理的复杂控制流切 Claude Sonnet极复杂函数才考虑 Claude Opus。批量场景下一次只比对一个函数以避免 context 爆炸中等函数200 行走 deepseek超大函数500 行切 gpt-4o 或 claude。完整工作流从锚点定位到迭代扩散Step 1: 准备数据 - 旧版二进制加载到 IDA有 PDB/符号 - 新版二进制加载到 IDA无符号 - 找到两个版本中相同的锚点函数导出函数、字符串引用等 Step 2: 批量导出 - 从旧版导出锚点函数的反汇编 伪代码含符号名 - 从新版导出同一锚点函数的反汇编 伪代码无符号名 Step 3: LLM 比对 - 用 prompt 模板填充数据 - 调用 LLM API推荐deepseek 量大便宜超大函数切 gpt - 解析返回的 YAML Step 4: 应用结果 - 将 YAML 中的符号映射批量应用到新版 IDB - 用 idapro_rename 或 IDAPython 脚本批量重命名 Step 5: 迭代 - 第一轮迁移的函数成为新的锚点 - 进入这些函数继续对比内部调用 - 重复直到覆盖所有目标函数其中锚点选择决定整个迁移的成败SKILL.md 给出的可靠性排序是锚点类型可靠性说明导出函数最高名字不变地址可能变字符串引用高字符串内容不变引用位置可能变常量/魔数中特征值不变代码模式中函数结构相似但地址全变第 5 步迭代是覆盖面扩展的关键第一轮被成功命名的函数立刻变成下一轮的新锚点可以进入这些函数继续对比它们的内部调用形成扩散式覆盖直到所有目标函数都被命名。输出格式YAML 的 5 类符号引用契约类型含义关键字段found_vcall虚函数调用间接 callvfunc_offset,func_namefound_call直接函数调用insn_va,func_namefound_funcptr函数指针引用insn_va,funcptr_namefound_gv全局变量引用insn_va,gv_namefound_struct_offset结构体偏移引用offset,struct_name,member_name每条记录统一携带insn_va指令虚拟地址与insn_disasm指令反汇编文本前者用于回写定位后者既是模型的判断依据也是人工抽检的凭证。found_vcall额外给出vfunc_offset虚表偏移与func_name推断的虚函数名found_struct_offset额外给出offset、size、struct_name、member_name。典型场景示例场景 1ntoskrnl.exe 缺 PDBSKILL.md已有ntoskrnl.exe 10.0.26100.2000 完整 PDB目标是10.0.26100.2605PDB 被下架需求是定位PspSetCreateProcessNotifyRoutine的新地址。操作路径两个版本都加载到 IDA → 找到两个版本都有的导出函数PsSetCreateProcessNotifyRoutine→ 旧版中它调用了有符号的PspSetCreateProcessNotifyRoutine→ 新版中它调用了无符号的sub_140822108→ LLM 比对后识别出对应关系 → 批量应用重命名。场景 2应用更新后迁移已有target.exe v1.0的完整逆向结果200 函数已命名目标是target.exe v1.1所有符号丢失需求是批量迁移 200 个函数名。操作路径从旧版导出所有已命名函数的反汇编 伪代码 → 在新版中通过导出函数/字符串找到对应锚点 → 批量调用 LLM 比对 → 解析 YAML 批量 rename → 迭代深入。注意事项与边界不要把整个二进制丢给 LLM——一次只比对一个函数避免 context 爆炸锚点必须可靠——锚点本身对错后续全部白费结果需要人工抽检——LLM 不是 100% 准确关键符号要验证每个insn_va/insn_disasm就是抽检凭证缓存中间结果——避免重复调用浪费 token注意 context 限制——超大函数反汇编 1000 行需要拆分或用大 context 模型重编译或混淆会导致比对质量下降——skill 的 Limitations 明确说明版本间存在重度重编译recompilation或混淆obfuscation时diff 质量会退化需要结合 BinDiff、Diaphora、radiff2 等本地 diff 工具交叉验证工具依赖——核心依赖是 IDA Pro商业软件通过ida-reverseskill 管理数据导出与符号应用都经 IDA 完成 PythonPyYAML 解析 YAML 一个 LLM API endpoint无需额外重型工具。小结Symbol Migration Prompt Template 的价值在于把跨版本符号迁移这件传统上靠人肉双窗口对比、或依赖 BinDiff 结构匹配的苦差事压缩成一条固定模板 LLM 比对 程序化解析回写的流水线固定格式保证可编程、五类 YAML 契约保证可解析、多模型路由保证成本可控。对旧版有符号、新版无符号的逆向维护场景它提供了一条低成本、可批量、可迭代的自动化路径后续可结合 ida-reverse 的idapro_*MCP 工具链将数据导出、符号应用与人工抽检闭环集成。赞分享AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,445 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载相关推荐GitHub_Trending/by/bytebotAPI版本迁移工具自动化与手动迁移对比GitHub_Trending/by/bytebotAPI版本迁移工具自动化与手动迁移对比 在现代软件开发中APIApplication Programm人工智能AI 应用AI Agent自主智能体GUI 自动化浏览器控制后端前端Gel 迁移命令gel migration完全指南基于 dbschema 的 Schema 版本管理实战Gel 迁移命令gel migration完全指南基于 dbschema 的 Schema 版本管理实战 本指南以 docs/reference/usin数据库图数据库关系型数据库ent 从自动迁移升级到版本化迁移基于 Atlas 的完整实战指南ent 从自动迁移升级到版本化迁移基于 Atlas 的完整实战指南 导读 本指南以 ent 官方教程 doc/md/versioned/01 intro.md后端ORM代码生成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
C++五子棋AI:极大极小值算法与AlphaBeta剪枝实战 简介:一套基于C实现的五子棋游戏源码,核心采用极大极小值搜索与AlphaBeta剪枝算法,并同时提供前端交互界面与后端服务逻辑,适合计算机专业学生用于课程设计、毕业设计,也可作为C博弈算法项目实战的参考。压缩包共66个文… · 2026/9/23 18:31:35
基于OpenCV的工业缺陷检测:从图像预处理到形态学与特征判定 简介:面向机器视觉缺陷检测场景的完整工程代码包,适合本科、硕士及教研人员开展图像处理与目标检测实验。项目以Python实现为主,包含97个py源文件,并配套大量jpg示例图片、模型权重、C语言扩展模块及标注解析脚本,整体… · 2026/9/23 18:31:29
ChatBI与Agent实战:八家大厂数据平台落地案例解析 简介:《2024 ChatBIAgent实战手册》全册134页,以八大企业实战案例系统展示大模型与智能BI、AI Agent的结合路径,适合数据分析师、AI研发工程师及企业数字化管理者阅读。资源为1个PDF文件,压缩包共9.33MB,文件虽不庞杂&… · 2026/9/23 18:31:23
9款AI写论文哪个好?一个“不务正业”的测评:我让它们帮我跑了一组数据 官网:www.shujiangce.com | 微信 公众号 :书匠策AI
先说一个你可能没意识到的真相。
大多数AI写论文工具,本质上是“文字生成器”。你输入一个题目,它输出一段话。至于这段话里的数据从哪来、图表怎么画、参考文献是不是真的… · 2026/9/23 18:59:45
YOLO训练数据集三格式齐备:VOC/COCO/YOLO互转与可复现训练链路 简介:本资源是面向计算机视觉初学者与YOLO目标检测实践者的高质量泄露目标数据集配套包,解决真实场景下小目标检测模型训练缺乏标注规范、格式兼容与工程化支持的痛点。资源包含5000张真实场景高清图片及完整标注,涵盖VOC(1986个X… · 2026/9/23 18:59:38
代码能跑=论文稳过?软件工程毕设AI隐形BUG,盲审一查一个准[特殊字符] 2026软件工程、计算机软件开发、物联网软件方向毕设盲审迎来最严核查年。和大家固有认知不同:软工毕设从来不是「代码能运行就及格」,导师和盲审专家重点看的是需求分析、架构设计、数据库逻辑、功能模块闭环、技术栈适配、测试用例完整性。
很多软工同… · 2026/9/23 18:59:38
部署中国云计算平台避坑指南:3个致命错误让代码跑不通 部署中国云计算平台避坑指南:3个致命错误让代码跑不通 代码从网上复制下来,本地环境明明装好了,一运行却报错 ModuleNotFoundError 或者 ConnectionRefused… · 2026/9/23 18:59:32
舌头分割数据集实战:从2类标签到U-Net基线,避开医学图像分割的5个坑 简介:本资源面向计算机视觉学习者与图像分割开发者,提供一套完整的舌头分割数据集,适用于语义分割模型训练、医学图像预处理及算法验证等场景。数据图像分辨率统一为640640,原图为jpg格式,mask标签为png格式࿰… · 2026/9/23 18:59:31
3个狠招让btc区块链浏览器性能优化提速10倍 3个狠招让btc区块链浏览器性能优化提速10倍 官方文档翻了三遍还是头大?别慌,我懂这种痛苦。BTC区块链浏览器看着简单,实则是个吞内存的怪兽。很多人卡在 性能优化 上,代码跑起来卡得像PPT。… · 2026/9/23 18:59:25
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29