Back Orifice XP(简称BOXP)是一款为Microsoft Win32环境设计的网络管理工具,它继承了Back Orifice和Back Orifice 2000的成功,并在此基础上进行了改进。BOXP体积更小、速度更快、完全免费,并且具有极高的可扩展性。这种可扩展性得益于其基于插件架构的设计,使得新功能可以轻松添加,而无需发布全新的二进制文件。
开发者Javier Aroche表示,他的目标是重构BO2K的代码,创建BOXP,修复影响其运行的诸多问题,并添加新特性。目前,BO2K虽然可以工作,但并不完美,需要进行深入的改动以支持真正的插件接口,确保插件能够正确地与系统和彼此之间交互。因此,需要重写现有源代码,创建一个新的接口,允许插件使用框架的所有内部函数和其他插件的函数。
BO2K存在许多概念性问题、错误和限制,其中最大的问题是插件链接(PL)的限制。BO2K 1.1的PL只是BO2K 1.0 PL的扩展,虽然增加了更多成员,但这些增加并没有解决概念性问题,只是给了一种虚假的希望。
BOXP的重构原因
BOXP需要重构的原因包括:
- BO2K无法处理高级技术,如远程线程、进程注入、内存映像压缩/加密、“热插拔”功能更新等。
- PL过于有限。
- 与运行线程的插件工作时存在问题。
- BO2K在运行时无法更新(除非更新所有函数调用或使用其他技术重定向函数到新函数)。
- BO2K不支持多语言。需要重新编译以更改字符串。
- 灵活性确实有限,并非所有BO2K函数/对象可以在不触及内存映像的情况下更新。
- 插件无法访问所有函数。
- BO2K不知道插件是否正在运行线程。
- 客户端和配置工具基于MFC,这使得通过插件进行GUI扩展几乎不可能。
- 插件之间的通信(几乎)是不可能的!
框架(Framework)
框架是服务器、客户端和配置工具的代码基础。这三个应用程序将共享同一个框架,为三个应用程序提供标准的初始化和对象加载。当框架已经初始化后,它会将控制权交给应用程序,以便它开始加载自己的对象并开始真正的执行。
框架的目标是为插件提供一个共同的基础,方便插件访问应用程序的接口。每个应用程序通过向框架添加更多函数和对象来扩展框架。值得注意的是,如果单独运行框架,它将无法执行,应用程序需要维持执行和与用户的交互。
框架应该包含实用函数、访问控制、日志、全局变量和函数。应用程序应该包含用户界面,使用框架处理共同任务(如处理插件)。
插件链接(Plugin Linkage)
新的插件链接将被集成,包括:
- API(指向API的指针)
- 函数(指向函数的指针)
- 全局变量(指针和静态变量)
- 字符串和二进制数据
- 应用程序上下文(函数、变量、字符串等)
通过这种结构,插件可以轻松访问全局对象,但所有数据都是共享的。
框架特性
框架提供了多种特性,包括:
- 字符串:允许替换(支持多语言)、压缩/加密、配置添加/删除、保存/加载配置文件等。
- 线程:维护框架中运行的线程列表、启动、停止、挂起、恢复线程、在关闭时停止所有线程以避免崩溃等。
- 插件:加载/卸载插件、运行一个主线程、共享自定义数据、替换字符串、保持插件列表、更改配置等。
- 函数:处理额外函数的表格、添加/移除额外函数、通过ID字符串查找函数等。
- 加密模块、输入/输出模块、认证模块:添加/移除引擎。
- 日志:重要函数调用生成日志、插件可以生成日志、将日志字符串写入文件或调试器输出、输出文件可配置等。
- 其他:包括基本的Windows查看器、基本的进程查看器、基本的C++实用函数、DLL映像加载器、LZH压缩等。
服务器新特性
服务器新特性包括:
- 注册命令时允许传递自定义数据。
- 直接调用服务器命令,无需创建套接字并连接到服务器上的另一个套接字来执行它们。
- 支持多语言。
- 更好地控制监听套接字和连接套接字。
- 自定义问题命令回复函数。
- 配置存储在.ini文件中,但可以禁用。
配置工具新特性
配置工具新特性包括:
- 支持插件。
- 注册插件命令。
- 不基于MFC,使得扩展易于实现。
- 支持多语言。
- 首选项对话框。
- GUI更改:使用工具栏、平面按钮。
- 允许将服务器配置导出到文件。
- 配置存储在.ini文件中。
客户端新特性包括:
- 不基于MFC,使得扩展易于实现。
- 支持多语言。
- 首选项对话框。
- 工作区校验和,避免加载损坏的数据。
- 对话框、字体、背景颜色可定制。
- 添加平面按钮。
- 客户端配置存储在.ini文件中,可以运行多个客户端,每个客户端具有不同的配置,没有问题。
- 更好的性能。可以接收大量服务器回复并全部处理。
以上只是BOXP当前特性(或计划中的)的一个示例,并不是特性的完整列表,只是那些适合与BOXP进行比较的特性。
官方Back Orifice XP网站:。访问以获取更多详细信息、最新版本和支持。
Javier Aroche(j_aroche AT users DOT sourceforge DOT net)BOXP项目管理员