首页
社区
课程
招聘
[求助]关于win11 24h2傀儡进程出错的求助,求各位大佬看看
发表于: 2天前 1959

[求助]关于win11 24h2傀儡进程出错的求助,求各位大佬看看

2天前
1959

升级后win11 24h2后,64位傀儡进程报错0xc00000141。32位没有问题。具体为恢复进程ResumeThread调用后报错。找了半天实在是找不到报错原因,哪位大佬能解决,测试代码在附件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdio.h>
#include <Windows.h>
 
 
void WINAPI TestFunc()//程序真实入口
{
    printf("hello world\n");
    system("pause");
    return ;
}
 
int  main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
     
     
#ifdef _WIN64
     
    wchar_t wszIePath[] = L"cmd";//傀儡进程路径
    STARTUPINFOW StartupInfo = { 0 };
    StartupInfo.cb = sizeof(StartupInfo);
    PROCESS_INFORMATION ProcessInformation{ 0 };
    CreateProcessW(NULL, wszIePath, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &StartupInfo, &ProcessInformation);
 
    CONTEXT ThreadCxt;
    ThreadCxt.ContextFlags = CONTEXT_FULL;
    GetThreadContext(ProcessInformation.hThread, &ThreadCxt);
 
    HMODULE hModuleBase = GetModuleHandleA(NULL);
    PIMAGE_DOS_HEADER pDosHdr = (PIMAGE_DOS_HEADER)hModuleBase;
    PIMAGE_NT_HEADERS pNtHdr = (PIMAGE_NT_HEADERS)((LPBYTE)hModuleBase + pDosHdr->e_lfanew);
    DWORD dwImageSize = pNtHdr->OptionalHeader.SizeOfImage;
 
    HMODULE OldModuleBase = 0;
    ReadProcessMemory(ProcessInformation.hProcess, (LPVOID)(ThreadCxt.Rdx + 0x10), &OldModuleBase, sizeof(OldModuleBase), NULL);
    typedef NTSTATUS(__stdcall* pfnZwUnmapViewOfSection)(IN HANDLE ProcessHandle, IN LPVOID BaseAddress);
    
    pfnZwUnmapViewOfSection ZwUnmapViewOfSection = (pfnZwUnmapViewOfSection)GetProcAddress(GetModuleHandleA("ntdll.dll"), "ZwUnmapViewOfSection");
    ZwUnmapViewOfSection(ProcessInformation.hProcess, OldModuleBase);
 
    LPVOID lpAlloAddr = VirtualAllocEx(
        ProcessInformation.hProcess,    //需要在其中分配空间的进程的句柄.
        hModuleBase,    //想要获取的地址区域.
        dwImageSize,    //要分配的内存大小.
        MEM_RESERVE | MEM_COMMIT,//内存分配的类型
        PAGE_EXECUTE_READWRITE   //内存页保护.
    );
 
    WriteProcessMemory(ProcessInformation.hProcess, hModuleBase, hModuleBase, dwImageSize, NULL);
    WriteProcessMemory(ProcessInformation.hProcess, (LPVOID)(ThreadCxt.Rdx + 0x10), &hModuleBase, sizeof(hModuleBase), NULL);
    ThreadCxt.ContextFlags = CONTEXT_FULL;
    ThreadCxt.Rcx = (DWORD64)TestFunc;
    SetThreadContext(ProcessInformation.hThread, &ThreadCxt);
//恢复进程这里开始出错,24h2报错0xc00000141
    ResumeThread(ProcessInformation.hThread);
 
#endif
 
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 282
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
win11 24h2以下系统版本运行都完全无问题
2天前
0
雪    币: 282
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哪位大佬可以解决有偿
2天前
0
雪    币: 282
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
解决有偿
1天前
0
雪    币: 341
活跃值: (1005)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
看看是不是这个硬编码(ThreadCxt.Rdx + 0x10)有问题
1小时前
0
游客
登录 | 注册 方可回帖
返回
//