游戏基址查找思路

前言:这里选取植物大战僵尸作为案例,原因是这是一个典型的 3 级地址偏移的游戏案例,以下博文均以 3 级偏移为思考对象

思路
  1. 我们知道,用 CE 修改游戏数据的时候,我们 CE 获取到的当前某个数据的内存存储地址在我们重新打开游戏后就会失效。这里原因就是因为每次游戏重新开启后,数据在内存中存储的具体位置都发生了变化,故而我们无法使用某一次 CE 获取到的地址来重复修改游戏数据。
  2. 那么是不是说每次打开游戏后,游戏数据的存储位置的选择都是虚无缥缈的,无迹可寻的呢,每次都需要重新获取地址呢?并不是的这样的。当前内存地址变化的原因是由于计算机的本身存储的机制造成,并非开发者故意而为,这里是有规律可循的。
  3. 这里就要引入 基址 ,即一个数据无论游戏重启多少次,它在内存中的地址都是以基址为基础,加上偏移量最终计算处理的,因此,只要知道基址和偏移量,就能准确的找到游戏运行后某个数据的地址,并且只要基址不变,就一定生效。
正向思考
  1. 那么这里的算法是如何的?这里以单机游戏 " 植物大战僵尸 " 中太阳地址为例,我们先从正向的角度思考。
    1. 太阳基址指向二级基址地址
    2. 二级基址地址 + 二级偏移地址 = 三级基址地址
    3. 三级基址地址 + 三级偏移地址 = 当前内存太阳数据存放的地址
    4. 更改当前内存太阳数据存放的地址,就实现了对游戏中太阳数量的修改
  2. 图片示例
    在这里插入图片描述
    其中,17B3B430 确实是本次运行游戏中太阳数量存储的地址
    而且,第二行中 02569C98 + 768 是用 [ ] 括起来的,这意味着我们要取这地址中的值,也就是 17B35ED0
逆向思考
  1. 但是在 CE 的实际操作中,我们往往是逆向过来的,即我们会得到一个最终存储太阳数量的地址,比如上例中的:17B3B430,而我们的目标是找到 2A9F78。那么如何找呢?

  2. 我做了图片辅助理解这个过程
    在这里插入图片描述

  3. 以上图为例,我们解释逆向思路:

    1. 我们的目的是找到上图中的基址
    2. 现在我们通过 CE 知道了存储阳光数量的当前地址,也就是图中的 150
    3. 然后我们可以得到这个地址的偏移量 30 ,得到了 120 ,也就是我们的未偏移的三级基址
    4. 我们找到存储这个三级基址的地址,最终找到了 60,但是 60 仍然是二级地址偏移过后的地址
    5. 我们用 60 减去 10 就得到了未偏移前的二级基址 50
    6. 最终,我们找到存储这个二级基址的地址,即我们的基址,在 CE 中表现为这个地址的颜色是绿色的
  4. 以上,就是我们针对于 3 级基址的逆向查找的逻辑的思路

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 当出现"pull 分支报错 fatal: Need to specify how to reconcile divergent branches"的错误时,这意味着在合并分支时存在冲突,需要指定如何解决这些冲突。在SourceTree,有几种方法可以解决这个问题。 一种方法是使用回滚提交。回滚提交是指将分支恢复到之前的某个提交状态。在SourceTree,你可以切换到线上分支,然后找到要回滚的提交记录,右击该提交记录,选择回滚,然后点击确定即可。这样就可以将分支恢复到指定的提交状态。\[2\] 另一种方法是重置当前分支到某个提交。重置当前分支是指将当前分支的指针移动到指定的提交,丢弃之后的提交记录。在SourceTree,你可以切换到线上分支,然后找到要重置的提交记录,右击该提交记录,选择重置,然后点击确定即可。这样就可以将当前分支重置到指定的提交状态。\[2\] 如果你只需要合并某个分支的部分代码,可以使用遴选方式。具体操作是,在开发分支的提交记录上找到要遴选到线上分支的那条提交记录,右击该提交记录,选择遴选,然后点击确定即可。这样就可以将指定的提交记录合并到线上分支。\[3\] 希望以上解答对你有帮助。 #### 引用[.reference_title] - *1* *2* *3* [【Git】常用命令和sourceTree的使用](https://blog.csdn.net/sj13036141506/article/details/128708160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值