wxr1224 发表于 前天 11:29

通过游戏学指针系列1,2讲:环境准备

一.准备环境一1启动文件夹WooolClient1006760中的名扬传世.exe,在以下网址下载:http://www.shou8shou.cn2注册账号(若未达到18岁,可以搜索一下,注意:注册必须要姓名和身份证)3若不使用,可将文件夹重新压缩,之后使用时再解压 二.准备环境二1.准备一个过保护的或是普通的工具:ce(在以下网址下载:http://www.shou8shou.cn)(1)ce工具的用处:此工具专门用来搜数据,是逆向,学习指针的好帮手2此工具如何用(1)确定一下这个游戏所在的进程(进程:每个应用程序都对应一个东东,这个东东就是进程(注意:此概念看懂即可))任务栏右键----启动任务管理器----选中进程----游戏----右键----转到详细信息----此时可以看到进程名GameClient.exe(2)ce工具如何用a.启动----选择第一个按钮----打开----选择进程名b.如何设置,核心点,数据类型(范围按无符号选)Byte:中文含义是字节,一个字节是8位,8位上0或者1,所以一个字节如果8位都是11111111,那么最大值就是255,最小值位02 bytes :1111111111111111 255*255=655354 bytes:0-42亿左右(3)例如:查找人物的血值,目前是49,那么我选择那个类型Byte 可以排除(因为血值到了20级左右大概率就有了,所以这个范围太小了)2 byte(也可以表示为word):如果游戏设计者制定了规则,人物的最大血值为60000,最大的等级为999级,那么我们就可以选择这个数据类型来存放血值4 byte(也可以表示为dword) 也可以选择存放血值
三.分析游戏人物血值1.用ce加载游戏,然后搜血值,点击firat scan(中文含义是首次扫描,意味着第一查找有哪些地址存放了人物的血值)可以看到此时有很多的地址存放的血值都与搜索的血值一样,那么我们要判断真正的血值应该存放在哪个地址呢?如图所示: 2想办法改变人物的血值,可以通过做任务让角色的血值升一升,然后再重新的输入变化的血值,然后点Next scan,这时候跳出来了的地址只有5,6个,然后现在就是需要我们观察一下有哪个地址变化了(这是一个持久性的观察)如图所示: 3. 改变以上地址中的31为310,更改以后游戏中的血值也可以更改,如下图: 四.在c或c++语言中的表示方法:分析:存放人物血量的位置(即地址)在C语言中被称为“指针”。引入C语言的指针:在C语言中声明并赋值指针的语法为:声明指针:int* p; 注:此处的“p”可以为任何变量名给指针赋值:int* j1=(int*)0x0602A7A6;在C语言中获取指针内容的语法为:int newblood=*j1; 至此,用指针查找人物血量的实验就做完了,并用C语言声明、赋值和获取数据

linxiansen 发表于 前天 14:20

PYG有你更精彩!
页: [1]
查看完整版本: 通过游戏学指针系列1,2讲:环境准备