游戏基址的原理及用CE进行简单寻找
CE找基址及偏移教程

CE找基址及偏移教程
[转载于广海]
一般来说,大家都应该知道怎么找到一个值的地址,然后去修改它,但是有些地址退出游戏后就变了
这就需要偏移了,现在教大家找偏移和基址
1.当然是开游戏,有CE载入它的进程(看图)
2.搜你要搜的值,一般用默认的那个(整数,4字节)
比如搜金钱,就输入金钱数,一开始会有很多个,这时要改变下金钱的数(捡钱扔钱随你)
然后再次搜金钱的数,循环数次后剩下1个或几个,双击它,看图,现在我的钱是5
3.看图先
点击后得到这个(如图)
然后进入游戏改变一下金钱的数(扔钱捡钱随便你),之后得到如下图
双击后得到
4.根据刚才记下的esi,搜索下esi(如图)
5.这步很麻烦,我直接用说的了
然后双击被点下来的那个
接下来
这时候要小退一下,记住`是小退,进来后看看那个地址的值是不是跟金钱一样,改变一下金钱的数,看会不会跟着改变,如果会,就代表找对了
郁闷,游戏突然掉了,我重来,不过是从上面那一步开始,到这里也算差不多完了
6.接下来要重复上面讲到的其中一步,就是双击后看到偏移是504的那一步,得到如图
这个是完美国际122版的,也就是说,完美国际122的基址就是0092782C
二级基址=基址+20
金钱的地址则=二级基址+504不好意思``上次写的是一级基址=基址+20其实基址就是一级基址了`误导了大家基址+20应该是二级基址才对
到这里就完了。
CE寻找游戏基址

CE寻找游戏基址什么是游戏基址? 游戏基址是保持恒定的两部分内存地址的⼀部分并提供⼀个基准点,从这⾥可以计算⼀个字节数据的位置。
基址伴随着⼀个加到基上的偏移值来确定信息准确的位置(绝对地址)。
全局基址⼀级基址⼆级基址三级基址的关系: 第⼀步、计算机内存⼀般分为四级存储。
(印象⾥好像是四级)。
第⼆步、在最底下的,往往是游戏的全局基址(决定⽤户界⾯以及⼀些细节等)和⼀些响应⽤户操作⽽对应实施的命令。
第三步、该是传递基址了。
现在⽹游的基址往往是动态的。
这个是因为底层的基址不会直接传递给上⼀级内存。
它会加上⼀个偏移量,然后再传递。
这个传递就是指针了。
第四步、当传递到第四层的时候,就会表现在游戏的⽤户界⾯。
在本例中使⽤的是:间接寻址指令的地址字段不是操作数的真实地址,⽽是操作数的有效地址所在的存储单元的地址。
即操作数地址的地址。
"----->"表⽰"指针指向"基址(存放的内容是⼀级基址起始地址)——>⼀级基址(存放的内容是⼆级基址的起始地址:假定为a)[⼀级基址(a) + 偏移量]------>⼆级基址(存放的内容是三级基址的起始地址:假定为b);[⼆级基址(b)+偏移量]-------->三级基址三级基址-------->游戏界⾯⾃⼰制作游戏修改器必须要找到⼀级基址注意:对于单机游戏,游戏基址是不变的。
对⽹络游戏,更新时可能会变。
(因此才会有游戏更新后,某外挂不可以使⽤。
其本质可能是基址改变的。
)另外,所谓的游戏的基址存在于虚拟内存中,⽐如基址为0x006A9EC0。
问题:基址⽆⾮就是⼀块内存,同时基址⼜不可以改变,如果计算机中该块内存被占⽤了,然后再安装基址为0x006A9EC0的游戏,此时会不会写⼊失败,造成⽆法安装呢?解析:不会,基址0x006A9EC0是虚拟内存,会经过页⾯地址重地位,将虚拟地址转换成本机的物理地址,即不存在地址冲突问题。
CE查找基址的原理

