希望bm吧 关注:616贴子:1,081
  • 9回复贴,共1

有关梦回传奇的腕力修改

只看楼主收藏回复

昨晚群里有讨论修改刺客腕力的事
当时,我以自己过往的经验给出了建议,认为是很简单的
"
解决刺客的腕力问题,应该简单吧。
1, 背包只留2件武器,1件能正常装备,另一件因腕力无法装备
2, 对无法装备的物品重量地址下断+20吧,用数据断点,中断与追踪,访问时
3, 对能装备的物品重量地址又下断
相互比较一下,就知道哪里了"
"不想改代码,可以进一步获知人物的腕力数值地址,可以调整大小"
今天忍不住尝试了下,获知的事实有点打脸,实现修改的方法与我的预估完全不沾边.


IP属地:广西1楼2022-11-13 09:14回复
    先按我设想来吧,CE附加游戏服务端,登陆一个35级的道士号,
    背包里只放一把逍遥扇,小退重登陆,这能保证武器的数据是存储在背包第一格的地址中
    逍遥扇是35级能装备,但道士受腕力所限是无法正常装备的,所以就以此来测试
    好,先按我原先的设想来下断追踪,定位背包第一格地址,对 +20 这个位置下断 ; +20 这偏移是物品重量
    以下是操作图示:

    注意, 弹出的小窗后,要选"访问时中断"

    下好断点,回游戏里右键使用逍遥扇....完全没反应!
    打脸之一


    IP属地:广西2楼2022-11-13 09:24
    回复
      好吧,那继续想办法,按昨晚的讨论,在客户端进行尝试
      "在服务端不行,腕力应该是在客户端就作了判断
      这个应该是双重的吧,类似传送戒指的佩戴和性别,职业等等需求
      是的,已经证实,客户端先比对,符合才发服务端"
      打开另一个CE附加客户端进程,原来下断的CE先不要动它.
      浏览定位到C端背包第一格地址,对+20位置用2楼的方式进行下断追踪,再使用武器.
      这回有响应了,如下图:

      展开所有追踪后,双击第一条代码,快速定位汇编栏的相应地址,如下图:

      cmp eax,edx 这个比较就很关键,注意看追踪右边寄存器的数值,eax = 29, edx = 2d
      edx 是武器重量,那eax就是当前人物腕力了


      IP属地:广西3楼2022-11-13 09:33
      回复
        到这里,修改代码,将 jnl BackMir.exe+C7635 改为 jmp BackMir.exe+C7635,再装备武器,
        然后你会发现,S端的下断有响应了!但是,武器也成功装备好了!所以,腕力的判断完全是在C端实现的.
        打脸之二,没有什么双重判断
        好吧,继续研究,看看腕力是什么获取的,也就是eax怎么来的
        是前面的 call BackMir.exe+176630, 代码栏里点击它,然后按空格进入,你会发现它又调用了好几个call
        好吧,直接下断 "在此中断并追踪",以下是结果
        先补一下上楼所说的 eax = 29, edx = 2D 的图,上面看得不真切

        人物腕力又是由最后一个 call +183A10 而得到

        追踪界面上点击 call +183A10 查看它的参数 eax = 2 ; 其实就是人物职业
        这个不上图了,你们试吧.
        所以,腕力的调整并非像改血量那样,简单的修改一个地址的数值就能实现的
        打脸之三
        我粗略查看了下,腕力的计算涉及人物职业和等级,当然全部在C端完成
        所以要仅要调整刺客的腕力,在call +183A10处注入代码吧,判断职业后再处理


        IP属地:广西4楼2022-11-13 09:51
        回复
          [ENABLE]
          alloc(newmem,80)
          label(returnhere)
          label(originalcode)
          label(exit)
          newmem:
          push eax // eax 为角色职业
          //多1个 push eax 是要多存储一份职业的数据
          //方便调用函数后取回数据
          originalcode:
          call BackMir.exe+183A10
          //注意,此时 eax = 人物腕力
          pop edx // 把之前存储的职业取回来
          // 选用 edx 是后面 有 cmp eax,edx 比较武器重量
          // edx 可以放心用,别寄存器就不可靠
          cmp edx,3 // 职业代码 1 ~ 3 , 3是刺客
          jne returnhere
          // 调整刺客腕力 +10
          add eax,0A
          exit:
          jmp returnhere
          "BackMir.exe"+17669C:
          jmp newmem
          returnhere:
          [DISABLE]
          dealloc(newmem)
          "BackMir.exe"+17669C:
          call BackMir.exe+183A10
          //Alt: db E8 6F D3 00 00


          IP属地:广西5楼2022-11-13 10:01
          回复
            赞👍


            IP属地:重庆来自Android客户端6楼2023-01-14 10:27
            回复
              支持


              IP属地:江苏来自Android客户端7楼2023-01-14 11:51
              回复
                希望分享更多的经验


                IP属地:浙江来自iPhone客户端8楼2023-01-14 22:12
                回复


                  IP属地:四川9楼2023-04-14 16:25
                  回复
                    为技术高手点赞


                    IP属地:湖南10楼2023-12-02 11:07
                    回复