草庐IT

c++ - 防止从 Dll C++ 注入(inject) Dll

我对C++中的反dll注入(inject)有一些疑问。我有一个基于C++的游戏,我遇到了黑客注入(inject)dll的问题。然后我需要阻止它。我从那里找到通知Hook:MSDN-NotificationHooks但我不知道如何使用它。是否可以使用notifyhook来防止dll注入(inject)?这怎么可能?(有更好的例子)。可以来自dll吗?(有例子更好)。感谢您阅读该帖子。PS:对不起我的英语。 最佳答案 算了,除非你做非常复杂的事情,否则它是行不通的。我所说的复杂是指类似于Skype中使用的代码混淆、反调试技术。看看thi

c++ - 为 WH_MOUSE 设置 WindowsHookEx

我手上有一些代码可以全局打印鼠标坐标(使用WH_MOUSE_LL)。我的目标是使用WH_MOUSE而不是WH_MOUSE_LL因为(根据我的阅读)它更快。我在论坛上读到,当使用WH_MOUSE时,需要在DLL中声明它以实现全局效果,但是,当在程序中使用时,它应该在声明它的那个应用程序上工作,但它不起作用(它什么都不打印)当我将WH_MOUSE_LL更改为WH_MOUSE时。这是代码:#define_WIN32_WINNT0x0400#pragmacomment(lib,"user32.lib")#include#includeHHOOKhMouseHook;LRESULTCALLBAC

c++ - WH_MOUSE 和 WH_MOUSE_LL 钩子(Hook)之间有什么区别?

我发现WH_MOUSE并不总是被调用。问题可能是我使用的是WH_MOUSE而不是WH_MOUSE_LL?代码:classMouseHook{public:staticsignalclickEvent;staticboolinstall(){if(isInstalled())returntrue;hook=::SetWindowsHookEx(WH_MOUSE,(HOOKPROC)&mouseProc,::GetModuleHandle(NULL),NULL);return(hook!=NULL);}staticbooluninstall(){if(hook==NULL)returnTR

.net - 来自 Windows 服务的全局键盘 Hook

是否可以从windows(xp和7)服务编写全局键盘Hook?(使用SetWindowsHookEx在系统服务中不起作用) 最佳答案 SetWindowsHookEx的文档说:orwithallthreadsinthesamedesktopasthecallingthread.所以需要关联同一个桌面(即使不考虑终端服务也会有多个桌面:普通桌面、安全桌面(用于UAC和登录)和屏保)。由于服务不与交互式session关联(并且从WindowsV6开始,不能关联)您将需要用户session中的一个进程来执行Hook,并与后端服务通信(例如

c++ - 全局拦截窗口移动

我无法让全局系统Hook工作。我想在窗口移动时尽早收到通知,并更改窗口大小。这意味着CBT钩子(Hook)HCBT_MOVESIZE不会切断它,它只会在窗口移动后发生。我想Hook窗口的实际移动,并能够在移动过程中更改窗口大小。Hook是从DLL设置的,回调函数在该DLL中。这是我试过的。WH_CALLWNDPROC。当窗口移动时它会提醒我(WM_MOVING从其他应用程序接收到窗口),但我无法更改消息的内容。WH_CALLWNDPROCRET与WH_CALLWNDPROC相同。CBTHookHCBT_MOVESIZE。事件来晚了。WH_GETMESSAGE。从不接收WM_MOVE、W

c# - DirectX 游戏 Hook

我正在尝试在游戏中模拟鼠标事件。游戏使用DirectInput,所以你不能使用SendMessage向它发送鼠标事件/键盘事件,这基本上就是我必须连接到游戏的原因。另外我不想使用SendInput/mouse_events,游戏必须在后台运行并产生鼠标事件。我已经设法在游戏中创建一个DLLHook,但现在下一个问题是我必须创建鼠标事件和键盘(可能是主要问题)。提前致谢。 最佳答案 您可以使用GlovePIE而不是连接到游戏中,这是一个内核级输入模拟器。你可以写下你自己的脚本,然后使用它。因此,您需要将应用程序的消息发送到GloveP

c++ - 键盘 Hook 问题

我正在做一个使用一键通键的语音聊天应用程序。我做了一个钩子(Hook),所以它也会在应用程序外部注册一键通。HHOOKhHook=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)pushtotalk,0,0);LRESULTCALLBACKpushtotalk(intkey,WPARAMwParam,LPARAMlParam){if(keyvkCode==75&&wParam==WM_KEYDOWN){MessageBox(mainhWnd,"KEYSTART","KEYSTART",0);}elseif(kbdll->vkCode==75&&wPa

c++ - 少走弯路的API Hooking

介绍信息:Windows764位。C++。64位应用程序和DLL。无需MS弯路即可Hook。问题:我一直在努力获取一个在Windows中演示Hook的工作示例。大多数tuts似乎是在32位WindowsXP是唯一操作系统的时候写的……从那以后我克服了64位的理解障碍并成功地注入(inject)了一个DLL。我在这次知识之旅中的下一步是Hook。为了与主题的怀旧保持一致,MS的Detours不支持64位(免费),我当然不会为任何东西支付10,000美元。所以我采用了thistutorial中的常规方法.这个tut很棒,但是我在理解这一部分时遇到了一些困难:voidBeginRedirec

c++ - "empty"函数的外部进程中的 Detours Hook 不起作用

我通过函数偏移量在外部进程中Hook函数。到目前为止,这对于我Hook的函数来说效果很好——但是我发现一个“debugLog(char...)”函数仍然存在于二进制文件中但不进行任何打印——它看起来像这样debugMessageprocnear;xoreax,eax;LogicalExclusiveORretn;ReturnNearfromProceduredebugMessageendp它是这样称呼的pushoffsetdebugString;"Thisisadebugmessage"...calldebugMessage;CallProcedure现在调试消息显然已被禁用,我想连接

c++ - 如何修改运行时加载的 DLL 的导入地址表

我想Hook在运行时从加载的DLL调用的函数,我使用了“WindowsViaC/C++”一书中的CAPIHook类(通过安装系统范围Hook完成的DLL注入(inject)和通过修改IATHook)但只有当DLL名称/符号存在于可执行文件的IAT中时,此代码才有效。(即隐式DLL链接)这是动态链接库代码:CAPIHook::CAPIHook(PSTRpszCalleeModName,PSTRpszFuncName,PROCpfnHook){//Note:thefunctioncanbehookedonlyiftheexportingmodule//isalreadyloaded.Aso