角色基址: 0x00f1ded4
  角色名称XX后得到偏移是 0x114 
   
  基址+0x114 得到的结果是角色的名称的地址还是名称的首地址呢?  
  如果是直接得到保存角色名称的地址的话我应该直接取出来就行了啊,但是取不出来,得到的是乱码。 
  所以我就有疑问,这个基址+0x114是不是只得到了这个名称的首地址,我还要把字符一个一个的取出来
  

解决方案 »

  1.   

            HWND hwnd=::FindWindow(NULL,"SRO_Client");
    DWORD Pid;
    ::GetWindowThreadProcessId(hwnd,&Pid);
    HANDLE processH=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
            DWORD byread;
    DWORD dwbase=0x00f1ded4; //角色基址
    DWORD dwPtr;
    char  c[100];
    ::ReadProcessMemory(processH,(LPVOID)dwbase,&dwPtr,sizeof(dwPtr),&byread);
    ::ReadProcessMemory(processH,(LPVOID)(dwPtr+0x114),(LPVOID)&c,sizeof(c),&byread); //+458得到的是血值
             m_name=c;
    UpdateData(false); //我的代码是这样的,游戏里面的角色名是“完美”
    但是得到的乱码是显示在编辑框里 "孾?"
      

  2.   

    我新建了一个角色  全是英文名 ltm 
    m_name=c; 这样只能获取第一个字母 l
      

  3.   

    指针只显示首字节,所以你名称已经获取到了,
    char c[100]; 这个最好初始化一下
    char c[100] = {0};然后打印出来
    print("name = %s", c);