WriteProcessMemory第四个参数大小如何确定?
WriteProcessMemory(handle, pRemoteThread, &threadProc, dwThreadSize, 0)
如果threadProc 是函数或者线程,怎么确定大小dwThreadSize?

解决方案 »

  1.   

    在32位系统中的话地址是4字节的,threadProc属于一个地址,所以dwThreadSize是4
      

  2.   

    你写入threadProc这个值的目的是什么,替换目标进程的调用CALL?还是想把你的代码放到目标进程中执行?
      

  3.   

    BOOL WINAPI WriteProcessMemory(
      __in   HANDLE hProcess,
      __in   LPVOID lpBaseAddress,
      __in   LPCVOID lpBuffer,
      __in   SIZE_T nSize,
      __out  SIZE_T* lpNumberOfBytesWritten
    );nSize 
    The number of bytes to be written to the specified process.
      

  4.   

    VirtualAllocEx 先在目标程序申请内存要保证比你要写入的代码大,代码不多的话就申请1024字节。
    然后从VirtualAllocEx返回的地址
    WriteProcessMemory(目标进程,VirtualAllocEx返回的地址,你的函数地址,1024,NULL)。
    然后在CreateRemoteThread远程调用这个VirtualAllocEx返回的地址。但是这样不能保证代码能够正确执行,最好是采用DLL注入方式,因为DLL注入能够重定位代码。
      

  5.   

    如果我想把sendmessageA参数写到WriteProcessMemory中,
    HWND用FINDWINDOWS获得,
    MSG为WM_CLOSE,
    其他两个都是0,调用CreateRemoteThread执行函数,为什么没有反应呢?如果只用findwindows和sendmessage是可以关闭的,为什么用远程调用不行呢?