发布时间:2026/9/5 23:21:32
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/9/5 23:21:32

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

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

2026/9/5 23:21:32

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

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

2026/9/6 0:06:59

调试记录2026

2026年7月20日 Depth Anything V3生成的点云,效果看上去还可以 在Photoshop中进行高斯模糊(模拟失焦)后再检测,依然可以保持尺相对度: 更大的高斯模糊 在图片中添加纯色块 2026年8月10日 MUJOCO动力学仿真

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/5 23:56:35

基于U-Net的道路场景语义分割实战:从数据增强到类别不平衡优化

简介:本资源是一个面向深度学习初学者与计算机视觉实践者的道路目标语义分割实战项目,聚焦自动驾驶与智能交通场景下的像素级图像理解任务,基于U-Net架构与PyTorch框架实现端到端训练与推理。压缩包共7个文件(5个Python脚本、1个环…

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/5 2:45:13

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/5 2:30:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/5 2:46:50

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…