#include <windows.h>
#include "APIHook.h"
extern CAPIHook g_OpenProcess;
// 自定义OpenProcess函数
#pragma data_seg("YCIShared")
HHOOK g_hHook = NULL;
DWORD dwCurrentProcessId=0;
#pragma data_seg()
HANDLE WINAPI Hook_OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId)
{
typedef HANDLE (WINAPI *PFNTERMINATEPROCESS)(DWORD, BOOL,DWORD);
if(dwProcessId != dwCurrentProcessId)
{
return ((PFNTERMINATEPROCESS)(PROC)g_OpenProcess)(dwDesiredAccess,bInheritHandle,dwProcessId);
}
return 0;
}
// 挂钩OpenProcess函数
CAPIHook g_OpenProcess("kernel32.dll", "OpenProcess",
(PROC)Hook_OpenProcess);
///////////////////////////////////////////////////////////////////////////
static HMODULE ModuleFromAddress(PVOID pv)
{
MEMORY_BASIC_INFORMATION mbi;
if(::VirtualQuery(pv, &mbi, sizeof(mbi)) != 0)
{
return (HMODULE)mbi.AllocationBase;
}
else
{
return NULL;
}
}
static LRESULT WINAPI GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
return ::CallNextHookEx(g_hHook, code, wParam, lParam);
}
BOOL WINAPI SetSysHook(BOOL bInstall, DWORD dwThreadId)
{
BOOL bOk;
dwCurrentProcessId=dwThreadId;
if(bInstall)
{
g_hHook = ::SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc,
ModuleFromAddress(GetMsgProc), 0);
bOk = (g_hHook != NULL);
}
else
{
bOk = ::UnhookWindowsHookEx(g_hHook);
g_hHook = NULL;
}
return bOk;
}
分享到:
相关推荐
Hook OpenProcess是其中一种常用的技术手段,它涉及到系统调用拦截和过程注入。 OpenProcess是Windows API的一个函数,用于获取对指定进程的访问权限。通过调用OpenProcess,一个进程可以获取另一个进程的句柄,...
`APIHook_Demo`和`APIHook_DLL_Demo`可能分别是主程序和DLL的源代码目录,包含了实现Hook的C++、C#或其他编程语言的源文件。 在实际操作中,实现API Hook通常包括以下几个步骤: 1. **选择Hook方法**:有多种Hook...
这里使用了内联汇编来实现hook,即“inline hook”,这种方式通常比传统的API Hook更直接,效率更高,但同时也更难调试和维护。 具体到这个案例,我们的目标是屏蔽记事本的粘贴功能。在Windows中,当用户尝试粘贴...
在C++中,获取进程句柄通常通过`OpenProcess`函数实现,需要进程ID和访问权限。首先,通过`EnumProcesses`获取所有运行进程的ID,然后使用`GetModuleBaseName`或`GetProcessImageFileName`找到对应进程的名称。 4....
总的来说,"hook 任务管理器 进程防杀"是一种通过hook技术防止进程被结束的安全策略,主要涉及到Windows钩子、WH_CBT钩子类型、VC++编程以及对Windows API的深入理解。这种技术虽然可以用于合法的软件保护,但也有时...
因此,开发者通常会借助第三方库,如API钩子库Detours,或者通过P/Invoke(Platform Invoke)调用C/C++动态链接库(DLL)来实现。 这个例子中提供的源码可能包含以下步骤: 1. 定义`OpenProcess`函数的原型,包括...
### 跨进程API Hook技术详解 #### 一、引言 在计算机编程领域,特别是针对Windows平台的应用开发中,API Hook技术是一种非常重要的工具。它允许开发者在不修改原程序代码的情况下,监视或修改应用程序对特定API...
总结来说,"hook_openprocess.rar_钩子与API截获_Visual_C++_"是一个关于使用Visual C++实现Windows钩子和API截获的项目,其核心目的是防止进程被终止,从而允许执行不可见的行为。这个项目涉及到编程、系统监控和...
在C++中,可以利用API Hook、VTable Hook、JMP Hook等多种方式实现这一机制。例如,API Hook是通过替换目标函数的地址来使程序在调用时先执行我们的钩子函数,然后再执行原函数。 二、Hook在进程防杀中的应用 1. ...
6. **编程实现**:实现HOOKAPI进程守护通常需要深入理解Windows API,使用诸如C++、C#等编程语言,并结合如Detours、EasyHook等第三方库来方便地设置和管理钩子。 7. **性能影响**:需要注意的是,过度使用钩子可能...
HOOK是Windows API提供的一种机制,允许开发者在系统或应用程序的关键事件发生时插入自定义代码进行处理。它可以监控并影响其他进程的行为,比如键盘输入、鼠标操作等。在本例中,我们可能会设置一个键盘HOOK,以在...
而动态Hook则是在运行时通过API注入钩子函数的地址到目标进程的调用链中,比如使用SetWindowsHookEx函数。 在这个示例中,由于我们要Hook的是explorer.exe进程,这通常涉及到动态Hook,因为explorer.exe在操作系统...
1. **Windows API**: 包括各种系统函数,如CreateProcess、OpenProcess、ReadProcessMemory、WriteProcessMemory等,这些API用于进程管理和内存操作,以实现监视目标exe。 2. **钩子技术**:通过设置钩子(Hook),...
禁用任务管理器通常涉及到处理WM_CLOSE和WM_DESTROY消息,或者直接调用OpenProcess和CloseHandle等API函数来阻止其运行。开发者可能还使用了FindWindow和ShowWindow函数来查找并隐藏任务栏,使其在用户的桌面环境下...
这通常需要使用如OpenProcess、CreateRemoteThread等API函数。 5. 日志记录:将捕获的键盘输入数据写入日志文件,通常使用fopen、fprintf等文件操作函数,以文本格式记录事件,便于后续分析和开发。 6. 后序开发:...
VC++作为Microsoft的C++开发环境,提供了丰富的API和工具来实现这一目标。通过使用CreateRemoteThread或WriteProcessMemory等API,开发者可以在目标进程中创建一个新的线程,使得新线程执行DLL的主入口点(DllMain)...
标签中提到的"C"通常是指C语言,而在这个上下文中,可能是因为EasyHook库的底层实现部分使用了C++,但其公开的API是面向.Net的,所以主要的开发工作是在C#环境下进行。 在提供的压缩包文件"dll-injection-master"中...
- 获取进程句柄:使用`OpenProcess`函数获取目标进程的访问权限。 - 加载DLL:通过`LoadLibrary`或`WriteProcessMemory`函数将DLL的内存映像写入目标进程,然后使用`CreateRemoteThread`在目标进程中创建一个新...
标题中的“ProjectIDFromName.rar_钩子与API截获_Visual_C++_”表明这是一个关于使用Visual C++开发的项目,其中涉及到钩子(Hook)技术和API截获技术。钩子是一种Windows编程中用于监控系统事件的技术,而API截获则...
"apihook_OpenProcess"这个文件名可能暗示了API钩子(API Hooking)的使用。API钩子是一种技术,通过拦截系统调用,如`OpenProcess`,来改变其行为。在免杀进程中,可能会用到API钩子来阻止其他程序(如安全软件)...