本帖最后由 wxr1224 于 2025-7-8 12:18 编辑
通过游戏学习指针系列3编写代码读取游戏血值(引入指针中的*和&的活用) 一.让地址定起来 通过前面两次课,搜到的血值每个人搜到的地址不一样 002F7B94 002F7B98 ﹉ 0F9E074E 实践:1在地址上按右键------点击谁在访问(Find out what accesses this address)------yes ------此时出来一串复制下来------ 00FA86C4 - 89 4D FC - mov [ebp-04],ecx 00FA86C7 - 8B 45 FC - mov eax,[ebp-04] 00FA86CA - 8B 80 26070000 - mov eax,[eax+00000726] << 00FA86D0 - 8B E5 - mov esp,ebp 00FA86D2 - 5D - pop ebp
EAX=00000023 EBX=00000000 ECX=0F9E0020 EDX=0125111C ESI=000B4DC2 EDI=00000000 ESP=0030EC08 EBP=0030EC0C EIP=00FA86D0 ------查找ECX的值:0F9E0020(勾选Hex------数据类型选4字节------粘贴此值0F9E0020)-------点first scan-------找到第一个绿色的地址13082EC 最后统一规则: [13082EC]+726 二.测试本机上的表示血值的地址是否正确 1 点击Add Address Manually-----勾选pointer------将地址复制过去13082EC -------再倒数第二个框中添加726 此时会看到新出来一个地址------这个地址所放的内容就当前血值 三.总结: 1如果第一步不明白-------照着做即可 2按照第二步的操作再本机上会产生一个地址,那么这个地址中就是人物当前血值对于任何机器都适用 四.c语言中如何获取内容 int a=1; 标准的写法:int a=(int)1; 1定义一个指针(规则就是再数据类型后加*) int* p; 2给指针赋值 int * p=(int*)0x13082EC(在c语言或c++中前面加一个前缀,这样表示把地址给指针了) 3.[13082EC]再地址上加上一个[]表示,获取地址中的内容,再c中获取地址中的内容,规则: 再指针变量前加上*,表示获取指针中的内容 所以*p代表人物中的[13082EC]这部分内容 4那么如何表示当前血值,综合代码: int* p; Int addr; P=(int *)0x13082EC; addr=*p; int* role=(int *)(addr+0x726); Int cur=*role; 本文章根据手把手项目开发网中的视频教程整而来,工具和资料下载地址:http://www.shou8shou.cn,也可以联系指导教师QQ:1026165915 也可百度:手把手项目开发 |