Ghidra BSim 教程(一):启动 Ghidra 并启用 BSimSearchPlugin 插件

发布时间:2026/10/27 2:10:19

Ghidra BSim 教程(一):启动 Ghidra 并启用 BSimSearchPlugin 插件 Ghidra BSim 教程一启动 Ghidra 并启用 BSimSearchPlugin 插件【免费下载链接】ghidraGhidra is a software reverse engineering (SRE) framework项目地址: https://gitcode.com/GitHub_Trending/gh/ghidra本文是 Ghidra BSim 教程系列的第一步讲解如何启动 Ghidra、创建非共享项目并打开代码浏览器Code Browser再通过File → Configure对话框启用BSimSearchPlugin插件。读完本篇后你将理解 BSimBehavioral Similarity行为相似性搜索插件在 Ghidra 中的启用机制知道启用成功后会获得哪些菜单与快捷入口并能顺利衔接后续的 BSim 数据库创建与相似函数查询操作。BSim 是什么BSim 用于回答逆向工程中的一类典型问题这个可执行文件静态链接了哪些库当前可执行文件与我分析过的另一个可执行文件共享哪些代码同一可执行文件的版本 1 和版本 2 之间有什么差异这个函数是否来自某个开源库BSim 的基本思路是为二进制中的每个函数生成一个特征向量feature vector。向量由 Ghidra 反编译器生成每个特征表示该函数数据流和/或控制流的一小片。反编译器会对特征向量做归一化处理使不同但功能等价的代码片段往往产生相同的特征而常量值、寄存器名、数据类型等属性被刻意排除在特征之外。向量之间使用余弦相似度cosine similarity比较——由编译器差异、目标架构差异或源代码小改动造成的向量差异通常表现为“接近但不完全相同”。从源码结构看启用教程中勾选的BSimSearchPlugin正是实现上述查询能力的 GUI 插件。其 BSimSearchPlugin.java 的声明为PluginInfo(category BSim, description This plugin allows users to search selected functions against a database of previously analyzed functions and returns a table of similar functions, packageName BsimPluginPackage.NAME, shortDescription Search Bsim database(s) for similar functions, status PluginStatus.RELEASED) public class BSimSearchPlugin extends ProgramPlugin {注意两个关键点它继承自ProgramPlugin按程序生效的插件因此才会出现在File → Configure对话框的插件配置列表中其插件类别为BSim——这与配置对话框中 “BSim entry” 的归类一致。使用 BSim 的三大组件理解启用步骤之前先明确 BSim 的三大组成详见 BSim 教程引言BSim 客户端即一个启用了 BSim 插件的 Ghidra 实例逆向分析在这里进行BSim 数据库存储函数的 BSim 签名特征向量以及每个函数及其所属可执行文件的元数据包括关联 Ghidra 程序的 ghidra:// URL但不存储反汇编或反编译结果Ghidra 项目存储用于填充 BSim 数据库的已分析程序。拿到一条 BSim 匹配后BSim 客户端可通过 ghidra:// URL 从项目中取回程序做并排对比一个 BSim 数据库可以引用多个 Ghidra 项目。支持的数据库后端有三种PostgreSQL随 Ghidra 发行版附带源码、插件与构建脚本从共享项目填充服务端不支持 Windows、Elasticsearch由BSimElasticPlugin扩展提供需安装到已有 Elasticsearch 数据库以及 H2最简单文件级后端、无需安装数据库服务器、全平台支持但不适合大规模或多用户场景可从本地或共享项目填充。H2 是本教程采用的后端因此第一步只需一个本地 Ghidra 项目即可走通全流程。第一步启动 Ghidra 并创建非共享项目按照 启用教程 的原始步骤启动LaunchGhidra为本教程创建一个新的非共享项目non-shared project启动代码浏览器Code Browser。选择非共享本地项目的原因是H2 后端既可以从非共享项目也可以从共享项目填充数据库而本地项目不依赖 Ghidra 服务器是环境要求最低的路径。后续教程中创建与填充 H2 数据库的脚本CreateH2BSimDatabaseScript.java、AddProgramToH2BSimDatabaseScript.java都是在这个本地项目里运行的。第二步通过 File → Configure 启用 BSim 插件在 Code Browser 中执行以下操作打开菜单File → Configure在弹出的程序配置对话框中点击BSim条目旁的Configure链接在随后打开的对话框中确认BSimSearchPlugin复选框处于勾选状态。该对话框是 Ghidra 的按程序工具配置界面列出当前程序可用的插件类别每个类别提供一个Configure链接链接打开的对话框中包含该类别下各个插件的启用/禁用复选框与插件级配置项。BSimSearchPlugin作为ProgramPlugin注册在BSim类别下因此出现在 BSim 条目的配置对话框中未勾选时其提供的 BSim 菜单项在 Code Browser 中不会出现。启用成功后能得到什么勾选BSimSearchPlugin后代码浏览器会获得如下入口由 BSimSearchPlugin.java 的createActions()方法注册BSim 主菜单BSim → Perform Overview...对当前程序的全部非桩函数做一次签名概览分析BSim → Search Functions...打开 BSim 查询对话框将光标所在函数或选中范围内的函数与 BSim 数据库中的函数做相似性比对结果以表格呈现BSim → Manage Servers管理可查询的 BSim 服务器对应不同数据库后端/连接方式。右键快捷菜单Listing 与反编译器窗口中反汇编窗口右键BSim → Search Function(s)/Search Function(s)...反编译器窗口右键BSim → Search Function/Search Function...光标需位于函数名 token 上。其中不带省略号...的快捷入口会直接沿用上一次查询所用的服务器与设置发起搜索带省略号的重开对话框。源码中还有一个值得注意的限制插件内部通过checkBusy()保证同一时间只允许一个 BSim 查询或概览任务重复触发会提示 “Only one BSim query permitted at a time!”见 BSimSearchPlugin.java。此外插件还内置了针对各菜单项的帮助主题如BSimSearchPlugin帮助页见 BSimSearch.html在 Code Browser 中可通过 Help 菜单检索 BSim 相关文档。验证与衔接下一步启用完成后可以简单自检代码浏览器顶部应出现BSim菜单且其下有Perform Overview...、Search Functions...、Manage Servers三个条目若没有请重新检查BSimSearchPlugin复选框是否勾选部分情况下需要关闭并重新打开已打开的程序配置才会生效。启用只是教程的起点BSim 客户端本身不存储任何签名查询前必须先有数据库。接下来的教程步骤是创建并填充一个 H2 后端的 BSim 数据库——运行CreateH2BSimDatabaseScript.java脚本创建数据库导入并分析 Ghidra 发行版自带的GPL/DemanglerGnu/os/linux_x86_64/demangler_gnu_v2_41可执行文件再用AddProgramToH2BSimDatabaseScript.java将其签名写入数据库详见 从 GUI 创建和填充 BSim 数据库之后的章节将演示基本查询、过滤器、结果评估与命令行用法。适用前提小结本教程面向从本地文件如ghidraRun启动的标准 Ghidra 安装H2 后端不需要额外安装数据库服务器是本教程推荐路径PostgreSQL/Elasticsearch 后端有各自的安装要求且服务端/数据库服务对运行平台有限制PostgreSQL 服务端不支持 Windows大型数据库需选用数据库模板Ghidra 提供 medium约 1000 万条向量与 large约 1 亿条向量两种模板模板在建库时决定 LSH 索引的具体参数。【免费下载链接】ghidraGhidra is a software reverse engineering (SRE) framework项目地址: https://gitcode.com/GitHub_Trending/gh/ghidra创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/24 9:04:17

