var bbb:pointer;    bbb := VirtualAllocEx(h, nil, 10000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);    writeProcessMemory(h, Pointer(base1), @bbb, sizeof(bbb), tt);//这句可以    writeProcessMemory(h, Pointer(base2), pointer(integer(bbb)+300), sizeof(bbb), tt);//这句出错在哪里?为什么不行?我要将bbb+300的地址写入

解决方案 »

  1.   

    writeProcessMemory(h, Pointer(base1), @bbb, sizeof(bbb), tt);//这句可以
    为什么第三个参数要用@bbb?  bbb不已经是pointer了吗,再取地址就是指针存储的位置了
    还有sizeof(bbb)这个怎么理解呢  对一个pointer变量用sizeof好象没什么意义吧
      

  2.   

    bbb := VirtualAllocEx(h, nil, 10000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
        //比如得到bbb:=$0040000
        writeProcessMemory(h, Pointer(base1), @bbb, sizeof(bbb), tt);//这句可以
        //将$0040000写入到 base1
        writeProcessMemory(h, Pointer(base2), pointer(integer(bbb)+300), sizeof(bbb), tt);
        //将$0040000+300 写入到 base2第二句可以成功写入地址,第三句写入的地址不正确,为什么?