能力值:
( LV2,RANK:10 )
|
-
-
2 楼
顶上去,别沉了
|
能力值:
( LV12,RANK:312 )
|
-
-
3 楼
这个钱,帮你顶顶
|
能力值:
( LV13,RANK:405 )
|
-
-
4 楼
1、错误码487的问题:导致这个错误码出现的原因,是使用VirtualAlloc函数时,指定地址后预留的空间不足,比如我想在a地址后分配8M内存,而a地址后,只有4M就对造成该错误。你可以尝试使用while循环,判断函数返回值,如果第一次申请失败,第二次申请时,更换申请的地址。 2、0xc0000142的问题:该项目我在当时使用的也是Win 10 x64下编写的,我不确定是否和字符编码有关设置或者说与编译的程序有关,如果有虚拟机条件的话,可以尝试在虚拟机中运行,我这里缺少vc库,运行失败了,你的vs版本应该是2015之后的。你可以看下该问题在其他软件中的解决方式(Google错误码)。
|
能力值:
(RANK:10 )
|
-
-
5 楼
地址无效 看看VirtualAllocEx那个参数是否有效 应该是PEB根本不让你去开辟 可以试试把第二个参数置NULL 然后再一步定位问题,检查你的地址
|
能力值:
( LV7,RANK:105 )
|
-
-
6 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
黑白条纹
地址无效 看看VirtualAllocEx那个参数是否有效 应该是PEB根本不让你去开辟 可以试试把第二个参数置NULL 然后再一步定位问题,检查你的地址
试过改成NULL,程序一样的跑不起的
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
sudozhange
1、错误码487的问题:导致这个错误码出现的原因,是使用VirtualAlloc函数时,指定地址后预留的空间不足,比如我想在a地址后分配8M内存,而a地址后,只有4M就对造成该错误。你可以尝试使用wh ...
我的IDE环境是Win10 1903 x64 + VS2013,用while可以解决487错误,但会出现Write Headers Error. 程序仍然跑不起来。
|
能力值:
( LV13,RANK:405 )
|
-
-
10 楼
handeliang
我的IDE环境是Win10 1903 x64 + VS2013,用while可以解决487错误,但会出现Write Headers Error. 程序仍然跑不起来。
这个错误提示应该是程序内部我自己写的,你可以看下提示附近的判断的代码
|
能力值:
( LV8,RANK:126 )
|
-
-
11 楼
0xc0000142这个是子系统问题,svchost是win32的。如果你用的是console程序,你可以试试win32的。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
NtUnmapViewSection注释掉,不要卸载进程的原内存,直接申请一段随机地址的内存,然后修复重定位,重置基址和入口点
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
laassue
NtUnmapViewSection注释掉,不要卸载进程的原内存,直接申请一段随机地址的内存,然后修复重定位,重置基址和入口点
正解
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
和你一样的问题,在win7下一切正常,在win10上就会出现487错误。 请问你解决了吗?
|
能力值:
( LV8,RANK:130 )
|
-
-
15 楼
有点意思
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
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模式编译
|
能力值:
( LV1,RANK:0 )
|
-
-
17 楼
Niceto
int WINAPI TestFunc()//程序真实入口
{
return 1;
}
int&n ...
太感谢了 ,学到这卡了几天了 ,感谢,感谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
x64系统下x86的loader启动x86的傀儡,需要用Wow64GetThreadContext,直接用GetThreadContext会取到错误的上下文,具体原因我也不知道
|
能力值:
( LV1,RANK:0 )
|
-
-
19 楼
马克一下 同遇到问题
|
能力值:
( LV1,RANK:0 )
|
-
-
20 楼
同样的问题,解决了吗?
|
|
|