一个进程可以用4GB的私有空间,可以我们可以通过OpenProcess和VirtualAllocEx函数
来操作另一个进程的内存,请问:进程的4GB都是私有的吗?如果是,怎么还能
操作另一个进程的内存?

解决方案 »

  1.   

    是私有的, 私有属于某个进程的而VirtualAllocEx正是针对某个进程的LPVOID VirtualAllocEx(
      HANDLE hProcess,          // process to allocate memory
      LPVOID lpAddress,         // desired starting address 
      SIZE_T dwSize,            // size of region to allocate
      DWORD flAllocationType,   // type of allocation
      DWORD flProtect           // type of access protection
    );
      

  2.   

    是私有的,所谓私有就是不能通过常规方法,直接通过地址访问进程内存
    但是Windows也提供了一些函数专门访问这些私有地址空间WriteProcessMemory ReadProcessMemory VirtualAllocEx CreateRemoteThread 等等
      

  3.   

    通过正常的地址访问不行,所以要使用操作系统提供的一些API 来访问。
      

  4.   

    那如果两个进程共享DLL,那这个DLL是在哪个进程内呢?
      

  5.   

    dll会映射到系统内存中,然后2个进程在将地址映射到自己的地址空间中,从而节省内存,DLL在2个进程中,或都不在2个进程中