【问题标题】:LD_PRELOAD equivalent for Windows to preload shared librariesLD_PRELOAD 等效于 Windows 预加载共享库
【发布时间】:2010-11-13 18:38:39
【问题描述】:

我正在尝试做 LD_PRELOAD 所做的事情,即将 Windows 上的共享库或 DLL 文件预加载到给定程序以覆盖某些功能。

是否有适用于 Windows 的 LD_PRELOAD 等效项?

我没有想到任何特定的功能。我只知道这在 Linux 上是可能的,我很好奇如何在 Windows 上完成本机 DLL 的重载。

【问题讨论】:

  • 你想完成什么?没有直接的等价物
  • 你想重载什么功能?
  • 另外,这是用于 .net 托管程序集还是用于本机 dll?
  • 这是不可能的,因为加载和符号解析在 GNU 链接器和 PE 加载器中以完全不同的方式处理。您将得到的最接近的方法是在破解者圈子中编写有时称为“加载器”的东西,它实现调试器循环,因此可以在加载新模块/DLL时覆盖一些东西,或者只是在主线程暂停的情况下启动进程,然后操作导入表或类似的(显然在内存中),然后恢复主线程以强制执行修改后的行为。

标签: shared-libraries overloading inter-process-communicat


【解决方案1】:

AppInit_DLLs。

http://support.microsoft.com/kb/197571

另见:

AppInit_DLLs 应重命名为 Deadlock_Or_Crash_Randomly_DLLs

https://blogs.msdn.microsoft.com/oldnewthing/20071213-00/?p=24183/

您可能还想查看“DLL 注入”。这里描述了四种方法(包括 AppInint_DLLs):

http://en.wikipedia.org/wiki/DLL_Injection

【讨论】:

猜你喜欢
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 2019-04-17
  • 2014-02-07
相关资源
最近更新 更多