本帖最后由 苏紫方璇 于 2023-12-30 21:08 编辑
这是用NtQuerInformationProcess函数编写反调试的 途中的错误是什么意思呀??忽略异常的话程序可以正常执行
下面是代码
////////////////////////////////////////////////////////////////////////////////
[C++] 纯文本查看 复制代码 #include <iostream>
#include <windows.h>
typedef NTSTATUS (*_NtQueryInformationProcess)(
IN HANDLE ProcessHandle, // 进程句柄
IN DWORD InformationClass, // 信息类型
OUT PVOID ProcessInformation, // 缓冲指针
IN ULONG ProcessInformationLength, // 以字节为单位的缓冲大小
OUT PULONG ReturnLength OPTIONAL // 写入缓冲的字节数
);
int main()
{
_NtQueryInformationProcess NtQueryInformationProcess;
DWORD processInformation=0;
HMODULE dllhand = LoadLibrary("ntdll.dll");
if (dllhand == 0)
printf("erro=%d", GetLastError());
NtQueryInformationProcess = (_NtQueryInformationProcess)GetProcAddress(dllhand, "NtQueryInformationProcess");
if (NtQueryInformationProcess == 0)
printf("erro=%d", GetLastError());
NtQueryInformationProcess(GetCurrentProcess(),7,&processInformation,sizeof(DWORD),NULL);
if (processInformation != 0)
printf("正在调试中");
else
printf("正常运行中");
system("pause");
return 0;
} |