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),仅供参考

相关新闻

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

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

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

2026/10/28 18:07:32 阅读更多 →
Superpowers 视觉伴侣认证加固:Bootstrap Key 加载、WebSocket 同源校验与 /files 目录逃逸防护设计解析

Superpowers 视觉伴侣认证加固:Bootstrap Key 加载、WebSocket 同源校验与 /files 目录逃逸防护设计解析

Superpowers 视觉伴侣认证加固:Bootstrap Key 加载、WebSocket 同源校验与 /files 目录逃逸防护设计解析 【免费下载链接】superpowers An agentic skills framework & software development methodology that works. 项目地址: https://gitcode.com/GitHub_T…

2026/10/24 1:25:01 阅读更多 →
spotDL 完全指南:3 步免费把 Spotify 音乐下载到本地

spotDL 完全指南:3 步免费把 Spotify 音乐下载到本地

spotDL 完全指南:3 步免费把 Spotify 音乐下载到本地 【免费下载链接】spotify-downloader Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found). 项目地址: https://gitcode.com/GitHub_Trending/…

2026/10/25 20:58:47 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 16:58:40 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →