首页
社区
课程
招聘
[讨论]在win11下使用CreateRemoteThread注入时出现拒绝访问
发表于: 2025-7-9 17:18 719

[讨论]在win11下使用CreateRemoteThread注入时出现拒绝访问

2025-7-9 17:18
719

我在win11下使用CreateRemoteThread函数注入时,GetLastError返回5(拒绝访问),注入程序和目标程序都是生成的32位release版本,在运行注入程序时使用了管理员权限,但还是不行。我将这两个文件放到win10的虚拟机中进行测试,结果发现是能够注入成功的。有没有大佬知道怎么解决win11中出现的拒绝访问问题。代码如下:

// 注入程序
#include <Windows.h>
#include <assert.h>
#include <iostream>
using namespace std;

BOOL SetProcessPrivilege(const char* lpName, BOOL opt)
{
	HANDLE hToken;
	TOKEN_PRIVILEGES tpNewState;
	if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
	{
		LookupPrivilegeValueA(NULL, lpName, &tpNewState.Privileges[0].Luid);
		tpNewState.PrivilegeCount = 1;
		tpNewState.Privileges[0].Attributes = opt != 0 ? 2 : 0;
		cout << GetLastError() << endl;
		BOOL atp = AdjustTokenPrivileges(hToken, FALSE, &tpNewState, sizeof(tpNewState), NULL, NULL);
		cout << GetLastError() << endl;
		CloseHandle(hToken);
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}

void RemoteCall00()
{
	cout << "RemoteCall00..." << endl;
	DWORD pid, tid;
	ULONG addrCall;
	cin >> pid >> hex >> addrCall;		// 方便调试,手动输入进程ID
	HANDLE hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION 
		| PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, 0, pid);
	assert(hProcess != NULL);
	cout << "pid = " << pid << endl;
	cout << GetLastError() << endl;    // 输出 0
	CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)addrCall, NULL, 0, 0);
	cout << GetLastError() << endl;	   // 输出 5
}

int main()
{
	SetProcessPrivilege("SeDebugPrivilege", 1);
	RemoteCall00();
	system("pause");
}
// 目标程序
#include <iostream>
using namespace std;

void Call00()
{
    cout << hex << Call00 << ",Call00: 无参数,行号:" << dec << __LINE__ << endl;
}
void Call01(int i)
{
	cout << hex << Call01 << ",Call00: 1参数,行号:" << dec << __LINE__ << endl;
}
void Call02(int a, int b)
{
	cout << hex << Call02 << ",Call00: 2参数,行号:" << dec << __LINE__ << endl;
}
void Call03(int a, int b, int c)
{ 
	cout << hex << Call03 << ",Call00: 3参数,行号:" << dec << __LINE__ << endl;
}

int main()
{
	Call00();
	Call01(1);
	Call02(1, 2);
	Call03(1, 2, 3);
	while (1) getchar();
    return 0;
}




[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 147
活跃值: (766)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
打开进程时,把权限拉满试试呢
2025-7-10 13:56
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
huangmo 打开进程时,把权限拉满试试呢
没搞的出来,放弃win11装了win10先继续学其他的了
2025-7-11 08:51
0
雪    币: 505
活跃值: (683)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
装杀毒软件没?
2025-7-11 09:19
0
雪    币: 1440
活跃值: (1522)
能力值: ( LV3,RANK:23 )
在线值:
发帖
回帖
粉丝
5

addrCall 是输入了什么地址呢

最后于 2025-7-11 09:33 被Black貓①呺编辑 ,原因:
2025-7-11 09:27
0
雪    币: 2799
活跃值: (12052)
能力值: (RANK:385 )
在线值:
发帖
回帖
粉丝
6

CreateRemoteThread不行试试NtCreateThreadEx函数

给个我之前博客链接.看下对你有帮助没:

NtCreateThreadEx函数注入学习

2025-7-11 10:01
0
雪    币: 167
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
现在咋样了有查出来是啥问题吗
2025-7-11 23:56
0
游客
登录 | 注册 方可回帖
返回