【问题标题】:Modify dll exports (symbol table). I want to obfuscate the function names修改 dll 导出(符号表)。我想混淆函数名
【发布时间】:2009-11-09 00:00:33
【问题描述】:

我有一个想要更改符号名称的第三方 dll。这可能吗?我不想让竞争对手知道我的产品使用什么组件。我没有 dll 的源代码。

【问题讨论】:

  • 此第三方 DLL 是否根据其许可证允许您重新分发?
  • 是的。它们包括用于分发的 dll。额外收费。
  • 我认为你在应用程序中的算法和想法比你是否使用特定的 DLL 更重要。花费大量时间来混淆某些东西并没有帮助,如果他们愿意,人们无论如何都会弄清楚。
  • 在 99.99% 的情况下,这是正确的。我完全同意。但不是这种情况。它非常非常独特,因此我需要经历这些障碍。

标签: c++ dll compiler-construction winapi linker


【解决方案1】:

在链接和运行时将可执行文件与 dll 绑定需要符号表。它通常包含修饰函数名称和序数。只能使用序数。如果您正在构建库,您可以定义 .def 文件来控制符号表。但如果这是预先构建的 3rd 方库,则可能很难走。当然,一切皆有可能,但我怀疑这是否值得你努力。

如果你很绝望,我会尝试在十六进制编辑器中更改修饰函数名称中的一个字母,查找此函数序号值,然后尝试使用 GetProcAddress 和此函数的序号。

【讨论】:

    【解决方案2】:

    您可以查看PE Explorer。我不确定它会做你想要的,但也许。

    【讨论】:

      【解决方案3】:

      在不修改二进制文件的情况下,如果 DLL 已签名,那么这将使签名无效。

      即使没有签名,也可能违反管理 DLL 使用的许可协议。

      【讨论】:

      • 你知道有什么程序可以做到这一点吗?许可证什么也没说,我怀疑他们在乎。我付了许可证。改几个名字是无害的。
      • 我怀疑是否有任何程序可以做到这一点。 “最简单”的方法可能是使用十六进制编辑器编辑 dll 的导出表,并将名称替换为相同长度的字符串。您还必须调整要链接的导出库。像texe.codeplex.com 这样的所有工具都可能会有所帮助。
      • 许可证没有说什么,Memb。默认为“保留所有权利”。许可证放宽默认限制,因此如果许可证未授予执行某项操作的权限,并且您所在国家/地区的版权法未授予该权限,则您不得执行此操作。你是否为它付钱是无关紧要的。您无法判断许可证授予者是否关心。你问过吗?
      • Rob,不是每个人都必须分享你的价值体系。也许 Memb 不关心一些版权法问题?我还认为更改符号表中的名称不会伤害任何人。但是他会吊销执照,但我认为在这种情况下,这并不比未经许可就说他妈的或随意拍照更糟糕
      猜你喜欢
      • 2010-11-30
      • 2011-01-31
      • 2012-12-20
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      相关资源
      最近更新 更多