我调用WriteProcessMemory改写可执行模块的IAT,但很多情况下,WriteProcessMemory调用失败,系统错误码183。为什么会这样?怎样才能确保WriteProcessMemory一定成功?急救!!!!

解决方案 »

  1.   

    用WriteProcessMemory()写之前,用VirtualQueryEx()检查该地址的保护属性
      

  2.   

    楼上两位写过API HOOK 吗?有什么方法HOOK Console Application
      

  3.   

    我听说Win2000SP3下这个函数有问题,不知道真的假的。
      

  4.   

    DWORD dwOldProtect;
    VirtualProtect(ppfn,sizeof(pfnNew),PAGE_READWRITE,&dwOldProtect);
    WriteProcessMemory(GetCurrentProcess(), ppfn, &pfnNew,
             sizeof(pfnNew), NULL);
    VirtualProtect(ppfn,sizeof(pfnNew),dwOldProtect,0);
      

  5.   

    DWORD dwOldProtect;
    VirtualProtect(ppfn,sizeof(pfnNew),PAGE_READWRITE,&dwOldProtect);
    WriteProcessMemory(GetCurrentProcess(), ppfn, &pfnNew,
             sizeof(pfnNew), NULL);
    VirtualProtect(ppfn,sizeof(pfnNew),dwOldProtect,0);