Articles of 钩

端口Win32的DLL挂钩到Linux

我有一个程序(NWShader)挂钩到第二个程序的OpenGL调用(NWN)做后处理效果和什么。 NWShader最初是为Windows构build的,通常是现代版本(win32),同时使用DLL导出(以获取Windows加载它并获取一些OpenGL函数)和Detours(挂钩到其他函数)。 我使用的技巧,在检查sysdir之前,Win将在当前目录中查找任何DLL,因此会加载我的。 我有在这个方法redirect的DLL: #pragma comment(linker, "/export:oldFunc=nwshader.newFunc) 将它们发送到我自己的DLL中不同的命名函数。 然后我做任何处理,并从系统DLL调用原来的function。 我需要将NWShader移植到Linux(NWN存在于两种版本中)。 据我所知,我需要做的是共享库(.so文件)。 如果这是在NWN可执行文件(我发现一个shell脚本来处理这个)之前预加载,我的函数将被调用。 唯一的问题是我需要调用原始函数(我会使用各种DLLdynamic加载方法,我认为),需要能够执行类似Detour的内部函数挂钩。 目前,我正在构buildUbuntu 9.10 x64(带有32位编译器标志)。 我在Google上找不到太多帮助,但是我不知道这个* nix社区究竟是指什么的。 我可以编写C ++,但我更习惯于Windows。 作为OpenGL,需要修改与Linux兼容的唯一部分是钩子代码和调用。 有没有一个简单而简单的方法来做到这一点,或者它会涉及重新创buildDetours并dynamic加载原始函数地址?

检查API是否受到监视(挂钩?)

我的应用程序使用一些像GetProcAddress和CreateProcess这样的API,有时会导致Antiviruses将其标记为恶意,即使它不是。 我想要做的是检查一个特定的API是否被监视或挂钩,如果是,那么我不会调用该部分的代码。 我如何检查某个API是否被挂钩? 这是用C编写的Windows应用程序 谢谢。

用头文件中定义的方法调用SetWindowsHookEx

我正试图添加一个低级别的鼠标挂钩到一个类。 我可以通过在我的CPP文件中放置这个function: LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) { //my hook code here return CallNextHookEx(0, nCode, wParam, lParam); } 然后,我在类构造函数中设置钩子,如下所示: HHOOK mousehook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, NULL, 0); 这适用于拦截鼠标事件,但由于callback函数没有在我的类中定义,它没有访问我的任何类variables。 因此,我尝试在头文件中定义callback函数,如下所示: LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam); 并在我的CPP文件(TMainForm是类): LRESULT CALLBACK TMainForm::MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) { //my hook code here return CallNextHookEx(0, […]

防止在C ++中重绘窗口

我正在编写一个全局钩子DLL,它需要在一个窗口上使用GDI +做一些绘制来响应一个事件。 我的问题是,正在绘制的窗口不断重新绘制自己,所以我画的东西在我想要之前就被擦掉了。 有什么办法可以防止窗户只要我需要画什么东西? 我的钩子现在是一个WH_CALLWNDPROC钩子。 该绘图是使用GDI +响应消息WM_SIZING 。 我使用GDI +绘制到窗口的DC (即GetWindowDC )。 我正在绘制的是正确绘制的,但是在窗口客户区被重新绘制时几乎立即被擦除。 创build我正在使用的窗口的程序是记事本。 当光标闪烁时,我所画的被擦除。 有谁知道我可以暂时停止绘画的方式? 谢谢!

如何挂钩到Windows应用程序和进程启动?

我试图编写一个程序,将挂钩到应用程序启动并捕获命令行。 不知道从哪里开始,因为我在Windows编程中非常绿色。 将不胜感激任何帮助谢谢

简单的方法来挂接特定进程的registry访问

有一个简单的方法来挂钩我的代码执行的进程的registry访问? 我知道SetWindowsHookEx和朋友,但它太复杂了…我仍然有希望,有一种简单的Unix LD_PRELOAD …

挂钩进程

有没有人知道像SpyStudio的工具挂钩进程? 我想要的function是: 日志函数调用其他进程 GUI 编写脚本 开源 我已经看过一些工具,如: SpyStudio less走弯路 DynInst 但是没有一个真正让我满意。

如何检测窗口全局范围的拖动操作?

当我在Windows XP中的屏幕边缘拖动文件夹时,它将成为包含文件夹中文件的工具栏。 如何检测窗口有拖动操作? 如果我想编写一个应用程序来检测系统范围内的拖动操作,我该怎么做? 还有另一个问题:我怎样才能禁用这个Windows XPfunction呢,真是烦人。

如何正确使用SetWindowsHookEx和CallNextHookEx

我可以正确地build立一个窗口钩子,但我被MSDN中的线路困惑,说:“调用CallNextHookEx函数链接到下一个钩子程序是可选的,但强烈build议;否则,其他应用程序已经安装钩子不会收到挂钩通知,并可能导致错误行为,除非您绝对需要阻止其他应用程序看到通知,否则应该调用CallNextHookEx。“ 我想成为一名好的编程公民,并打电话给下一个钩子。 但是,我的钩子程序看起来像这样: LRESULT CALLBACK CBTProc(int code, WPARAM wp, LPARAM lp) { if (code != HCBT_CREATEWND) { // What do I do here? It's not the event I requested so how do I pass it on? return 0; } // It's the code we want (create window) CallNextHookEx(…); … } 那么,如果代码不是我感兴趣的代码,那么在钩子程序中会发生什么? 我如何打电话给下一个钩子? 编辑:主要的问题是一个HHOOK从SetWindowsHookEx返回,并且需要传递给CallNextHookEx函数。 更新:看来在NT平台上钩参数被忽略: http://msdn.microsoft.com/en-us/library/ms644974.aspx […]

当应用程序是服务时,SetWinEventHookcallback不起作用

我有一个在.NET 4.0中制作的应用程序挂钩赢得事件,并使用callback来捕获窗口事件,如下所示: //import the methos from the dll [DllImport("user32.dll", SetLastError = true)] private static extern IntPtr SetWinEventHook(int eventMin, int eventMax, IntPtr hmodWinEventProc, WinEventProc lpfnWinEventProc, int idProcess, int idThread, int dwflags); //declare a callback public static WinEventProc _winEventProc = new WinEventProc(WindowEventCallback); //pass this callback to SetWinEventHook SetWinEventHook( EVENT_SYSTEM_FOREGROUND, // eventMin EVENT_SYSTEM_FOREGROUND, // eventMax IntPtr.Zero, // hmodWinEventProc […]