相关疑难解决方法(0)

如何查找本机DLL文件是否编译为x64或x86?

我想确定本机程序集是否从托管代码应用程序(C#)编译为x64或x86 .

我认为它必须在PE头中的某处,因为OS加载器需要知道这些信息,但我找不到它.当然我更喜欢在托管代码中执行它,但如果有必要,我可以使用本机C++.

.net c# 64-bit winapi x86-64

127
推荐指数
7
解决办法
10万
查看次数

Win32 Hooks DLL注入针对"任何CPU"构建的应用程序

我正在开发一个捕获所有用户交互的项目.MSDN告诉(这个)

SetWindowsHookEx可用于将DLL注入另一个进程.32位DLL无法注入64位进程,64位DLL无法注入32位进程.如果应用程序需要在其他进程中使用钩子,则需要32位应用程序调用SetWindowsHookEx将32位DLL注入32位进程,并且64位应用程序调用SetWindowsHookEx注入64位DLL进入64位进程.

我的问题是,如果构建了一个应用程序会发生什么Any CPU.我是否需要SetWindowsHookEx从构建的DLL 调用Any CPU.

我写了HookLogger_32.exe加载HookFunctions_32.dll(包括x86)和HookLogger_64.exe加载HookFunctions_64.dll(都是x64)设置WH_CBTWH_MOUSE全局(不是特定的线程).

HookLogger_32.exe,HookLogger_64.exe,HookFunctions_32.dll和HookFunctions_64.dll是用C++编写的.

当我点击构建的.NET应用程序时Any CPU,这些DLL会被注入(通过SetWindowHookEx).Windows操作系统挂起,我必须强行重启我的机器.

当针对x86或x64构建相同的.NET应用程序时,当我在HookLoggers(32位和64位)启动后单击应用程序时,一切正常.

这种未定义行为的任​​何原因.

我工作的平台是64位机器.

hook dll-injection setwindowshookex

7
推荐指数
1
解决办法
3400
查看次数

标签 统计

.net ×1

64-bit ×1

c# ×1

dll-injection ×1

hook ×1

setwindowshookex ×1

winapi ×1

x86-64 ×1