CE查找基址的原理CE查找基址的原理学外挂制做或不学的人都知道CE就是Cheat Engine,用这个玩意找基址(当然找基址也不是一定用CE,熟悉逆向的人也用调试器)用CE找基址是非常方便的,也知道怎么找,但是却不知道为什么这么找,那些个教程也没怎么说就说怎么找在这我随便说说比如,我要查找角色坐标的基址什么是基址,简单的说,只要这个应用程序不变,那么这个地址就不会变(比如全局变量,这个变量在编译就确定的它的地址了,编译成汇编后这个地址就直接拿来用了)动作:CE中查坐标值比如找到存放这个坐标值的内存地址是1111 (有可能是基址,在这里假如不是基址)那么就有[1111]==坐标动作:查找访问这个地址的代码比如:mov [eax+8],edi那么就有eax+8==1111; [eax+8]==[1111]==坐标; eax==1111-8==1103然后大家会再去查找1103为什么再去找这个eax的值(1103)?为什么重覆的这样找下去就能找到基址(如果选择的访问代码正确的话)?因为这个1103(也就是eax的值)不可能打娘胎时就在eax里,(就算在娘胎里混也要先播种吧)最起码也要一句mov eax,1103 这样才能到eax里,如果你在找访问该地址的代码时找到mov eax,1103 恭喜你,请重新找,你找错了,不可能找到这样的访问地址的代码重新讲上一回1103只有可能在内存由mov eax, dword ptr [1103的内存地址]这样的形式送给eax,就像上个世纪40年代送孩子一样当然可能不会直接mov eax dword ptr [1103的内存地址] 这样送给eax可能mov ebx, dword ptr [1103的内存地址]mov eax,ebx或其它,反正最后才到eax手中了所以我们才再在找内存中有1103的数的地址再找访问1103的地址的代码看看1103的地址是哪个混蛋+偏移形成的一般会再遇到像mov eax dword ptr [esi+10] 这样加偏移的代码再找esi的地址找访问地址的代码假如走狗屎运马上遇到mov eax dword ptr [立即数] 这回真要恭喜发财,基址捡到了。
CE找基址及偏移教程

CE找基址及偏移教程CE (Cheat Engine) 是一款功能强大的开源游戏修改工具,可以用于找出游戏中的基址和偏移量。
在本教程中,我将向您介绍如何使用CE来找到基址和偏移量。
第一步是启动CE,并选择您要修改的游戏进程。
在CE的主界面上,您可以看到一个按钮上写着"Select a process to open"。
单击该按钮,它将打开一个对话框,显示您当前正在运行的所有进程。
在这个对话框中,选择您想要修改的游戏进程,并单击"Open"。
要找到基址,您需要在游戏中查找一个可修改的值。
在CE的主界面上,单击"First Scan"(首次扫描)按钮来开始。
在弹出的对话框中,选择要的数据类型,如整数、浮点数等。
在"Value"字段中输入您想要查找的值,然后单击"Scan"按钮。
CE将开始游戏进程中的内存地址,以找到与您输入的值匹配的地址。
这个过程可能需要一些时间,具体取决于您的计算机性能和游戏进程的大小。
当完成后,CE将显示一个地址列表,显示了与您输入的值匹配的地址。
这些地址被称为"Results"。
要找到基址,您需要修改游戏中的值,并进行第二次扫描。
修改游戏中的值,然后单击"Next Scan"(下一次扫描)按钮。
根据上一步的结果,CE将显示新的地址列表,这些地址仅包含与上一次扫描中的值匹配的地址。
这些地址可能是潜在的基址,但我们无法确定。
我们需要进一步修改游戏中的值,然后进行下一次扫描,以进一步缩小范围。
重复上述步骤,直到您找到了一组相对静止不变的地址。
这些地址很可能是游戏的基址。
为了验证,请尝试在这些地址上做一些修改,看看游戏中的值是否相应变化。
一旦您确定了游戏的基址,您可以使用偏移量来找到其他变量或函数的地址。
在CE的"Address List"中,选择基址的地址,并单击"Add Address Manually"(手动添加地址)按钮。
ce找基址思路方法详细

