如何更改无法重新编译的 Delphi 程序的硬编码数据库密码?
How do I change the hard-coded database password of a Delphi program that I can't recompile?
我有一个无法重新编译的 Delphi 应用程序。
在将数据库移动到新的SQL 服务器版本的过程中,我想更改数据库密码,使其不再为空。问题是应用程序在 .exe 中嵌入了数据库凭据。
有任何方法可以更改密码吗?
服务器名称和数据库名称是可配置的。
下面是我的 D7 .Exe 的一部分的屏幕截图,显示了其 Ado ConnectionString 的相关部分。
我使用了一个古老的文件查看器(来自旧的 TurboPower 库附带的示例应用程序)来截取屏幕截图。我刚刚将文件加载到其中,输入 "persist" 作为搜索字符串并跳过几个 TPersistent 实例来找到它。
当然,您可以使用任何旧的十六进制文件编辑器执行类似操作并更改它,前提是 .Exe 未被压缩或未受到校验和等保护以防篡改。
您可能需要进行一些试验,并与另一个具有非空密码的应用程序进行比较,以便您可以想出一些适合 space 可用的新凭据.Exe 的磁盘映像。
如果连接字符串在设计模式下保存在 TADOConnection
组件中,您最好的选择是使用资源编辑器,例如 Resource Hacker.
表单或数据模块 DFM 位于 RCData
部分。只需更改连接字符串并使用 "Compile script"。
这会将您的更改保存回 EXE 文件,而不必担心损坏 EXE。
我假设您的 EXE 未打包(PE 打包程序)或未进行数字签名。
我有一个无法重新编译的 Delphi 应用程序。
在将数据库移动到新的SQL 服务器版本的过程中,我想更改数据库密码,使其不再为空。问题是应用程序在 .exe 中嵌入了数据库凭据。
有任何方法可以更改密码吗?
服务器名称和数据库名称是可配置的。
下面是我的 D7 .Exe 的一部分的屏幕截图,显示了其 Ado ConnectionString 的相关部分。
我使用了一个古老的文件查看器(来自旧的 TurboPower 库附带的示例应用程序)来截取屏幕截图。我刚刚将文件加载到其中,输入 "persist" 作为搜索字符串并跳过几个 TPersistent 实例来找到它。
当然,您可以使用任何旧的十六进制文件编辑器执行类似操作并更改它,前提是 .Exe 未被压缩或未受到校验和等保护以防篡改。
您可能需要进行一些试验,并与另一个具有非空密码的应用程序进行比较,以便您可以想出一些适合 space 可用的新凭据.Exe 的磁盘映像。
如果连接字符串在设计模式下保存在 TADOConnection
组件中,您最好的选择是使用资源编辑器,例如 Resource Hacker.
表单或数据模块 DFM 位于 RCData
部分。只需更改连接字符串并使用 "Compile script"。
这会将您的更改保存回 EXE 文件,而不必担心损坏 EXE。
我假设您的 EXE 未打包(PE 打包程序)或未进行数字签名。