找回密码
 注册 (不支持IE浏览器)
搜索
查看: 64|回复: 0

[教程] 通过游戏学指针1

[复制链接]

0

精华

10

贡献

209

赞扬

回帖
1
软币
409
在线时间
25 小时
注册时间
2025-7-3
发表于 2025-7-4 07:26:23 | 显示全部楼层 |阅读模式
本帖最后由 xj123 于 2025-7-4 10:45 编辑

我们主要做什么?
1.会员学习 + 免费资源: 我们是一个学编程的“一站式”平台。想深入系统学,可以交学费成为VIP会员,跟着老师学。
同时,我们也免费分享超多视频教程、学习资料和项目源代码,让大家都能受益。


2.干货分享,助你成长: 我们平台会经常免费放出好东西!比如原创技术文章、各种教程、还有特别好用(重磅)的源代码和普通代码、各种工具软件。
我们在B站已经发了超过155个免费视频教程,吸引了好多同学关注,人数还在不断增加。


3.实战教学,快速提升: 我们最看重边学边动手练,这样才能真正学会核心本领。
对于逆向而言,课程里带大家做真实的商业级别项目,让你不仅能积累项目经验,还能独立开发软件赚钱。
对于开发而言,课程里带大家做真实的企业项目,让你不仅能积累项目经验,还能提前熟悉公司里实际的工作流程。这样学下来,就算是零基础开始的同学,
学完后也能达到有2-3年工作经验的水平!


标题:用游戏理解指针
目标:查找某游戏的当前血值和最大血值
操作过程:(每一步必须详细,要用截图的方式+文字表达的表达方式)

1.创建角色:
2.进入游戏后图片:
3.使用快捷键Ctrl+Shift+ESC打开“任务管理器”,点击此游戏的进程并右键,点击“转到详细信息”,即可看到进程名(如图),右键点击“属性”,查看一下游戏的进程名,即图4的“GameClient.exe
4. 打开ce工具(作用:用来搜索数据,是逆向学习指针的工具)可在www.shou8shou.cn网站上下载,如下为打开ce工具后的实际操作及用法:
1)打开ce进程
打开ce工具并点击第一个按钮,如图1
选择包含游戏的进程名,即包含GameClient.exe”的进程即可,并点击Open(打开),如图2所示

(2)设置ce
先选择2Bytes”来查询人物血量,如果不能查到就改为“4Bytes”,如图1。注释:“2Bytes”的意思为2字节,可容纳65535bit位,人物血量可能在0~65535这个区间内,故选“2Bytes”作为查询区间。
在游戏中查看人物血量,如图2中的血量为23,即在“Value”对话框中输入“23”,则会输出所有关于“23”的信息,如图3
分析:此时看到有若干个关于23的信息,至此不知道哪个地址是我所创建的人物的血值的存放地址。因此需要改变一下人物的血值,如:做任务或者打怪升级等等。在这里我完成了一个任务后血值发生的变化,血值变为了27
再把新的血值输入到Value对话框,点击“Next Scan”(此键大意为“下一次扫描”)即为在第一次扫描的结果上进行再一次扫描。结果如下图所示:

分析:此时还有7个地址为相同的数值,所以需要多次改变血值才能找到真正存放血值的地址。故重复上一步操作即可。
④测试可能为血值的地址:双击你认为可能为血值的地址,即可在下面显示,如下图框选部分内容

⑤修改当前血值和最大血值,观察游戏界面,如果有变化即找到的血值的真正位置。操作:双击这两项的数值,即可更改。

⑥如图,更改了上面的数值,人物的最大血值变成了相对应的数,所以上面的地址(0F4377AE)是人物的血量上限。

⑦如图,更改了下面的数值,人物的当前血值变成了相对应的数,所以下面的地址(0F4377A6)是人物的当前血量。

补充内容:根据以上步骤操作后,现在当前血量的地址为0602A7A6血量上限的地址为0602A7AE,下图是改变了数据的描述。

分析:存放人物血量的位置(即地址)在C语言中被称为“指针”。
引入C语言的指针:
C语言中定义并赋值指针的语法为:
定义指针:int* p; 注:此处的p”可以为任何变量名
给指针赋值:int* j1=(int*)0602A7A6;
C语言中获取指针内容的语法为:
int newblood=*j1


至此,用指针查找人物血量的实验就做完了,并用C语言声明、赋值和获取数据

本文章根据手把手项目开发 - 一站式开发项目培训平台中的视频教程整理而成,以下是我的QQ:1405086479,有意向一起交流技术或者有意向学开发技术的可以联系。

回复

使用道具 举报

本版积分规则

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文科技有限公司 苏公网安备32011302322501号

GMT+8, 2026-4-16 02:25

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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