精度数,而double为双精度数,它们在电脑里面占用的字节数长度不同,而所能表示的精度也不同,看
不懂不要紧,反正知道这是两种不同的浮点数就行)。
点击Hit me可以减少一些血,而点击shoot(CCB:其实是Fire)可以用掉0.5的子弹。
你得把这两者都修改到5000或者更多才能进下一步。
说的548,其实在内存可能是1644,而当它要显示的时候才把1644除以3然后显示出来,所以如果你受这
个显示数字的误导,结果就有可能找不到真正的地址。所以关于那些以长度表示的数值,一般还是靠猜
,然后根据猜测来找。还有,CCB友情提醒一下,其实有时在找到的数值比较多的时候,试试在扫描的过
怎么做,就是开TUT,开CE(哪个先开都没关系),然后点击CE左上的那个选择进程的按钮,选择这个TUT
的进程,这样就可以点NEXT进到下一步了。
第二步:
【第二步:精确数值扫描(密码:090453)
现在你已经在CE中打开了TUT,让我们进入到下一步吧。
你看到在这个窗口的下方的文字Health:XXX
容易解决)(CCB:大家不会忘了吧?1字节表示的最大数值是255,而这里要你改为1000,所以虽然用1字
节能找到,但要改却要连前一字节一起改,所以有点麻烦,不过不是大麻烦)。8字节可能也可以,如果
这个地址后面是0的话,不过我不敢打赌。Single, Double, 以及其他的扫描方式不行,因为它们储存数
戏都没这么简单,但至少你已经学到最基本的一步,就是精确数值的扫描和修改了。现在就点击NEXT进
入下一步吧!
第三步:
【第三步:未知初始数值(密码:419482)
OK,看来你已经理解了怎样使用精确数值扫描找到一个数值了,让我们进入下一步吧。
找游戏基址简单的五种方法

ce查找:搜索当前血量218OD查找:OD附加,先点运行让它跑起来。
CTRL+G,00456448.来到00456448血地地址是ESI+25C,搜索左面[]中ESI地值,不要搜索右面EDX。
向上查找ESI。
ESI是从ECX来地,在这里按F2下断。
看看对不对,要是对血值发生变化会被自动断下。
成功断下后在命令:后面添加 dd ecx+25c(因为血是ESI+25C,ESI是从ECX 来地所以ESI+25C=ECX+25C)。
回车。
来到当前血量。
DA十六进制换成十进制是218.证明ECX是对地,继续找ECX地值。
向上查找。
两段代码之间会出现NOP。
在高级语言中这两段代码叫做函数。
NOP将2个函数分开,一般在OD中函数以PUSH开始RETN结束。
因为在本段代码没有找到ECX,在向上找就是其他函数代码了,那样找起来会很麻烦,所以来到本段代码头部,看看还没有CALL.点击004563A0(代码头部)发现有个CALL,右键前往这个CALL。
如果这里没有CALL,在CALL这个位置下端,运行OD,让血值发生变化自己断下,看看返回值,然后记录下来在排除查找!前往这个CALL,来到!向上查找。
来到EAX发现是个跳转,所以要往回跳。
右键点击跳回!跳到00454B71。
一直向上来到头部没找到ECX,发现EAX这里有个调用,不过没有CALL,所以在这里下断,运行,到游戏里动一下让它自动断下。
取消断点,要不在这个断点又被断下了,看到了返回到……这个调用。
在第一个返回到,点右键,点在反汇编窗口中跟随。
然后运行OD。
让游戏动一下。
没被断下,继续向上查找ECX,发现ECX是地值是从EAX来地。
向上找EAX,没找到,发现函数代码中部有个CALL。
进入这个CALL看看。
命令:DD [EAX+24]+25C 在 [EAX+24] 这行代码下端。
在命令行按回车。
发现当前血是对地,取消断点在让OD运行起来。
向上 dd [[ecx+8]+24]+25c 在这行下断,在命令行回车。
CE找基址及偏移教程

