【问题标题】:How do I change the hard-coded database password of a Delphi program that I can't recompile? [closed]如何更改无法重新编译的 Delphi 程序的硬编码数据库密码? [关闭]
【发布时间】:2015-07-09 09:32:50
【问题描述】:

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

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

我有任何方法可以更改密码吗?

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

【问题讨论】:

  • 您较新的 SQL Server 版本是否不允许使用空白密码?否则,我不明白这个问题。
  • 我不想让我的 sa 密码为空,因为新服务器很大...
  • @RobKennedy:对于那些不知道传统上 Sql Server 上的 sa 帐户可以不受限制地访问整个服务器的读者来说,可能值得一提,这就是为什么空白密码不是那么好的原因想法,以及为什么一个人肯定不想删除 sa pwd 只是为了允许应用程序访问它。幸运的是,在最近的版本中,将其留空并不容易。
  • 谢谢,@Martyn。我不知道。
  • 你遇到了更大的问题。您是如何发现自己依赖无法修改的定制软件的?

标签: sql-server delphi executable credentials hex-editors


【解决方案1】:

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

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

我假设您的 EXE 未打包(PE 打包程序)或数字签名。

【讨论】:

  • 谢谢。只是为了操作的信息,我用它来更改我的示例应用程序的密码,它工作正常。
  • 对于任何有同样问题的人。这是正确的答案。不要乱用十六进制编辑器。
  • 如果您只需要更改连接,这就是正确答案
  • @e4rthdog 资源编辑器可以访问大部分应用程序数据,因为 delphi 程序的结构方式。对于该数据,这也是正确的答案。
【解决方案2】:

下面是我的一个 D7 .Exe 的部分截图,显示了它的 Ado ConnectionString 的相关部分。

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

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

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

【讨论】:

  • 我会选择这个答案,因为我还需要更改一些组合框字符串......
  • 我建议您先在另一个答案中尝试 ResourceHacker 实用程序。它比自己破解要容易得多。
  • 我按照你的方式做到了!我更改了我需要的连接字符串 PLUS 组合框值。
  • 如果新数据(字符串)比旧数据长,这将不起作用。
  • @Johan:嗯,相当。这就是为什么我在回答中说“这样您就可以想出一些适合 .Exe 磁盘映像中可用空间的新凭据”。
猜你喜欢
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
相关资源
最近更新 更多