什么是游戏基址?

  游戏基址是保持恒定的两部分内存地址的一部分并提供一个基准点,从这里可以计算一个字节数据的位置。基址伴随着一个加到基上的偏移值来确定信息准确的位置(绝对地址)。

全局基址 一级基址 二级基址 三级基址的关系:

  第一步、计算机内存一般分为四级存储。(印象里好像是四级)。

  第二步、在最底下的,往往是游戏的全局基址(决定用户界面以及一些细节等)和一些响应用户操作而对应实施的命令。

  第三步、该是传递基址了。现在网游的基址往往是动态的。这个是因为底层的基址不会直接传递给上一级内存。它会加上一个偏移量,然后再传递。这个传递就是指针了。

  第四步、当传递到第四层的时候,就会表现在游戏的用户界面。

"----->"表示"指针指向"

基址(存放的内容是一级基址起始地址)——>一级基址(存放的内容是二级基址的起始地址:假定为a)

[一级基址(a) + 偏移量]------>二级基址(存放的内容是三级基址的起始地址:假定为b);

[二级基址(b)+偏移量]-------->三级基址

三级基址-------->游戏界面

自己制作游戏修改器必须要找到一级基址

注意:对于单机游戏 ,游戏基址是不变的。对网络游戏, 更新时可能会变。(因此才会有游戏更新后,某外挂不可以使用。其本质可能是基址改变的。)

另外,所谓的游戏的基址存在于虚拟内存中,比如基址为0x006A9EC0。

问题:基址无非就是一块内存,同时基址又不可以改变,如果计算机中该块内存被占用了,然后再安装基址为0x006A9EC0的游戏,此时会不会写入失败,造成无法安装呢?

解析:不会,基址0x006A9EC0是虚拟内存,会经过页面地址重地位,将虚拟地址转换成本机的物理地址,即不存在地址冲突问题。即使十个游戏的基址都是0x006A9EC0都不会存在冲突问题。

了解基址后,接下来看看如何寻找游戏基址。

工具:Cheat Engine (内存修改器)或Ollydbg。本实例用CE。。。。

例子:植物大战僵尸--英文原版

说明:利用阳光值,来一步一步深入寻找游戏基址。因为阳光值可以看到,可以改变。也可以通过金币等其他方式。

首先,打开游戏和CE工具,将游戏的进程加载进CE工具中。

将当前游戏的阳光值,填入搜索数值中,此时发现出现很多值。

注意:在CE工具中,绿色代表静态地址,红色代表上一次操作改变的地址,黑色代表动态地址但上一次操作没有改变。而要找的基址就是静态基址。

返回游戏,种植植物或摄取阳光,改变阳光值,再一次输入到搜索框中,点击“再次扫描”。此时发现只有一个值。(可能也会很多值,可以进行反复改)

那么问题来了,这个值到底是不是代表阳光的地址呢?

将搜索到值双击或点旁边的红色箭头,将值加载到下方的框中,双击数值,将会出现下图,然后进行修改,再观察游戏的阳光值是否被改变。如何改变了,说明已找对了。(当然,在寻找到多个值的时候也可以进行其中的某些值修改,从而排除一些可能。)

右击该值,选中“找出是什么访问了这个地址”或是“找出是什么改写了这个地址”,注意:如果点击了“找出是什么改写了这个地址”,进去是空白的,此时要返回游戏,改变阳光值,才会出其他数值。因此当时游戏处于暂停状态,没有数据写入。

进去后,可能有多个值进行了访问或只有一个。记住,只找含有 “mov”的指令,同时从上到下找第一个(CE工具会推荐可能性最大的在前面)。

双击进去,看到如下的框。mov  eax,[esi+00005560],

意思是将[esi+00005560]中代表的值移动到eax中,而十六进制的00005560就是偏移量,记录。esi的值可以在下方看到,但是下一个目标就是esi从哪里来?由哪个地址+多少偏移量等到的?

好了,离基址更近一步了。将esi的值复制到搜索值中(第一步),注意:记得将Hex打上勾勾,代表以十六进制进行搜索。点击“新的扫描”。

