希望bm吧 关注:614贴子:1,081

修改心得:隔空捡的实现

只看楼主收藏回复

隔空捡的3版工具,我已经分享在本吧了. 这是我为本吧的人气,不得不作出的妥协
但玩修改的朋友,更想知道其中的修改原理,是不是?
梦回这游戏捡物,必须是站在物品上面,也就是说物品和人物之间的坐标是重合时,它才允许你捡起来,这其实就是2个坐标判断之后的处理结果.如果你能修改它的判断的执行,当然也就实现了隔空捡.
当然,需要注意,C端和S端都有这个坐标判断的处理,必须2个进程都修改才行.


IP属地:广东1楼2022-10-10 17:10回复
    首先我们处理比较难搞的C端

    搜索到人物的横坐标后,我们直接查看谁访问了它

    此时发现,有线程访问得极其频繁, 已经影响到我们无法控制游戏人物了.当然想调试人物捡东西也是不可能了.所以说比较难搞.


    IP属地:广东2楼2022-10-10 17:14
    回复
      但没关系,我们用中转的方式,获取捡物时判断坐标的代码
      这里,我再强调一下一个概念: 进入(call)一个函数时,它返回的地址总是存储于 [esp],如果有 push ebp,mov ebp,esp 的"堆栈转换",那返回地址就是 [ebp+8]
      我们就用这个原理可以来获取我们想要的代码地址. 这个方法适用于这类"不停运行的线程",或者是一些公用的函数


      IP属地:广东3楼2022-10-10 17:19
      回复

        我们对2楼访问人物坐标的代码进行"显示反汇编程序",定位到代码栏.
        选中它的上一行, mov eax,[ebp-4] ,在这里注入我们的脚本.

        这是脚本的关键的内容,搞好后,我们激活使用它

        杀一个怪,然后站在物品上面,但先不要捡东西

        浏览内存,定位到我们脚本的 code_Out 这个地址,从 mov ecx,code_Out 这一行代码复制到具体的地址
        然后我们发现已经有一些数据了,但不用管它们,这些都不是我们想要的数据. 你先看好最后一个为0的内存地址是哪里,比如上图就是第二行 0149004B
        然后,我们按空格键把东西捡起来, 就获取到了新的数据.
        我们复制最后一个数据生成的地址,(注意,是地址,点一下那个地址,再右键"转到地址"就可以复制了.
        然后我们转到上面的代码栏, 按下面的输入方式,即可跳到捡东西的代码所在了.


        IP属地:广东4楼2022-10-10 17:31
        回复

          这就是读取人物横坐标后的返回地址, 注意,它存储在了 [ebp-260]中,所以我们继续往下找,后续它肯定有相关的坐标判断比较

          这里就是判断2个坐标的地方, 可以看到 +84是物品的横坐标, +86 是纵坐标(长度是word),
          cmp esi,edx
          jne .... 这个不相等跳转就是隔空捡的关键所在了.

          我们按4楼的方法,以鼠标捡物品,同样也找到相关代码地址.

          这里就是鼠标捡物品时,坐标判断的代码所在
          找到地址,我们把4个不等跳转 jne 全部 nop 掉,即完成了对C端的隔空捡的修改
          后面是成品脚本:
          [ENABLE]
          "BackMir.exe"+1722DC:
          nop 2
          BackMir.exe+1722F5:
          nop 2
          "BackMir.exe"+189F79:
          nop 2
          "BackMir.exe"+189F56:
          nop 6
          [DISABLE]
          "BackMir.exe"+1722DC:
          jne BackMir.exe+172351
          movzx esi,word ptr [ebp-20]
          //Alt: db 75 73 0F B7 75 E0
          BackMir.exe+1722F5:
          db 75 5A
          "BackMir.exe"+189F56:
          //jne BackMir.exe+189FDC
          db 0F 85 80 00 00 00
          "BackMir.exe"+189F79:
          //jne BackMir.exe+189FDC
          db 75 61


          IP属地:广东5楼2022-10-10 17:43
          回复
            虽然伸手党 但是支持大佬做的贡献 还有服务器端开没问题 客户端一用游戏就崩溃报错


            IP属地:山东6楼2022-10-10 17:46
            收起回复
              让大家学多点东西, 游戏如何判断 鼠标与键盘的输入?
              其实在我们找到的代码处,往上翻一些,就有了.

              这是判断鼠标左键点击的代码, 01 是左键, 02是右键....

              这是判断按空格键的代码, 20 即是空格键的编号
              0D ENTER 键
              10 SHIFT 键
              11 CTRL 键
              12 ALT 键
              ...
              键位的编号,这些可在网络上搜索得到


              IP属地:广东7楼2022-10-10 17:47
              回复
                好,继续修改S端. 找出人物横坐标内存地址,然后我们查看谁访问它

                回到C端让人物捡东西,就有新的追踪. 这里是5次访问,是因为C端已经修改好了,地面的5件东西,它都捡

                显示反汇编,定位到代码所在, 然后我们像C端一样 nop 掉判断跳转即可,这样就实现了所谓的隔空捡
                当然,这样的修改其实是全图捡! 所以你得继续完善你的脚本,否则修改过头,游戏体验也就适得其反.
                这里就不提供脚本了,算是大家的作业吧.我分享的成品工具是3*3范围,我觉得是最合适的
                最后的图是在寒冰王座使用符咒召唤魔王时,坐标判断的代码,基础差的可以参考,应该就差不多了.


                IP属地:广东8楼2022-10-10 17:56
                回复


                  IP属地:北京9楼2022-10-10 18:00
                  回复
                    大佬很厉害哦


                    10楼2022-10-10 18:28
                    回复
                      强,获取共用代码这招真是厉害


                      IP属地:云南来自Android客户端11楼2022-10-11 23:25
                      回复


                        IP属地:四川来自手机贴吧12楼2022-10-13 13:12
                        回复
                          大佬厉害


                          IP属地:上海来自Android客户端13楼2023-01-14 23:28
                          回复


                            IP属地:辽宁14楼2023-01-15 17:17
                            回复
                              历害 学习学习


                              IP属地:河南来自Android客户端15楼2023-01-16 20:56
                              回复