CE找基址及偏移教程首先,为了理解基址和偏移的概念,我们需要了解一下计算机内存的组织结构。
一、计算机内存的组织结构计算机内存是由一系列连续的存储单元组成的,每个存储单元都有一个唯一的地址。
这些地址以字节为单位进行编址,从0开始递增。
程序在运行时,会被加载到内存中,并且在内存中分配一个起始地址。
二、基址和偏移的概念基址和偏移是指计算机内存地址的两个部分,用于定位内存中的特定数据。
其中,基址是内存段的起始地址,而偏移是相对于基址的地址的偏移量。
理解基址和偏移的重要性在于,它们为我们提供了一种动态定位内存中的数据的方式。
特别是在计算机安全领域,如逆向工程和漏洞分析,基址和偏移的概念非常重要。
三、寻找基址和偏移的方法在一些情况下,我们需要找到程序中一些特定变量或函数的地址,以便进行相关操作。
以下是一些常用的寻找基址和偏移的方法。
1.调试器调试器是寻找程序中基址和偏移的最常见工具之一、使用调试器,可以暂停程序的执行,并查看其内存中的的状态。
通过在程序中设置断点,可以直接获取特定变量或函数的地址。
2.静态分析静态分析是指在不运行程序的情况下对其进行分析。
可以使用反汇编器来分析程序的机器码,找到关键函数或变量的地址。
这种方法对于分析没有调试信息的程序特别有用。
3.动态分析动态分析是指在运行程序的情况下对其进行分析。
可以通过跟踪程序的执行,记录关键函数或变量的地址。
这种方法适用于需要捕获程序运行时的状态的情况。
4.模块排布在操作系统中,程序通常使用模块(DLL、SO等)来组织代码和数据。
模块的基址是一个固定的地址,而其中的变量和函数的地址是相对于该基址的偏移量。
因此,通过查找模块的基址和计算偏移量,可以找到特定变量或函数的地址。
四、基址和偏移的应用了解基址和偏移的概念后,我们可以使用它们进行一些常见的操作。
1.漏洞分析在漏洞分析中,基址和偏移可以帮助我们定位程序中的关键数据结构,比如缓冲区。
通过寻找基址和计算偏移量,可以精确地定位漏洞所涉及的内存位置,并进行相关的利用和修复操作。
CE查找基址的原理