基于协同过滤的Python音乐推荐系统实现与工程落地

很多做 Python 毕业设计的同学,看到“推荐系统”四个字,第一反应是先去找算法公式,第二反应是担心“数学不好能不能做”。实际上,毕设里的推荐系统并没有那么神秘。它最核心的协同过滤思想,翻译成大白话就是一句话&…

2026/10/25 7:44:19

剖析PHP互助理财系统:三级分销、资金流水与安全加固实战

简介:这是一套基于PHP开发的互助理财系统源码,面向中小型互联网创业团队、PHP初中级开发者及金融类Web项目学习者,可用于快速搭建具备资金流转与多级激励机制的在线互助平台。资源包共2001个文件,主体为1459个PHP业务逻辑文件、17…

2026/10/27 2:07:37

Spring Boot集成ShardingSphere实现分库分表实战

简介:本资源是一套基于Spring Boot的多数据源与分库分表实战项目,面向Java后端开发者及数据库架构进阶学习者,聚焦高并发场景下的数据层扩展难题。项目整合Dynamic-Datasource实现多数据源动态路由,采用Sharding-JDBC完成逻辑库表…

2026/10/27 2:07:37

InfluxDB 2.7 与 Node-RED 3.1 连接配置全指南

简介:这是一套专为Node-RED开发者设计的InfluxDB数据交互扩展包,适用于物联网、工业监控与时间序列数据分析等场景,帮助用户在低代码流程中高效完成InfluxDB 1.x、1.8(Flux)及2.0版本的写入与查询操作。资源共18个文件…

2026/10/27 2:07:37

libnids源码深度解析:IP分片与TCP流重组原理

简介:本资源是一份深度注释版的libnids-1.20源码包,面向网络安全开发人员、入侵检测系统(NIDS)研究者及协议分析初学者,聚焦解决源码阅读门槛高、TCP/IP重组逻辑难理解等核心痛点。包内共65个文件,涵盖15个…

2026/10/27 2:07:37

ASP+SQL Server工资系统:三步部署的轻量级薪酬管理方案

简介:这是一套基于ASP与SQL Server构建的企业级工资管理Web系统源码,面向Web开发初学者、ASP技术学习者及中小企业信息化建设人员,解决薪资计算、员工信息维护、部门薪酬统计等典型HR管理场景需求。资源共97个文件,含67个ASP服务端…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