【发布时间】: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