此时,是不是有点小崩溃?好多值,都是看不懂的。不急,记住:CE工具是好工具,一般将可能性最大的放在前面。可以先将第一个进行改变,试探。(一般都是在前5个)。同理,将前5个放入下方的框中。

然后,一个个依次右击该值,选中“找出是什么访问了这个地址”或是“找出是什么改写了这个地址”。注意:要时不时返回游戏玩一玩,更新下数据。当然,必要时要将游戏返回主菜单(即登陆窗口,但不要退出游戏,否则之前的地址都会改变,要重新弄)

如何判断是否找到的呢?

一定要找mov指令,同时观察第一个就可以了。

见下图。

注意没,mov eax,[ebp+14] ,其中将ebp+14得到eax,但是eax=00189288,如果eax就是之前找到的esi,那么是不是应该两者一致的呢?所以,第一个不是要找的。同理进行下一个。

下一个查找。。。。。。。

同样,点击第一个mov指令,此时惊不惊喜,意不意外?

mov esi , [edi+00000768],而esi=  16AB6F18,与之前的一样。对,就是它,偏移量为768,记录。在下方框中的其他多余值,可以删除。保留有用的。

查找下一个值。edi= 02179E80。

是不是很激动,找了那么久,终于看到绿色的值了(静态地址)

同理,将他们加入到下方的框中,进行一个个的排除。

看到了没?mov ecx,[pvz.exe+ 002A9EC0],pvz.exe是不是进程,不是寄存器,找不下去了。说明002A9EC02就是基址?

那么问题又来了,在第二框看到mov ecx[006A9EC0],但是点击进去却是002A9EC02,为什么?(本人不知道,试过很多次还是一样)

是不是有点难以置信,下面就来验证一下。。。(无论是否出现上面的情况,这验证都要进行,可以确保所找的基址准确性)

验证就是利用所找到的基址,加上之前找到的偏移量,阳光地址=基址+偏移量,那么最终的地址一定是阳光地址,否则基址错误。

第一情况:基址: 002A9EC0  偏移量:768  5560

通过手动添加地址,可以看到基址: 002A9EC0根本不存在的,直接废除。

第二情况:基址: 006A9EC0  偏移量:768  5560

地址是存在,是可用的 。不像上面情况如此。。。

再点击确定,把它放到下方的框中,然后修改它的值,看看游戏中的阳光值有没有改变。。。。

看到了木有。。。。

验证成功了。通过修改其值可以直接改变阳光值。。同时也说明了真正的基址: 006A9EC0,偏移量:768,5560。。。。。。。。。。。

验证成功了。通过修改其值可以直接改变阳光值。。同时也说明了真正的基址: 006A9EC0,偏移量:768,5560。。。。。。。。。。。

验证成功了。通过修改其值可以直接改变阳光值。。同时也说明了真正的基址: 006A9EC0,偏移量:768,5560。。。。。。。。。。。

同理,也可以通过金币,冷却时间,植物等其他标志去寻找基址。方法一样。。。

最后,推荐一个视频,可以看到实操。。。。。。。

推荐视频:http://www.iqiyi.com/w_19rt636lht.html?fromvsogou=1

