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

CE汇编相关:以手工数据为例,子,进行指针数据的读写

只看楼主收藏回复

例行水一贴子吧,当然也有点干货.
上次发了一个帖子,是有关手工经验和等级的,现在要讲怎么修改它们.
我直接上图吧,是各项数据的偏移

这些地址如何找出来?手工等级和经验的数据不是加密的,所以不熟悉游戏的人,也可以按"实数"搜索到它们的地址.当然要注意搜索前设置字节长度,等级是 byte, 经验是 word
如果想用'特征码',可以搜索"3D F6 06 00 00 00"(cmp eax,000006F6)
6F6 是双倍手工凭证的编号,311有这个物品,成功加工材料时,会有这个判断


IP属地:广东1楼2022-11-06 19:33回复
    有数据(人物)偏移,其实剩下的事就简单了,分分钟能一键实现9级加工技能:
    注意,按数据存储的长度,等级最高是255,经验最大是65535, 实际的最大数据,等级是9,经验是500,为避免出错,请按实际的来改吧.
    这里假设 N = 人物基址,还不会找基址的,请到Q群595119623下载视频教程,先学学更基础的东西
    那么更改(写)矿石加工等级是:
    [N+4352]:
    db 09
    很简单,是吧. db 是按字节逐一将数据写入到地址里,所以必须先将数据转为对应的十六进制,不足2个数字的,前面要加个0,所以9级要写成09
    还有一个要注意的地方,内存数据是低位在前,高位在后, db 是按顺序一个个写数据的,所以写大数据时,必须要"倒着写",这个其实也讲过多次了.比如1楼的"3D F6 06 00 00 00"(cmp eax,000006F6),这也是一个实例, F6 06 就是"倒着写"的物品编号6F6
    所以,我们要更改(写)矿石加工经验成500(十六进制 1F4 )时:
    [N+4354]:
    db F4 01


    IP属地:广东2楼2022-11-06 19:54
    收起回复
      以此类推,你们就可以设置一个脚本,一激活就实现全加工等级的修改了,不要再傻呼呼去"脆求大神大佬"了:
      [ENABLE]
      [N+4352]:
      db 09
      [N+4356]:
      db 09
      ...
      ....
      [DISABLE]
      但其实是变态修改方式,少了些"过程",自然也少了些体验.所以我推荐另一种修改方法:减少升级所需要的经验
      比如,1级升2级原来是20点,我们可以改成5点,也就是加工一次就升级,这个指针写法是:
      [[GameSvr.exe+1DEEA4]+50+1*2+06]: // 1 就是 1级, 最高能用8代替,也就是最大范围是8级升9级
      db 05
      脑子活的,应该完全知道上面的 N 是怎么写的了
      没错,指针地址就是用 [] 中括号取地址, 多1级偏移就要多一层中括号,
      继续上实例吧, 假设 M 是基址, 06, 07, 08, 各是一层偏移,写些指针数据就是:
      [[[[M]+06]+07]+08]:
      db XX XX XX XX
      注,左括号数量与右括号数量是相等的,各是4个!


      IP属地:广东3楼2022-11-06 20:14
      回复
        忘了讲指针数据的"读"操作.?上面都是直接改地址的数据,是CE提供的方法.而要实现读数据,肯定得用汇编(机器语言)
        我也没什么耐心了,直接上完整代码并加注释吧,代码要实现的功能就是,各升级经验减半
        [ENABLE]
        alloc(new_,256)
        createthread(new_)
        new_: // 实现手工加工材料的升级经验减半
        xor esi,esi // 等级 计数器
        //升级所要经验 word ptr [[GameSvr.exe+1DEEA4]+50+等级*2+06]
        mov edi,[GameSvr.exe+1DEEA4]
        lea edi,[edi+50+06] // 等价 add edi,50 add edi,06
        _loop_set_exp:
        inc esi
        cmp esi,9 // 取经验的等级范围是 1 ~ 8
        jnl _end_loop_set_exp
        lea ebx,[edi+esi*2] // 取存储各级经验的地址
        movzx eax,word ptr[ebx] // 读出原本经验值
        push eax
        call Get_Half // 取原经验的一半
        mov [ebx],ax // 写入新经验, 注意是用 ax , 数据的长度是 word
        jmp _loop_set_exp
        _end_loop_set_exp:
        ret
        Get_Half:
        // 参数 输入的数字
        // eax 返回值 参数的一半
        push ebp
        mov ebp,esp
        mov eax,[ebp+8] // 参数
        cdq // 必须的, 腾空 edx 的数据
        mov ecx,2
        idiv ecx //除以2,结果存储在 eax, edx 存储余数
        mov esp,ebp
        pop ebp
        ret 04
        [DISABLE]
        dealloc(new_)


        IP属地:广东4楼2022-11-06 20:45
        回复
          少了手工装备的加工数据?
          我没忘,这是留给你们的作业


          IP属地:广东5楼2022-11-06 20:50
          回复
            如果想用'特征码',可以搜索"3D F6 06 00 00 00"(cmp eax,000006F6)
            此处应为:
            如果想用'特征码',可以搜索"68 F6 06 00 00 00"(push 6F6)
            实际上,游戏是检测背包里有没有这个物品,是调用了1个函数,函数的参数就是物品的编号


            IP属地:广东6楼2022-11-06 21:07
            回复
              顶!虽然有点看不懂还是先加个群慢慢学习,谢谢大佬无私分享~~~~


              7楼2022-11-06 21:46
              回复
                顶,今晚又举一反三学了些东西


                IP属地:云南来自Android客户端8楼2022-11-06 23:43
                回复


                  IP属地:新疆来自Android客户端9楼2022-11-07 16:50
                  回复
                    2,3的地址写法有误,回复中附上了更正。有网友实践不成功后,我再回头看,才发现此错误


                    IP属地:广东来自Android客户端10楼2022-11-07 20:58
                    回复
                      假设 M 是基址, +06, +07, +08, 共3层偏移,指针数据地址
                      [[[M]+06]+07]+08:
                      假设 M 是基址,+ 06,+ 07, +08, +0, 共4层偏移,指针数据地址
                      [[[[M]+06]+07]+08]+0:

                      [[[[M]+06]+07]+08]: // 即 +0 可以省略


                      IP属地:广东11楼2022-11-07 21:03
                      回复


                        IP属地:北京来自Android客户端12楼2022-11-08 09:13
                        回复
                          赞👍


                          来自Android客户端13楼2023-01-14 08:28
                          回复
                            大佬这个情况咋解决啊


                            IP属地:江苏来自iPhone客户端14楼2023-03-10 20:22
                            收起回复
                              牛逼,我学一周了,还是啥都不会,没啥动力了


                              IP属地:四川15楼2023-04-14 15:37
                              收起回复