基址简述
Posted 荒,影
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基址简述相关的知识,希望对你有一定的参考价值。
基址简述
注:原创文章,禁止转载
在游戏中,用指针加偏移的形式,形成多级指针,最终到达目标地址,且这个指针链在重启游戏后依然生效,那么这就是一条有效基址。
比如,一条3级基址如下:
libgame.so:bss[Cb]:+0x2B4C->0x10->0xC4->0x1C
我们先获取libgame.so:bss
模块的起始地址:
local a=gg.getRangesList(\'libgame.so:bss\')
local b=string.format(\'%X\',a[1][\'start\'])
local c=tonumber(b,16)
print(b)--打印出libgame.so:bss模块的起始地址,该行可以注释
gg.addListItems(address=c,flags=4)--将模块起始地址保存到列表
以一个保卫萝卜32位修改版的游戏举例,我们想要修改游戏速度,我们利用工具找到其中其中一条基址为:
libgame.so:bss[Cb]:+0x2B4C->0x10->0xC4->0x1C
第一次模块初始地址加偏移:
假如我们获取到的libgame.so:bss
起始地址为BD0B5000,加上偏移0x2B4C,到达BD0B7B4C
第一次指针跳转:
到达BD0B7B4C,我们发现存储了一个指针为CB9611C0,跳转到CB9611C0(在GG中久按可以选择跳入该指针),我们再进行偏移0x10,CB9611C0+0x10到达CB9611D0
第二次指针跳转:
到达CB9611D0,我们发现存储了一个指针为CB709800,跳转到CB709800,偏移0xC4,CB709800+0xC4到达CB7098C4
第三次指针跳转:
达到CB7098C4,这里也存储了一个指针CB962300,跳转到CB962300,偏移0x1C,CB962300+0x1C到达CB96231C,这里就是目标地址,存储着我们需要修改的目标值
虽然我们每次进游戏,libgame.so:bss
模块获取的初始地址是不同的,但是我们可以通过这个指针链,通过偏移加指针跳转的方式达到目标地址,达到我们的修改目的,这就是游戏中的基址。
常规来说,基址的级数一般都在3~12级,超过12级的很少,非常少,比我的鼻屎还少。
我们一般先抓取若干基址,保存在一个文件中,然后重新进游戏,再抓取一次基址,再次保存在另一个文件中,将两个基址文件进行对比,去除那些无效基址,一般来说对比之后里面的基址大部分都能用,如果想要更‘纯’一点的基址,我们可以再对对比之后的基址进行一次过滤,甚至是二次过滤。关于提到的这些你都可以用AE Pointer实现。
AE Pointer
这是当前安卓端最好用的基址抓取工具,纯C编写,快的一匹。笔者也是AE Pointer的忠实使用者一名,给出的评价也是相对客观的,当然这也算是变相打广告了,AE作者能给我打点钱更好了。作者是B站Up主小说里的人(主页: https://space.bilibili.com/320508998 )。
工具并不免费,有需要的读者可以自行购买。
关于骗子青衫白衣Enc
B站有一个骗子,青衫白衣Enc,主页:https://space.bilibili.com/514303203
骗子QQ交流群:113220632
骗子B站UID:514303203
笔者倒并没有被此人所骗,只是觉得此人过于无耻,所以在此特别挂出来
前因后果:
此人诱骗AE Pointer作者录制了AE Pointer的编译视频,你会发现AE源码编译视频与AE作者的AE使用教程配音风格都是一样的,盗取该视频私自发布在B站并号称已将AE Pointer全源了,直白来说就是他号称破解了AE Pointer(以下简称AE),出售AE源码。
现在该骗子的AE源码编译视频已经下架,找不到了,本来还想保存一份下来,让大伙来看看的。
如有不信的读者可以自行加入骗子群,联系青衫白衣Enc这个死骗子,你让他提供一个编译好AE后再签名运行演示的视频,他绝对提供不出来,只会以各种理由拒绝,逃避,因为他根本没有源码!因为CPP和C的全源从理论上来说本身就几乎是不可能的。
此人就是lua GG圈的败类一枚,为了骗那一两百块,笔者看着他小丑一样,大家都不是小学生了,小学生基本上用不上AE,到了用AE的地步,哪个会是傻子,你说你有源码,你录屏演示编译、签名并运行演示啊,你录不出来,那你肯定是有问题的。就骗了AE作者一个AE的编译视频,一张嘴在那说自己有AE源码,然后出售AE源码,真不知道你能骗到哪个。
植物大战僵尸进阶 寻找任意阳光基址
植物大战僵尸进阶 寻找任意阳光基址(三)
之前的修改地址只是临时的地址,然而每一次重新登录就要重新定位,寻找阳光的地址,那有没有什么办法可以只找一次就可以一直适用呢?
所以现在就介绍一种寻找阳光的基址的方法。
1.首先打开植物大战僵尸和CE,第一步和前面的操作一样,找到阳光现在的临时地址。
2.使用CE在添加的地址下面,右键选择 “找出是什么访问了这个地址”。
:::
访问比改写能获得更多信息 第一次搜索一般用访问,因为有些信息改写第一次是收不到的
找出是什么改写:指找出哪条代码执行后,对指定地址进行了写的操作。
找出是什么访问:指找出哪条代码执行后,对指定地址进行了读和写的操作
3.下面可以看到汇编指令,有两条数据访问了这个地址 偏移量是00005578,记下这个偏移量,双击选择mov (幅值)。
4.可以看到 “要查找的该地址指针数值可能是2CA23A68”。复制2CA23A68进行更深一步的寻址。
mov eax ,[edi +00005578] 说的是将edi的值+00005578 幅值给eax eax=2CA28FE0
edi=2CA23A68
5.创建新的扫描,hex勾选上(16进制)找存edi 的地址数值 的地址 。(这句应该不难理解吧)。。。
一般都是与其他结果相差比较大的就是我们要找的,如图所以,找到了3个,现在还不能确定是哪个,都添加到下面。
6.一个个都进行 “找出是什么访问了这个地址” 看看有没有偏移量的。下图是偏移量为00000868,就是要找的,顺便记一下偏移量的值。
7. mov esi [edi +00000868]
edi =0270A300
所以说基址很有可能就是0270A300。
8.再进行0270A300的扫描搜索。
9.如图,绿色的就是基址了,有四个,不知道是哪个,就到添加到下面列表中。
10.进行第一个的测试(看它是不是真的阳光基址),选择手动添加地址。
11.填写地址,勾选指针进行偏移量的输入868 和5578。
12.看到数值部分,都是25,和现在阳光数量一样,可以看到P->2CA28FE0 是指针指向2CA28FE0 和上面对应。
13.现在用基址,给它输入一个新的值100。
14.数值成功改变,基址的改变对应着临时地址的改变。
15.现在测试一下,重新打开游戏,基址的数值和临时地址的数值变化。
16. 可以看到基址的数值就是和游戏中一样的50阳光,这里基址指向的指针已经不是2CA28FE0,之前临时地址的数值已经找不到了成为??而现在指针指向的新的临时地址为2C7AF478。
可以将 描述 更改为阳光基址,并且将这个“脚本” 保存下来。。。下次使用就直接打开保存好的这个文件,就会读取里面的基址数据,非常好用。
以上是关于基址简述的主要内容,如果未能解决你的问题,请参考以下文章
用CE找到基址 但基址是9位的 为啥在易语言里面查询的数据不对``
学习逆向知识之用于游戏外挂的实现.第三讲,通过游戏外挂.分析红色警戒金钱基址.以及确定基址小技巧.
WCF--找不到具有绑定 BasicHttpBinding 的终结点的与方案 https 匹配的基址。注册的基址方案是 [http]。