大家帮忙看下C++
本帖最后由 苏紫方璇 于 2023-12-30 21:08 编辑这是用NtQuerInformationProcess函数编写反调试的 途中的错误是什么意思呀??忽略异常的话程序可以正常执行
下面是代码
////////////////////////////////////////////////////////////////////////////////
#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;
DWORDprocessInformation=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;
} 报的堆栈问题,估计是你api声明的调用规则不正确,加个winapi试一下 不懂c++呀 typedef NTSTATUS WINAPI (*_NtQueryInformationProcess)
加一个WINAPI试试。错误提示函数调用方式不对,导致栈指针不对 64位的话,可以直接运行。你32位的话,加上winapi。这啥年代了,你怎么还搞32位的 不懂c++
32位的有点老了 我只会写
#include <iostream>
int main()
{
std::cout<<"我喜欢C++\n";
int x;
std::cin>>x;
std::cout<<x;
return 0;
} zgchenhc 发表于 2023-12-27 08:38
我只会写
#include
int main()
至少你还用cout,我c++还在用printf{:1_918:} w759003376 发表于 2023-12-27 09:28
至少你还用cout,我c++还在用printf
我也觉得printf好事:lol
页:
[1]
2