[英]Writing process memory without WriteProcessMemory
我正在尝试在不使用WriteProcessMemory()
函数的情况下编写另一个进程内存。
我正在调用VirtualAllocEx()
以使用CreateRemoteThread()
将数据传递给我的线程。
WriteMemoryInfo* m = (WriteMemoryInfo*)VirtualAllocEx(
hProc,
NULL,
1024,
MEM_COMMIT | MEM_RESERVE,
PAGE_READWRITE
);
m->addr = FinalAddress; // Problem
m->data = Data; // Problem
m->length = Size; // Problem
HANDLE threadID = CreateRemoteThread(
hProc,
NULL,
0,
(LPTHREAD_START_ROUTINE)RemoteThread,
m,
NULL,
NULL
);
问题是,我无法使用VirtualAllocEx()
写入新创建的内存,因为它不属于我的进程。 解决方案是在这个内存上使用WriteProcessMemory()
,但这是我正在做的功能。
如何在没有WriteProcessMemory()
情况下初始化此内存( m
变量WriteProcessMemory()
?
CreateRemoteThread()
和VirtualAllocEx(
) 将被归类为与WriteProcessMemory()
一样有风险,如果您正在使用这些,您也可以使用WriteProcessMemory()
。
CreateRemoteThread()
的lpParameter
参数采用一个指向要传递给函数的变量的指针。
如果您不想使用WriteProcessMemory()
您可以使用命令行参数启动进程,将您想用于lpParameter
任何内容作为命令行参数传递。 它会存在于目标进程中,但进程将忽略它。
然后,您可以对该变量进行模式扫描以获取地址,然后将此地址作为lpParameter
变量传递。
我的朋友 timb3r 与我分享了这个巧妙的技巧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.