Sql server 如何更改Delphi程序的硬编码数据库密码';你不能重新编译吗?

Sql server 如何更改Delphi程序的硬编码数据库密码';你不能重新编译吗?,sql-server,delphi,executable,credentials,hex-editors,Sql Server,Delphi,Executable,Credentials,Hex Editors,我有一个无法重新编译的Delphi应用程序 在将数据库移动到新的SQL Server版本的过程中,我希望更改数据库密码,使其不再为空。问题是应用程序在.exe中嵌入了数据库凭据 有没有办法更改密码 服务器名称和数据库名称是可配置的。下面是我的D7.Exe的一部分屏幕截图,显示了Ado连接字符串的相关部分 我使用了一个古董文件查看器(来自一个旧TurboPower库附带的示例应用程序)来截图。我只是将文件加载到其中,输入“persist”作为搜索字符串,并跳过几个TPersistent实例来定位它

我有一个无法重新编译的Delphi应用程序

在将数据库移动到新的SQL Server版本的过程中,我希望更改数据库密码,使其不再为空。问题是应用程序在.exe中嵌入了数据库凭据

有没有办法更改密码


服务器名称和数据库名称是可配置的。

下面是我的D7.Exe的一部分屏幕截图,显示了Ado连接字符串的相关部分

我使用了一个古董文件查看器(来自一个旧TurboPower库附带的示例应用程序)来截图。我只是将文件加载到其中,输入“persist”作为搜索字符串,并跳过几个TPersistent实例来定位它

当然,您可以使用任何旧的十六进制文件编辑器来执行类似的操作并对其进行更改,前提是.Exe未被压缩或未被校验和等篡改

您可能需要进行一点实验,并与另一个具有非空密码的应用程序进行比较,以便您可以找到一些新的凭据,以适应.Exe磁盘映像中的可用空间


如果连接字符串是在设计模式下保存在
TADOConnection
组件中的,那么最好的选择是使用资源编辑器,例如

表格或数据模块DFM可在
RCData
部分找到。只需更改连接字符串并使用“编译脚本”。 这将把您的更改保存回EXE文件,而无需担心会损坏EXE

我假设您的EXE没有打包(PE打包)或数字签名


我将使用这个答案,因为我还需要更改一些组合框字符串……我建议您先在另一个答案中尝试ResourceHacker实用程序。使用起来比自己动手要容易得多。我是按照你的方式做的!我更改了所需的CONNECTON字符串加上combobox值。如果新数据(字符串)比旧数据(字符串)长,这将不起作用。@Johan:嗯,很好。这就是为什么我在回答中说“这样你就可以想出一些新的凭证,这些凭证将适合.Exe磁盘映像中的可用空间”。谢谢。就为了Op的信息,我用这个来更改我示例应用程序上的密码,效果很好。适用于任何有相同问题的人。这是正确的答案。不要乱搞十六进制编辑器。如果您只需要更改connection@e4rthdog由于delphi程序的结构,大多数应用程序数据都可以访问资源编辑器。对于这些数据,这也是正确的答案。您的较新SQL Server版本是否不允许使用空密码?否则,我不理解这个问题。我不想让我的sa密码为空,因为新服务器是一个大的…@RobKennedy:对于那些不知道,传统上Sql server上的sa帐户可以不受限制地访问整个服务器的读者来说,可能值得一提,这就是为什么空白pwd不是一个好主意,以及为什么人们肯定不想仅仅为了允许应用程序访问而删除sa pwd。幸运的是,在最近的版本中,留白并不容易。谢谢,@Martyn。我不知道,你有更大的问题。您是如何发现自己依赖于无法修改的定制软件的?