查看闭源应用程序和服务器之间的 MSSQL 事务

逆向工程 视窗 mssql
2021-06-10 09:38:00

我正在逆向使用 Microsoft SQL Server (2005) 的闭源遗留应用程序,我想准确地找出正在后台执行的查询。

我知道可以使用 Wireshark 查看网络流量,但感觉很笨拙,所以我正在为此寻找更专业的东西。

是否有类似于Firefox 的 Tamper Data 的工具,但 MSSQL 可以查看并可能编辑查询?

我正在寻找的功能:

  • 能够精确地查看应用程序执行的查询(包括 blob 等)

非常有用的功能:

  • 能够拦截查询执行并允许编辑值
2个回答

大多数数据库在数据库运行时对跟踪和分析非常友好。您几乎不需要进行实际的逆向工程。有一个名为SQL Server Profiler的程序,我相信它可以转储针对数据库执行的每个查询。如果您无权访问服务器,它会变得有点复杂。

如果您的应用程序正在使用 ADO,您也许可以将Statement tracer 用于 ADO

做您想做的事情的更复杂的方法取决于您的应用程序使用的数据库层类型。如果层是基于 COM 的(OLE DB 是),那么您有两个选择,要么深入到 COM 接口,要么创建一个 COM 代理。我可能会简单地挂钩从各种OLE DB ICommandXXX 接口派生的对象

使用WireShark 附带的 TDS 协议解码器没有任何问题,假设连接是通过 WireShark 可以嗅探的东西建立的。这是TDS的专用协议解码器,所以我不确定您的意思:

我知道可以使用 Wireshark 查看网络流量,但感觉很笨拙,所以我正在为此寻找更专业的东西。

如果您想亲自动手,可以编写基于FreeTDS的代理也许最大的问题似乎是这个项目现在已经成熟或被放弃了。tdspool如果您想编写代理,程序可能是您最好的起点。但是,您有可能强迫 jTDS 做您想做的事情(从对源代码的随意阅读来看,它似乎不像程序那样是一个好的起点tdspool)。