CE寻找游戏基址的更多相关文章

  1. [外挂4] 用CE查找棋盘基址

    a.找棋盘数据基址 b.分析棋盘数据结构 综合使用搜索技巧,这要看你的聪明才智啦! [如本例:首先精确查找0,然后点一下左上角的一个,再次筛选出变化的,重开盘,再搜变化的,发现期盼规律为值为0表示没有 ...

  2. 基于C++ Qt实现的红色警戒3修改器

    前言 这部修改器制作有一段时间了,但是一直没出教程.今天利用周末空闲写篇教程,给后来者指路的同时也加深自己对游戏修改器的理解,大佬就随便看看吧 浏览了一下网络,形形色色的单机游戏修改器教程,但是基本只 ...

  3. CE+X64dbg外挂制作教程 [提高篇]

    人造指针&基址 实验目标:通过向游戏注入一段特殊汇编代码,实现自动获取动态地址.省略找基址的麻烦 为什么会出现人造指针 ? 1.基址偏移层数太多,很难找 2.有些游戏根本找不到基址 人造指针有 ...

  4. FPS 游戏实现GDI透视

    FPS游戏可以说一直都比较热门,典型的代表有反恐精英,穿越火线,绝地求生等,基本上只要是FPS游戏都会有透视挂的存在,而透视挂还分为很多种类型,常见的有D3D透视,方框透视,还有一些比较高端的显卡透视 ...

  5. 植物大战僵尸:寻找召唤僵尸关键CALL

    实验目标:通过遍历寻找召唤僵尸的CALL,通过调用CALL出现自定义的僵尸,加速僵尸的出现. 僵尸CALL的遍历技巧: 我们可以通过僵尸出现在屏幕中的个数来遍历寻找僵尸出现的CALL 首先打开CE-& ...

  6. 数据分析之CE找数据大法

    一.基本介绍 CE的全称为Cheat Engine,是一款内存修改编辑工具,其官网是http://www.cheatengine.org,可以在其官网下载到最新的CE工具,目前最新版本是Cheat E ...

  7. 植物大战僵尸:寻找阳光掉落Call调用

    实验目标:通过遍历阳光产生的时间,寻找阳光产生的本地Call,使用代码注入器注入,自定义生成阳光 阳光CALL遍历技巧: 进入植物大战僵尸-> 当出现阳光后->马上搜索未知初始数值 返回游 ...

  8. 植物大战僵尸中文第二版和年度版 游戏分析及delphi源码

    00413184 |. E8 77E30100   |CALL PlantsVs.00431500                  ; 地上的物品00413189 |. 8D7424 10     ...

  9. AI-Info-Micron-Insight:将您的游戏技能变成一份工作

    ylbtech-AI-Info-Micron-Insight:将您的游戏技能变成一份工作 1.返回顶部 1. 将您的游戏技能变成一份工作 听起来不现实? 一位来自著名商学院的教授不这么认为.他认为,金 ...

随机推荐

  1. 23种设计模式之模板方法(Template Method)

    模板方法模式是一种类的行为型模式,用于定义一个操作中算法的骨架,而将一些步骤延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,其缺点是对于不同的实现,都需要定义 ...

  2. Java虚拟机一

    Java发展至今,出现了很多Java虚拟机,从最初的Classic的Java虚拟机到Exact VM虚拟机,到现在最终被大规模部署和应用的是Hotspot虚拟机.       整数在Java虚拟机中的 ...

  3. Shell输入输出重定向

    全部可用的重定向命令列表 命令 说明 command > file 将输出重定向到 file. command < file 将输入重定向到 file. command >> ...

  4. 7.24 IO多路复用和协程代码笔记

    1. 复习 # !/usr/bin/env python # !--*--coding:utf-8 --*-- # !@Time :2018/7/23 11:49 # !@Author TrueNew ...

  5. Python 基础知识(一)

    1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...

  6. 【紫书】【重要】Not so Mobile UVA - 839 递归得漂亮

    题意:判断某个天平是否平衡,输入以递归方式给出. 题解:递归着输入,顺便将当前质量作为 &参数 维护一下,顺便再把是否平衡作为返回值传回去. 坑:最后一行不能多回车 附:天秀代码 #defin ...

  7. C#中DataSet、DataTable、DataReader的区别

    简单说就是:     DataSet:数据集.一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable         DataTable:数据表 ...

  8. Django实现微电影网站

    主要实现功能: 注册,登陆,播放视频,评论视频,xadmin实现后台提供视频管理,权限管理等等 首页(搜索,筛选) 搜索页面 播放页面 个人中心 后台 源码下载 环境配置:python2.7  pip ...

  9. Python安装及运行中可能遇到的问题。

    1.报错找不到Selenium. 解决办法: (1)可以调整工具中的以下两项 Setting: (2)Setting中设置此目录为Python安装目录,选择设置中的第一项后配置以下Python3.5的 ...

  10. android加载gif图片

    Android加载GIF图片的两种方式 方式一:使用第三开源框架直接在布局文件中加载gif 1.在工程的build.gradle中添加如下 buildscript { repositories { m ...