我想在我的Dll中访问Dll自己在内存中的空间,怎么实现呢
WriteProcessMemory我试过了,总是返回0,不成功

解决方案 »

  1.   

    什么意思?
    dll本来就有自己的内存空间
      

  2.   

    内存有保护属性的.比如PAGE_READ属性就不能写.
    先用VirtualProtect修改属性.再写.
      

  3.   

    我想在DLL中写DLL自己占用的某个空间,比如我在DLL中先定义了一个空函数,然后在运行的时候再补全它
    我这样操作的:
    OpenProcess
    VirtualProtect
    WriteProtectMemory
    可以VirtualProtct和WriteProtectMemory都返回的0,执行不成功
    请问我还需要做什么吗? 
      

  4.   

    SMC好像是游戏什么的吧
    我不是做这个的,而是别的用途,呵呵
    谢谢大家的关注!
      

  5.   

    各位高手帮忙啊
    我的代码是这样的:
    cddid = GetCurrentThreadId(); //我想获得DLL自己的ID,这样对吗,我已经知道了本DLL的句柄,还有其他的方法获得ID吗
    m_handle = OpenProcess(PROCESS_VM_WRITE | PROCESS_ALL_ACCESS ,FALSE,cddid);
      //OpenProcess总是不成功,返回错误码87,参数错误,怎么改啊? VirtualQuery(ChangeAddr_P,&mbi,sizeof(MEMORY_BASIC_INFORMATION));
    sret = VirtualProtect(mbi.BaseAddress,mbi.RegionSize,PAGE_READWRITE,&mbi.Protect);
    sret = WriteProcessMemory(hInst,ChangeAddr_P,buffx,sizeof(buffx),returnp);
      

  6.   

    什么意思?
    你在dll中声明BYTE data{100};
    不就是自己的吗。再弄个函数操作它,供别人调用
      

  7.   

    我想实现这个功能:在DLL执行时动态改变一个函数的功能,DLL执行时,DLL文件应该是不可以访问的吧
    我想在DLL文件调入内存时,改变内存中DLL中某个函数的代码,让它实现其他的功能
    也就是说在DLL执行时改变内存中自己的执行代码,应该调用哪些API呢?