怎么使用 WriteProcessMemory 把自己的程序注入到 游戏里
如何使用 WriteProcessMemory 把自己的程序注入到 游戏里
这是网上的一个文章片段,是用Delphi 写的。
他写的这一行,我怎么看不懂泥 WriteProcessMemory(Hid, ThreadAdd,FunName, 128, WriteCount);//将要注入的过程写到上面建立的内存空间中。 FunName 是什么玩意? ??????????? 是一个函数名???? 用C++builder怎么写?
function TForm1.InsterGameFun(Hid:cardinal;FunName:pointer):cardinal;
var
{要注入线程的窗口句柄和临时存放的句柄}
TmpHandle: THandle;
ThreadID: Thandle;
ThreadAdd:pointer;
WriteCount: DWORD;
begin
ThreadAdd := VirtualAllocEx(Hid, nil, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);//在目标进程建立内存空间
WriteProcessMemory(Hid, ThreadAdd,FunName, 128, WriteCount);//将要注入的过程写到上面建立的内存空间中
TmpHandle := CreateRemoteThread(Hid, nil, 0, ThreadAdd, nil, CREATE_SUSPENDED, ThreadID);//获得注入后过程的句柄ID
result:=TmpHandle;//返回句柄ID
end;
------解决方案--------------------
VitualAllocEx申请内存空间,必须MEM_COMMIT类型。
WriteProcessMemory在刚申请的空间上填充信息,就是你想执行的那块程序。这里的FunName是函数名的话也就代表了一个地址。
CreateRemoteThread新建一个线程。
------解决方案--------------------
现在游戏都有NP保护想直接使用WriteProcessMemory方式估计非常难以办到,在没有使用驱动的情况下要想完成就得下点功夫了,从系统在启动进程过程中动手脚吧。认真观察很容易可以找到突破点的
这是网上的一个文章片段,是用Delphi 写的。
他写的这一行,我怎么看不懂泥 WriteProcessMemory(Hid, ThreadAdd,FunName, 128, WriteCount);//将要注入的过程写到上面建立的内存空间中。 FunName 是什么玩意? ??????????? 是一个函数名???? 用C++builder怎么写?
function TForm1.InsterGameFun(Hid:cardinal;FunName:pointer):cardinal;
var
{要注入线程的窗口句柄和临时存放的句柄}
TmpHandle: THandle;
ThreadID: Thandle;
ThreadAdd:pointer;
WriteCount: DWORD;
begin
ThreadAdd := VirtualAllocEx(Hid, nil, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);//在目标进程建立内存空间
WriteProcessMemory(Hid, ThreadAdd,FunName, 128, WriteCount);//将要注入的过程写到上面建立的内存空间中
TmpHandle := CreateRemoteThread(Hid, nil, 0, ThreadAdd, nil, CREATE_SUSPENDED, ThreadID);//获得注入后过程的句柄ID
result:=TmpHandle;//返回句柄ID
end;
------解决方案--------------------
VitualAllocEx申请内存空间,必须MEM_COMMIT类型。
WriteProcessMemory在刚申请的空间上填充信息,就是你想执行的那块程序。这里的FunName是函数名的话也就代表了一个地址。
CreateRemoteThread新建一个线程。
------解决方案--------------------
现在游戏都有NP保护想直接使用WriteProcessMemory方式估计非常难以办到,在没有使用驱动的情况下要想完成就得下点功夫了,从系统在启动进程过程中动手脚吧。认真观察很容易可以找到突破点的