Tag: hook

挂钩用户呼叫function?

我有一个虚拟机,它在VM_Create上将一个函数的地址(systemCalls)传递给虚拟机。 所以我挂钩VM_Create并窃取系统调用地址,将其放入备份函数指针,我修改后的systemCalls函数的地址传递给原始的VM_Create,我可以从中修改参数,添加或删除调用,然后调用支持 – 系统调用function。 这很有效,直到游戏的新版本发布。 我相信找到了问题: 这是未修改的systemCalls函数的开始: intptr_t CL_CgameSystemCalls(intptr_t *args) { switch (args[0]) { case CG_PRINT: Com_Printf( “%s”, (const char*)VMA(1)); return 0; case CG_ERROR: Com_Error(ERR_DROP, “%s”, (const char*)VMA(1)); return 0; 这是我修改过的系统调用函数: intptr_t modified_CL_CgameSystemCalls (intptr_t *args) { switch (*args) { case CG_GETSNAPSHOT: mysnap = mysnap ; mynextSnap = (snapshot_t*) (CG_QVM2NATIVE(args[2])); mysnap = mynextSnap; retval = original_CL_CgameSystemCalls(args); […]

挂钩框架(类似绕行)

我正在寻找一个C库/框架,它允许我替换内存中的函数并将它们重定向到我自己的实现,同时仍允许我的实现调用原始实现。 这似乎是Linux-y系统中相当罕见的需求,大概是因为LD_PRELOAD涵盖了运行时function替换的大多数方面。

‘安全’DLL注入

抱歉,这不是一个非常好的问题。 我有一个程序需要在从资源管理器打开文件时发出警报(即调用ShellExecute(A / W))。 不幸的是,Microsoft删除了COM接口(IShellExecuteHook),它允许您在Vista中挂起这些事件,因为旧版代码可能会因更改而导致崩溃。 有一种解决方法可以重新启用此function,但它不再有效。 我做了一些研究,看起来捕获ShellExecute调用的唯一方法是将调用重新路由到shell32.dll。 目前,我正在考虑将自己的DLL注入到资源管理器进程中,然后将ShellExecute的IAT条目复制到我的DLL中的某些地址分配,最后修改ShellExecute的IAT条目以指向我的函数,该函数将通知打开文件并跳转到原始ShellExecute函数的程序,我们之前存储了它的地址。 我最关心的是防病毒。 他们会关心我注入探险家吗? 他们会关心我正在修改IAT吗? 另一个问题是这是否安全; 是否有可能(或者更可能)探险家的安全权限不允许通过CreateRemoteThread注入? 如果是这样,有没有更好的方法来进行这种注射? 有没有更好的方法来做到这一点? 编辑:对于将来遇到此问题的任何人,explorer.exe没有shell32.dll的IAT; 它有一个标题,但thunk充满了垃圾值,所以没有办法(据我所知)检索任何导入函数的条目。 看起来代码隧道是解决这个问题的唯一方法。

如何挂钩__usercall,__ userpurge(__spoils)函数?

知道任何关于挂钩__usercall类型函数的东西吗? 我成功地挂了__thiscall , __thiscall和__cdecl但这对我来说已经足够了。 知道有人为__usercall挂钩,或者如何使用__stdcall或__cdecl翻译挂钩这类函数? 我最初必须解决的function是: int __usercall func(int a, int b, int c, unsigned int d, signed int e);

适用于Mac OS X的SetWindowsHookEx?

Windows钩子允许您在其他进程中查找,有时会改变其行为。 Mac OS X有这样的东西吗? 谢谢!

WH_KEYBOARD和WH_KEYBOARD_LL之间的区别?

两个人的工作有什么区别? 对于WH_KEYBOARD_LL 我读到它安装了一个监视低级键盘输入事件的钩子程序。 低级键盘事件是什么意思?

打印TCP数据包数据

在TCP通信中,当数据包从以太网传输到网络(IP)层时,我想打印该数据包中的数据? 我正在研究linux。 我得到了一些信息,可以借助linux内核代码,即在linux NAT防火墙代码中完成。 但是我会在哪里获得内核源代码? 这些编码在哪里?