Windows 7(64位版本)上的AppInit_DLLs

时间:2011-06-29 01:58:33

标签: windows dll 64-bit code-injection

我写了一个DLL,可以帮助我调试我的应用程序。我正在运行64位版本的windows7。以下是我观察的内容:

(1)如果我设置HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs并运行我的应用程序的32位版本,DLL将被加载,一切正常。 (2)如果我设置HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs并运行我的应用程序的64位版本,应用程序启动但它立即崩溃。

你们知道解决这个问题的方法吗?

2 个答案:

答案 0 :(得分:2)

AppInit_DLLs适用于Win7上的64位应用程序,但您可能无法满足要求。

a)您可能需要知道这一点:http://msdn.microsoft.com/en-us/library/dd744762(v=VS.85).aspx

b)如果它是你的应用程序和你的DLL,跳过整个AppInit_DLLs机制,这是一个混乱和美国,并且只是在合适的时间做你自己的LoadLibrary。

马丁

答案 1 :(得分:2)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs是默认CPU架构的注册表项,在您的情况下是64位。

要在64位操作系统上挂钩32位进程,请使用: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs