求大神帮忙让这段代码通过编译,我用的VC6.0,初学,好累,都想放弃了,哭哭哭... 5
#include<stdio.h>VoidInstallPassTPNtOpenProcess(){CharszCode[7]={(char)0xff,(char)0x7...
#include <stdio.h>
Void InstallPassTPNtOpenProcess()
{
Char szCode[7] =
{
(char)0xff,
(char)0x75,
(char)0xc8,
(char)0xff,
(char)0x75,
(char)0xdc,
(char)0xe8
};
/* 获取原生的 NtOpenProcess 和 ObOpenObjectByPointer 的地址 */
uOriginNtOpenProcessAddr=MmGetSystemFunAddress(L"NtOpenProcess");
uOriginObOpenObjectByPointerAddr=MmGetSystemFunAddress(L"ObOpenObjectByPointer");
/* 从 NtOpenProcess 这个地址开始搜索长度为 7 的特征码字符串,得到的地址将会被安装 InLine Hook */
uMyHookedNtOpenProcessAddr = SearchFeature(uOriginNtOpenProcessAddr, szCode, 7) - 7;
/* 计算出自定义 InLine Hook 的跳转地址 */
uMyHookedNtOpenProcessJmpAddr = uMyHookedNtOpenProcessAddr + B;
/* 计算出 TP InLine Hook 的跳转地址 */
uTPHookedNtOpenProcessJmpAddr = uMyHookedNtOpenProcessAddr + 6;
/* 安装一个 InLine Hook */
InstallInLineHook(uMyHookedNtOpenProcessAddr, (ULONG)InLineHookNtOpenProcess);
KdPrint(("Pass TP - NtOpenProcess Installed."));
}
/************************************************************************/
/* 自定义的 NtOpenProcess,用来实现 InLine Hook Kernel API
/************************************************************************/
NTSYSHOOKAPI void InLineHookNtOpenProcess()
{
__asm
push dword ptr [ebp-38]
push dword ptr [ebp-24]
}
/* 开始过滤 */
if(ValidateCurrentProcessIsDNF() == TRUE)
{
__asm
{
/* 如果是 DNF 进程调用的话,则调用已经被 TP Hook 的 NtOpenProcess */
jmp uTPHookedNtOpenProcessJmpAddr
}
}
__asm
{
/* 如果不是 DNF 进程调用的话,则调用 ntoskrnl.exe 中的 NtOpenProcess */
Call uOriginObOpenObjectByPointerAddr
Jmp uMyHookedNtOpenProcessJmpAddr
}
}
我现在基本能看懂上面的,也知道每一句是干嘛的,但是却编译不出来,求大神们帮帮忙,我想帮室友做做挂,想让她别玩太过了,衷心的感谢大家!! 展开
Void InstallPassTPNtOpenProcess()
{
Char szCode[7] =
{
(char)0xff,
(char)0x75,
(char)0xc8,
(char)0xff,
(char)0x75,
(char)0xdc,
(char)0xe8
};
/* 获取原生的 NtOpenProcess 和 ObOpenObjectByPointer 的地址 */
uOriginNtOpenProcessAddr=MmGetSystemFunAddress(L"NtOpenProcess");
uOriginObOpenObjectByPointerAddr=MmGetSystemFunAddress(L"ObOpenObjectByPointer");
/* 从 NtOpenProcess 这个地址开始搜索长度为 7 的特征码字符串,得到的地址将会被安装 InLine Hook */
uMyHookedNtOpenProcessAddr = SearchFeature(uOriginNtOpenProcessAddr, szCode, 7) - 7;
/* 计算出自定义 InLine Hook 的跳转地址 */
uMyHookedNtOpenProcessJmpAddr = uMyHookedNtOpenProcessAddr + B;
/* 计算出 TP InLine Hook 的跳转地址 */
uTPHookedNtOpenProcessJmpAddr = uMyHookedNtOpenProcessAddr + 6;
/* 安装一个 InLine Hook */
InstallInLineHook(uMyHookedNtOpenProcessAddr, (ULONG)InLineHookNtOpenProcess);
KdPrint(("Pass TP - NtOpenProcess Installed."));
}
/************************************************************************/
/* 自定义的 NtOpenProcess,用来实现 InLine Hook Kernel API
/************************************************************************/
NTSYSHOOKAPI void InLineHookNtOpenProcess()
{
__asm
push dword ptr [ebp-38]
push dword ptr [ebp-24]
}
/* 开始过滤 */
if(ValidateCurrentProcessIsDNF() == TRUE)
{
__asm
{
/* 如果是 DNF 进程调用的话,则调用已经被 TP Hook 的 NtOpenProcess */
jmp uTPHookedNtOpenProcessJmpAddr
}
}
__asm
{
/* 如果不是 DNF 进程调用的话,则调用 ntoskrnl.exe 中的 NtOpenProcess */
Call uOriginObOpenObjectByPointerAddr
Jmp uMyHookedNtOpenProcessJmpAddr
}
}
我现在基本能看懂上面的,也知道每一句是干嘛的,但是却编译不出来,求大神们帮帮忙,我想帮室友做做挂,想让她别玩太过了,衷心的感谢大家!! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询