看流星社区

 找回密码
 注册账号
查看: 2919|回复: 4

找到了游戏的基地址,可在偏移的时候却读不出来

[复制链接]

该用户从未签到

发表于 2011-3-24 10:23:36 | 显示全部楼层 |阅读模式
摸素了很长时间今天终于看了一个武林找基址的视频,也学会了。  
兴冲冲的上游戏,一番折腾后找到了地址。可是读不出来。  
过来人拉我一把,感谢你半辈子。  

试了很多种办法了。实在得喊人救命了。
  1. # TCHAR    szNaGame1[] = TEXT("游戏未启动");
  2. # TCHAR    szNaGame2[] = TEXT("游戏已启动");
  3. # TCHAR    szText[20];
  4. # UINT        pGameI = 0x9889B8;
  5. # UINT        *pGame = (UINT *)(((pGameI+0x1c)+0x24)+0x260);
  6. # HWND    hwnd2;
  7. # DWORD  dword,dowrd2;
  8. # HANDLE  handle;
  9. #
  10. # hwnd2 = FindWindow(NULL,TEXT("Element Client"));
  11. # GetWindowThreadProcessId(hwnd2,&dword);
  12. # handle = OpenProcess(PROCESS_ALL_ACCESS,0,dword);
  13. # ReadProcessMemory(handle,pGame,&iPeGame,4,&dword2);
  14. #
  15. # if (hwnd2)
  16. # {
  17. #     TextOut(hdc,20,35,szNaGame2,lstrlen(szNaGame2));
  18. # }
  19. # else
  20. # {
  21. #     TextOut(hdc,20,35,szNaGame1,lstrlen(szNaGame1));
  22. # }
  23. #
  24. # TextOut(hdc,20,60,szText,wsprintf(szText,TEXT("人物血量:%i"),iPeGame));
复制代码

该用户从未签到

发表于 2011-3-24 10:23:53 | 显示全部楼层
ReadProcessMemory(handle,pGame,&iPeGame,4,&dword2);  /读内存的API最后一个参数你没有给值一般用默认值0的, 而你给了只是一个变量
楼主大部分是用指针来操作的
如果不熟练的情况最好不用哈
要不出了错也找不到原因的起头的
要是我的做法肯定会照着一天一天的写法去写一次能否读出来了
再慢慢解决算法的问题

该用户从未签到

发表于 2011-3-24 10:24:19 | 显示全部楼层
还有你判断下handle 这个
是否拿到了句柄
一步步检测下  
我有次不小心把PROCESS_ALL_ACCESS
声明常量 的时候少写了个 F  
最后一步步检测 是没找到句柄

该用户从未签到

 楼主| 发表于 2011-3-24 10:26:04 | 显示全部楼层
看起来就是这句有问题
UINT       *pGame = (UINT *)((((pGameI)+0x1c)+0x24)+0x260);

我按你的方法把每步都加了判断
把代码修改成这样

  1.    1. hwnd2 = FindWindow(NULL,TEXT("Element Client"));
  2.    2. if (!GetWindowThreadProcessId(hwnd2,&dword))
  3.    3. {
  4.    4.     MessageBox (NULL,TEXT("获取进程ID失败"),TEXT("win"), MB_ICONERROR) ;
  5.    5. }
  6.    6.        
  7.    7. if (!OpenProcess(PROCESS_ALL_ACCESS,0,dword))
  8.    8. {
  9.    9.     MessageBox (NULL,TEXT("打开进程失败"),TEXT("win"), MB_ICONERROR) ;
  10.   10. }
  11.   11. handle = OpenProcess(PROCESS_ALL_ACCESS,0,dword);
  12.   12. if (!ReadProcessMemory(handle,pGame,&iPeGame,4,&dword2))
  13.   13. {
  14.   14.     MessageBox (NULL,TEXT("内存读取失败"),TEXT("win"), MB_ICONERROR) ;
  15.   15. }
复制代码
我却看到 内存读取失败。然后我把Element Client该成了QQ游戏 - 连连看角色版把0x9889B8改成00B596C8就可以顺利的便宜并运行。而且也读到了数据了。就是指针偏移那里了。谁帮我看看。实在没招了

该用户从未签到

发表于 2011-3-24 10:26:18 | 显示全部楼层
你的注入方式是dll注入还是远程注入,我只会dll注入,然后才用指针读取,估计你这个是远程注入却用指针,远程好像是用ReadProcessMemory的,得读好几次偏移才行
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-27 23:34

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表