首页
论坛
课程
招聘
未解决 [求助]解决在Win10x64下面傀儡进程无法调起的问题 300.00元
2019-7-27 06:24 4675

未解决 [求助]解决在Win10x64下面傀儡进程无法调起的问题 300.00元

2019-7-27 06:24
4675
感谢下面大神sudozhange的贴子
https://bbs.pediy.com/thread-224706.htm
我从github上面下载项目编译正常。但如果用系统进程类似svchost 做为傀儡进程则无法调起我的进程。
出错提示如下:

多运行几次有时候可以跳过这里,会报另外的错误:

搞了几个通宵了,没有头绪了,还请大家帮忙找一下问题。

[公告]春风十里不如你,看雪团队诚邀你的加入!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (17)
雪    币: 230
活跃值: 活跃值 (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
handeliang 活跃值 2019-7-29 02:26
2
0
顶上去,别沉了
雪    币: 8865
活跃值: 活跃值 (3456)
能力值: ( LV12,RANK:252 )
在线值:
发帖
回帖
粉丝
一半人生 活跃值 4 2019-7-29 08:09
3
0
这个钱,帮你顶顶
雪    币: 210
活跃值: 活跃值 (352)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
sudozhange 活跃值 5 2019-7-29 09:32
4
0
1、错误码487的问题:导致这个错误码出现的原因,是使用VirtualAlloc函数时,指定地址后预留的空间不足,比如我想在a地址后分配8M内存,而a地址后,只有4M就对造成该错误。你可以尝试使用while循环,判断函数返回值,如果第一次申请失败,第二次申请时,更换申请的地址。
2、0xc0000142的问题:该项目我在当时使用的也是Win 10 x64下编写的,我不确定是否和字符编码有关设置或者说与编译的程序有关,如果有虚拟机条件的话,可以尝试在虚拟机中运行,我这里缺少vc库,运行失败了,你的vs版本应该是2015之后的。你可以看下该问题在其他软件中的解决方式(Google错误码)。
雪    币: 198
活跃值: 活跃值 (69)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
黑白条纹 活跃值 2019-7-29 11:07
5
0
地址无效 看看VirtualAllocEx那个参数是否有效 应该是PEB根本不让你去开辟 可以试试把第二个参数置NULL 然后再一步定位问题,检查你的地址
雪    币: 1675
活跃值: 活跃值 (519)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yegu 活跃值 2019-8-6 23:24
6
0
handeliang 顶上去,别沉了
搞定了吗?
雪    币: 230
活跃值: 活跃值 (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
handeliang 活跃值 2019-8-7 15:00
7
0
yegu 搞定了吗?
没有搞定。
雪    币: 230
活跃值: 活跃值 (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
handeliang 活跃值 2019-8-7 15:01
8
0
黑白条纹 地址无效 看看VirtualAllocEx那个参数是否有效 应该是PEB根本不让你去开辟 可以试试把第二个参数置NULL 然后再一步定位问题,检查你的地址
试过改成NULL,程序一样的跑不起的
雪    币: 230
活跃值: 活跃值 (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
handeliang 活跃值 2019-8-7 15:07
9
0
sudozhange 1、错误码487的问题:导致这个错误码出现的原因,是使用VirtualAlloc函数时,指定地址后预留的空间不足,比如我想在a地址后分配8M内存,而a地址后,只有4M就对造成该错误。你可以尝试使用wh ...
我的IDE环境是Win10 1903 x64 + VS2013,用while可以解决487错误,但会出现Write Headers Error. 程序仍然跑不起来。
雪    币: 210
活跃值: 活跃值 (352)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
sudozhange 活跃值 5 2019-8-8 10:37
10
0
handeliang 我的IDE环境是Win10 1903 x64 + VS2013,用while可以解决487错误,但会出现Write Headers Error. 程序仍然跑不起来。
这个错误提示应该是程序内部我自己写的,你可以看下提示附近的判断的代码
雪    币: 1277
活跃值: 活跃值 (10)
能力值: ( LV8,RANK:126 )
在线值:
发帖
回帖
粉丝
小将 活跃值 2019-8-8 10:57
11
0
0xc0000142这个是子系统问题,svchost是win32的。如果你用的是console程序,你可以试试win32的。
雪    币: 30
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
laassue 活跃值 2019-11-11 08:21
12
0
NtUnmapViewSection注释掉,不要卸载进程的原内存,直接申请一段随机地址的内存,然后修复重定位,重置基址和入口点
雪    币: 3636
活跃值: 活跃值 (453)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MsScotch 活跃值 2019-11-11 10:07
13
0
laassue NtUnmapViewSection注释掉,不要卸载进程的原内存,直接申请一段随机地址的内存,然后修复重定位,重置基址和入口点
正解
雪    币: 0
活跃值: 活跃值 (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
三爷Alex 活跃值 2020-4-13 02:03
14
0
和你一样的问题,在win7下一切正常,在win10上就会出现487错误。 请问你解决了吗?
雪    币: 71
活跃值: 活跃值 (337)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
killpy 活跃值 2 2020-4-13 08:00
15
0
有点意思
雪    币: 145
活跃值: 活跃值 (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Niceto 活跃值 2020-6-24 20:22
16
1
int  WINAPI TestFunc()//程序真实入口
{
	
	return 1;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	wchar_t wszIePath[] = L"mstsc.exe";//傀儡进程路径
	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 | CONTEXT_DEBUG_REGISTERS;
	GetThreadContext(ProcessInformation.hThread, &ThreadCxt);

	HMODULE hModuleBase = GetModuleHandleA(NULL);
	PIMAGE_DOS_HEADER pDosHdr = (PIMAGE_DOS_HEADER)hModuleBase;
	PIMAGE_NT_HEADERS pNtHdr = (PIMAGE_NT_HEADERS)((uint64_t)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);
	ResumeThread(ProcessInformation.hThread);
}

64位傀儡自运行 很多包含精髓 自用的 往楼主采纳 EXE使用 MT模式编译


 

雪    币: 304
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
鬥魚 活跃值 2021-2-18 18:30
17
0
Niceto int  WINAPI TestFunc()//程序真实入口 { return 1; } int&n ...
太感谢了 ,学到这卡了几天了,感谢,感谢!
雪    币: 205
活跃值: 活跃值 (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mayafei 活跃值 2021-3-8 11:13
18
0
x64系统下x86的loader启动x86的傀儡,需要用Wow64GetThreadContext,直接用GetThreadContext会取到错误的上下文,具体原因我也不知道
游客
登录 | 注册 方可回帖
返回