- 献词
- 致谢
- 前言
- 第一部分 IDA 简介
- 第 1 章 反汇编简介
- 第 2 章 逆向与反汇编工具
- 第 3 章 IDA Pro 背景知识
- 第二部分 IDA 基本用法
- 第 4 章 IDA 入门
- 第 5 章 IDA 数据显示窗口
- 第 6 章 反汇编导航
- 第 7 章 反汇编操作
- 第 8 章 数据类型与数据结构
- 第 9 章 交叉引用与绘图功能
- 第 10 章 IDA 的多种面孔
- 第三部分 IDA 高级应用
- 第 11 章 定制 IDA
- 第 12 章 使用 FLIRT 签名来识别库
- 第 13 章 扩展 IDA 的知识
- 第 14 章 修补二进制文件及其他 IDA 限制
- 第四部分 扩展 IDA 的功能
- 第 15 章 编写 IDA 脚本
- 第 16 章 IDA 软件开发工具包
- 第 17 章 IDA 插件体系结构
- 第 18 章 二进制文件与 IDA 加载器模块
- 第 19 章 IDA 处理器模块
- 第五部分 实际应用
- 第 20 章 编译器变体
- 第 21 章 模糊代码分析
- 第 22 章 漏洞分析
- 第 23 章 实用 IDA 插件
- 第六部分 IDA 调试器
- 第 24 章 IDA 调试器
- 第 25 章 反汇编器/ 调试器集成
- 第 26 章 其他调试功能
- 附录 A 使用 IDA 免费版本 5.0
- 附录 B IDC/SDK 交叉引用
23.3 collabREate
collabREate 插件(如表 23-3 所示)促进分析同一二进制文件的多个用户之间的协作。collabREate 项目的目标是为代表同步客户端的插件组件与 SQL 数据库支持的、具有除简单数据库同步以外的支持功能的强大服务器组件提供自然集成。
表 23-3 collabkEate 插件
名称 | collabREate |
作者 | Chris Eagle 和 Tim Vidas |
发布 | C++源代码和二进制(包括 IDA 免费版本) |
价格 | 免费 |
描述 | 提供同步远程 IDA 会话的协作框架 |
信息 | http://www.idabook.com/collabreate |
从宏观角度看,collabREate 与 IDA Sync 项目1 非常相似。collabREate 插件处理数据库更新,并与一台远程服务器组件通信,从而与其他项目成员同步数据库更新。由于 IDA 是一个单线程应用程序,因而需要某种用于处理异步非阻塞网络通信的机制。在 6.0 之前的 IDA 版本中,异步通信组件派生自 IDA Sync 使用的 Windows 异步套接字技术,但是随着 IDA 6.0 的推出,现在异步通信使用 Qt 套接字类进行处理,因此我们可以在所有支持 IDA 的平台上使用 collabREate 。
1. 参见 http://pedram.redhive.com/code/ida-plugins/ida-sync/ 。
collabREate 采用一种集成的方法,利用 IDA 的进程和 IDB 事件通知机制来捕获用户操作。collabREate 通过“钩住”各种数据库变更通知,将数据库更新无缝传播到 collabREate 服务器。IDA 生成的变更通知的类型和数量随着每个 IDA 版本的发布而不断增长,同时 collabREate 设法为其所构建的 IDA 版本“钩住”尽可能多的有用通知。使用 collabREate 的一个有趣的“副作用”在于,它允许使用截然不同的 IDA 版本(如 5.2 和 6.0)的用户同步他们的活动,即使这些用户无法彼此交换.idb 文件。2 collabREate 体系结构为参与的用户提供真正的发布和订阅功能。用户可以选择将他的更改发布给 collabREate 服务器,或订阅提交给服务器的更改,或者同时发布和订阅。例如,一名有经验的用户可能希望与一组用户共享(发布)他的更改,但阻止(不订阅)其他用户作出的所有更改。用户可以选择他们希望发布和订阅的操作的类别,如字节值更改、名称更改以及添加或删除注释。例如,一名用户可能仅仅希望发布注释,而另一个用户则只想要订阅名称更改和字节修补通知。
2. 通常,早期 IDA 版本无法打开使用较新 IDA 版本创建的.idb 文件。
collabREate 插件最重要的特性之一在于它与 IDA SDK 的高度集成。IDA 通知与特定的数据库操作(而非特定的用户操作)密切相关。当然,如果用户操作触发了 IDA 通知,这会给协作过程造成重大影响。但是,通知也可以通过其他方法触发。脚本和 API 函数调用也可以生成通知消息。因此,修补数据库字节、重命名位置或变量或者插入新注释的一段 IDC 脚本的操作,将发布到 collabREate 服务器,并最终与在同一个项目上工作的其他 IDA 用户共享。
当前,collabREate 的服务器组件在 Java 中运行,并使用 JDBC3 与后端 SQL 数据库通信。该服务器负责用户和项目管理。用户账户通过服务器的一个命令行界面进行管理,而项目则由连接到服务器的用户创建。经过服务器的验证后,用户的 collabREate 插件将向服务器发送用户分析的输入文件的 MD5 散列。这个 MD5 值用于确保多名用户实际上在处理完全相同的输入文件。连接服务器后,用户将说明他希望订阅的更新的类型,这时,服务器将向用户转交自用户上次会话以来它缓存的所有更新。collabREate 的“项目选择”对话框如图 23-2 所示。
3. JDBC 为 Java 数据库互通 API。
图 23-2 collabREate 的“项目选择”对话框
在这个对话框中,用户将看到一个与当前数据库兼容的项目下拉列表。另外,你还可以创建一个新的项目,需要用户输入一段方便其他用户查看的项目说明。
collabREate 服务器能够对现有的项目创建分支,让用户为一个项目创建备用分支,而不致于影响到其他用户。如果你想要对一个数据库进行大量更改(并追踪这些更改),但不希望迫使其他用户进行这些更改,就可以用到这个特性。由于服务器能够处理与单个二进制输入文件有关的多个项目,collabREate 插件和服务器需要采取额外的步骤,以确保用户连接到数据库中的正确项目。
collabREate 服务器并不提供回滚功能,但提供某种形式的“保存点”。用户可以在任何时候拍摄一张快照,然后返回到这个数据库状态。用户可以重新打开二进制文件(新的.idb 文件),并通过这个快照分支一个新的项目。因此,用户可以返回到逆向过程中的一个特定的时间点。collabREate 的分支和快照功能可以通过最初激活该插件所使用的相同热键组合进行访问,得到的对话框如图 23-3 所示。
图 23-3 collabREate 的“选择命令”对话框
collabREate 服务器的最后一个特性,在于它可以限制用户可发布的更新。例如,一名用户仅限于订阅更新,而另一名用户仅仅能够发布注释,第三名用户则可以发布所有类型的更新。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论