CE查找基址的原理学外挂制做或不学的人都知道CE就是Cheat Engine,用这个玩意找基址(当然找基址也不是一定用CE,熟悉逆向的人也用调试器)用CE找基址是非常方便的,也知道怎么找,但是却不知道为什么这么找,那些个教程也没怎么说就说怎么找在这我随便说说比如,我要查找角色坐标的基址什么是基址,简单的说,只要这个应用程序不变,那么这个地址就不会变(比如全局变量,这个变量在编译就确定的它的地址了,编译成汇编后这个地址就直接拿来用了)动作:CE中查坐标值比如找到存放这个坐标值的内存地址是1111 (有可能是基址,在这里假如不是基址)那么就有[1111]==坐标动作:查找访问这个地址的代码比如:mov [eax+8],edi那么就有eax+8==1111; [eax+8]==[1111]==坐标; eax==1111-8==1103然后大家会再去查找1103为什么再去找这个eax的值(1103)?为什么重覆的这样找下去就能找到基址(如果选择的访问代码正确的话)?因为这个1103(也就是eax的值)不可能打娘胎时就在eax里,(就算在娘胎里混也要先播种吧)最起码也要一句mov eax,1103 这样才能到eax里,如果你在找访问该地址的代码时找到mov eax,1103 恭喜你,请重新找,你找错了,不可能找到这样的访问地址的代码重新讲上一回1103只有可能在内存由mov eax, dword ptr [1103的内存地址]这样的形式送给eax,就像上个世纪40年代送孩子一样当然可能不会直接mov eax dword ptr [1103的内存地址] 这样送给eax可能mov ebx, dword ptr [1103的内存地址]mov eax,ebx或其它,反正最后才到eax手中了所以我们才再在找内存中有1103的数的地址再找访问1103的地址的代码看看1103的地址是哪个混蛋+偏移形成的一般会再遇到像mov eax dword ptr [esi+10] 这样加偏移的代码再找esi的地址找访问地址的代码假如走狗屎运马上遇到mov eax dword ptr [立即数] 这回真要恭喜发财,基址捡到了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
游戏基址的原理及用CE进行简单寻找
2011-11-13 16:51
注:对初学者,基址的一些简单概念入门挺好的,就记下来了
首先,要想写挂,必须要知道游戏中的数据是多少,我们才能决定有什么操作。
所以本节课要解决的内容是---游戏一些简单的数据(红和蓝)。
对于网游而言,用的肯定是动态内存。
所以现在我们先把原理讲清楚,讲时候我尽量避免少用术语,用通俗的语言为大家解释。
有的人一直不理解为什么每次血的内存位置是变的,但是既然是变的,为什么我们又能通过固定的程序找到呢?这里我用以下图表示,并且用一些通俗话解释
因此要找游戏的血量,关键是把路线图中红色的三个不变的数字找到,也就是基址1的地址(下面就简称基址1了),偏移量1,偏移量2。
然后根据以下公式得到血量
基址2=基址1内放的数字+偏移量1
血内存地址=基址2内放的数字+偏移量2
HP值=血内存地址内放的数字
从上面看到,每次游戏之所以血内存地址会变,关键是因为,每次启动游戏时候,基址1内的数字是不同的。
下面我们就以前两天刚公测的游戏《昆仑OL》为例,找一找血的动态内存地址。
1、首先打开CE,在设置里面尽量使用内核模式调试器
2、点击左上角的电脑图标
3、选中游戏进程,按确定
4、可以看到人物的血量是220,所以输入220,点首次搜索。
其他用默认
5、以下是搜索结果,可以看到结果很多
6、出门让怪砍,使你掉血,然后CE在扫描内型下拉框里选择减少的数值
7、搜索完发现结果很多。
8、没事我们多搜索几次,直到出现比较少的数字为止,看现在就一个地址了
9、双击找到的地址,把他加入下面的方框内
10、修改描述为1.内存地址(表示第一次游戏内找到的内存地址),右击地址,选择“查找写入该地址的代码”
11、以下是结果,并且双击找到的结果
12、然后出现如下图片,红色内行写着 ecx+000001e0,这里ecx 代表二级基址内放的数值,1e0 代表偏移量2。
方框内是CE帮我们计算好的二级基址内的数值,我们就是需要他。
把这个数字记下啦。
通过它寻找二级基址的位置
13、点新的搜索,然后输入刚刚找到的二级基址内的数值,并且勾上前面的16进制(因为这个数据是16进制),再点击首次搜索(找找看哪个地址内的数值,满足上面这个数字),得到,如下两个结果,然后双击这两个结果,把他们加入下面的方框内。
并且添加注释第A次进游戏得到的可能二级基址。
14、二级基址只有一个,所以这两个结果只有一个是真的,(一般来说第一个是真的地址,但也不是绝对的。
碰RP的话,你也可以直接用第一)所以接下来要判断哪个才是真的二级基址。
刚刚说过,退到游戏选择人物画面再进游戏,一级基址不变,二级基址不变,但是二级基址内放的数字变了,这导致这个时候血的内存地址也变了。
所以下面要做的就是退到人物选择画面,再进入游戏,通过刚刚方法(1---13步骤),再找次二级基址,他应该和前一回找到的二级基址一样。
下面图中我描述为(B可能的二级基址)的东东,是我第二次搜索得到的可能二级基址。
比较下两次进游戏得到的二级基址,只有红色的地址是没变的,说明他就是二级基址。
15、找到二级基址后,通过上图的面板你们也发现
二级基址(10822D20 ) = 一级基址的数值() + 偏移1() 所以现在我们要找一级基址的数值和偏移1.
我们说过二级基址数值只要进入正式游戏都不不会改变了,只有进入人物选择画面的时候才变,下面我们要做的就是跟踪这个二级基址,回到人物选择画面,看看是谁往这个基址内写入东东~
16、正式进入游戏后,我们发现检测到几个结果,那到底哪个才是真的呢?我们选择红色那个,因为他有mov
17、双击这个红色,然后得到如下图。
红色那行写着 eax+ecx*4,这里前面的eax 代表一级基址内放的数值,ecx*4 代表偏移量1。
方框内是CE帮我们计算好的一级基址内的数值,我们就是需要他。
把这个数字记下啦。
通过它寻找一级基址的位置。
同时我们发现ecx代表的是4(十六进制),4(十六进制)*4=10(十六进制)。
10就是偏移1
18、搜索一级基址内的数值10822D10,看看哪个地址内装的是他。
结果就一个
19、好了现在我们知道所有的东西了,红色部分是无论哪次进游戏都不变的。
找到他们,现在就能进行找血的内存位置了。
一级基址(012BAB94 )
二级基址(10822D20 ) = 一级基址的数值(10822D10) + 偏移1(10)
血内存地址(055FCE18) = 二级基址的数值(055FCC38) + 偏移2(1e0)。