宙斯众神之王吧 关注:2,503贴子:26,565

小白修改Zeus.exe产量的过程记录

只看楼主收藏回复



IP属地:湖北1楼2023-02-26 17:29回复

    使用x32dbg打开Zeus.exe
    根据前辈的研究得知,麦田产量地址为0049D7D3
    使用Ctrl + G定位该地址


    IP属地:湖北2楼2023-02-26 17:35
    回复

      经过反汇编得到指令:shl ecx,0x2
      百度改指令意思可知,SHL(左移)指令使目的操作数逻辑左移一位,最低位用 0 填充。最高位移入进位标志位,而进位标志位中原来的数值被丢弃
      若将 1100 1111 左移 1 位,该数就变为 1001 1110


      IP属地:湖北3楼2023-02-26 18:06
      回复

        任何操作数左移 n 位,即将该数乘以 2^n
        所以我们要想把麦田产量增加4倍就要把02改成04,这样7月份可以得到32份小麦,一个麦田就可以把粮仓装满
        同理,如果把02改成06就可以得到128份麦田


        IP属地:湖北4楼2023-02-26 18:21
        回复

          我们使用UltraEdit打开Zeus.exe
          使用Ctrl + G,输入0x9D7D3
          这里的0x9D7D3是通过0049D7D3减去00400000得到的
          定位到C1 E1 02之后,将02修改为06,就可以使一个麦田建筑产出128份小麦了


          IP属地:湖北5楼2023-02-26 18:30
          收起回复

            保存编辑后,进入游戏验证

            产出128单位小麦,证明我们的修改已经成功了!


            IP属地:湖北6楼2023-02-26 18:41
            收起回复
              这手推车简直了……


              IP属地:云南来自iPhone客户端7楼2023-02-26 20:36
              回复
                厉害了大佬


                IP属地:安徽来自Android客户端8楼2023-02-26 21:16
                回复
                  厉害啊……不知道能不能做个修改器


                  IP属地:山东来自Android客户端9楼2023-02-26 21:28
                  收起回复
                    厉害了!


                    IP属地:河北来自Android客户端10楼2023-02-26 22:16
                    回复
                      上面是小麦产量修改,下面研究一下羊毛产量修改


                      IP属地:湖北11楼2023-02-26 22:18
                      回复
                        首先进游戏观察可知,牧羊人把羊毛剪下后,进入羊毛场,羊毛场会存储100羊毛
                        上限是500羊毛


                        IP属地:湖北12楼2023-02-26 22:20
                        回复
                          然后每100羊毛会产出一单位羊毛


                          IP属地:湖北13楼2023-02-26 22:23
                          回复
                            分析完游戏数据后,就可以大概看懂反汇编代码了
                            根据前辈留下的地址:004E2B72
                            我们使用Ctrl + G定位到这里

                            显示的反汇编代码是:mov byte ptr ds:[eax+0xD2777F],0x64
                            我完全看不懂,百度一下了mov的意思,就是把逗号后面的数放进逗号前面的地址里
                            byte ptr ds:[eax+0xD2777F]这段,我百度了也没搞明白,但是整段语句的意思,我大概明白了
                            就是把0x64的值赋给前面的地址
                            把十六进制的0x64转换成十进制,是100!
                            这个100刚好和游戏中,牧羊人进入羊毛场得到100羊毛是吻合的!
                            但是同时由于这段代码中0x64只占一个字节,所以最大只能把64修改为FF,转换为十进制就是255
                            就是一只羊剪下羊毛后,经过修改最大可以获得255羊毛,经过羊毛场转换为2单位羊毛
                            2单位羊毛这显然对于我们来说太少了(我想做到一只羊满足一座城
                            所以我们得重新寻找修改方法!


                            IP属地:湖北14楼2023-02-26 22:38
                            回复
                              可以对难度进行加上


                              IP属地:上海来自Android客户端15楼2023-02-26 22:41
                              收起回复