智代after吧 关注:2,995贴子:59,298

【原创】鹰文与地下城(D&T)小游戏修改器

只看楼主收藏回复

楼下发 不知道百度吞不吞链接,反正下载地址发出来之前别插楼




1楼2011-04-14 05:42回复
    果断被审核了…… 修改去……


    2楼2011-04-14 05:42
    回复
      ※ 使用此程序可能会极大的降低您的游戏兴趣及游戏的乐趣,请慎重使用!
      ——————————————————————————————
      说明:
      此程序基于文件主程序为1.4.6.9版本的TOMO汉化版而开发,其他版本未测试,
      在1.3.5.4的日文原版程序下测试失败。
      功能说明
      一血不死:将所有己方人物血量设置为被攻击后为1,且再次受到攻击时血量锁定为1。
      超级属性:将所有己方人物各项属性值设置为65535(FFFFH),开启后任意更换一件装备后生效。
      无限负重:将负重属性设置为65535,重新打开物品界面生效。
      超级药水:使用任何回复药水即可补满全部HP。
      修改日期&修改层数:作用都明白的……  在人物打通一关的通关界面或在地面时修改即可,否则容易失败。
      ——————————————————————————————
      各功能实现方法
      一血不死
      0049EAE3    8B4C24 20       mov     ecx, dword ptr [esp+20]
      0049EAE7    8B5424 1C       mov     edx, dword ptr [esp+1C]
      0049EAEB    5F              pop     edi
      0049EAEC    5E              pop     esi
      0049EAED    899481 401F0000 mov     dword ptr [ecx+eax*4+1F40], edx
      0049EAF4    5D              pop     ebp
      0049EAF5    B8 01000000     mov     eax, 1
      0049EAFA    5B              pop     ebx
      0049EAFB    C3              retn
      此处即为受到伤害的代码(其实人物移动之类的也会经过这里 区别在于EAX)
      当EAX等于43 F6 1A9 25C(均为16进制) 时分别对应游戏4个己方受到伤害
      edx为伤害后的血量,因此在此hook到自己的代码, 代码变为
      0049EAE3    8B4C24 20       mov     ecx, dword ptr [esp+20]
      0049EAE7    8B5424 1C       mov     edx, dword ptr [esp+1C]
      0049EAEB    5F              pop     edi
      0049EAEC    5E              pop     esi
      0049EAED    50              push    eax
      


      3楼2011-04-14 05:49
      回复
        0049EAEE    B8 2D8F0903     mov     eax, 3098F2D
        0049EAF3    FFE0            jmp     eax
        0049EAF5    58              pop     eax
        0049EAF6    90              nop
        0049EAF7    90              nop
        0049EAF8    90              nop
        0049EAF9    90              nop
        0049EAFA    90              nop
        0049EAFB    C3              retn
        3098F2D为自己申请的内存
        hook到的地方
        03098F2E    83F8 43         cmp     eax, 43           //判断是否等于那几个数值
        03098F31    74 2B           je      short 03098F5E    //是就跳转到03098F5E
        03098F33    3D F6000000     cmp     eax, 0F6
        03098F38    74 24           je      short 03098F5E
        03098F3A    3D A9010000     cmp     eax, 1A9
        03098F3F    74 1D           je      short 03098F5E
        03098F41    3D 5C020000     cmp     eax, 25C
        03098F46    74 16           je      short 03098F5E    //上面几行同上
        03098F48    899481 401F0000 mov     dword ptr [ecx+eax*4+1F40], edx //都不是 正常传递edx
        03098F4F    5D              pop     ebp     //这几行是原来自带的上面nop掉了 补上
        03098F50    B8 01000000     mov     eax, 1
        


        4楼2011-04-14 05:49
        回复
          03098F55    5B              pop     ebx
          03098F56    50              push    eax //eax原值入栈保存
          03098F57    B8 F5EA4900     mov     eax, 49EAF5 //把回去的值放入eax
          03098F5C    FFE0            jmp     eax //跳回去
          03098F5E    C78481 401F0000>mov     dword ptr [ecx+eax*4+1F40], 1 //如果是那几个值就传入1
          03098F69  ^ EB E4           jmp     short 03098F4F //转到上面跳回去的代码
          超级属性实现方法
          10002A1C    C700 01000000   mov     dword ptr [eax], 1
          10002A22    83C0 04         add     eax, 4
          10002A25    4E              dec     esi
          10002A26  ^ 75 C7           jnz     short 100029EF
          10002A28    8B81 E4000000   mov     eax, dword ptr [ecx+E4]
          10002A2E    8B91 E8000000   mov     edx, dword ptr [ecx+E8]
          10002A34    8981 4C010000   mov     dword ptr [ecx+14C], eax         ; *
          10002A3A    8B81 EC000000   mov     eax, dword ptr [ecx+EC]
          10002A40    8991 50010000   mov     dword ptr [ecx+150], edx         ; *
          10002A46    8B91 F0000000   mov     edx, dword ptr [ecx+F0]
          10002A4C    8981 54010000   mov     dword ptr [ecx+154], eax         ; *
          10002A52    8B81 F4000000   mov     eax, dword ptr [ecx+F4]
          10002A58    8991 58010000   mov     dword ptr [ecx+158], edx         ; *
          


          5楼2011-04-14 05:49
          回复
            10002A5E    8B91 F8000000   mov     edx, dword ptr [ecx+F8]
            10002A64    8981 5C010000   mov     dword ptr [ecx+15C], eax         ; *
            10002A6A    8B81 FC000000   mov     eax, dword ptr [ecx+FC]
            10002A70    8991 60010000   mov     dword ptr [ecx+160], edx         ; *
            10002A76    8B91 00010000   mov     edx, dword ptr [ecx+100]
            10002A7C    8981 64010000   mov     dword ptr [ecx+164], eax         ; *
            10002A82    8B81 04010000   mov     eax, dword ptr [ecx+104]
            10002A88    8991 68010000   mov     dword ptr [ecx+168], edx         ; *
            10002A8E    8B91 08010000   mov     edx, dword ptr [ecx+108]
            10002A94    8981 6C010000   mov     dword ptr [ecx+16C], eax         ; *
            10002A9A    5E              pop     esi
            10002A9B    8991 70010000   mov     dword ptr [ecx+170], edx         ; *
            10002AA1    33C0            xor     eax, eax
            10002AA3    C2 1000         retn    10
            *号注明的地方即往人物4围属性传入的语句,这段代码在更换装备时会调用,于是…… HOOK!
            10002A25    4E              dec     esi
            10002A26  ^ 75 C7           jnz     short 100029EF
            10002A28    50              push    eax
            10002A29    B8 85A02400     mov     eax, 24A085
            


            6楼2011-04-14 05:49
            回复
              10002A2E    FFE0            jmp     eax
              10002A30    58              pop     eax
              10002A31    90              nop
              10002A32    90              nop
              10002A33    90              nop
              10002A34    90              nop                                      ; *
              10002A35    90              nop
              ……
              省略N个nop
              ……
              10002A9F    90              nop
              10002AA0    90              nop
              10002AA1    90              nop
              10002AA2    90              nop
              10002AA3    C2 1000         retn    10
              24A085为自己的内存空间
              0024A085    58              pop     eax
              0024A086    C7C0 FFFF0000   mov     eax, 0FFFF
              0024A08C    C7C2 FFFF0000   mov     edx, 0FFFF
              0024A092    8981 4C010000   mov     dword ptr [ecx+14C], eax
              0024A098    C7C0 FFFF0000   mov     eax, 0FFFF
              0024A09E    8991 50010000   mov     dword ptr [ecx+150], edx
              0024A0A4    C7C2 FFFF0000   mov     edx, 0FFFF
              0024A0AA    8981 54010000   mov     dword ptr [ecx+154], eax
              0024A0B0    C7C0 FFFF0000   mov     eax, 0FFFF
              


              7楼2011-04-14 05:49
              回复
                0024A0B6    8991 58010000   mov     dword ptr [ecx+158], edx
                0024A0BC    C7C2 FFFF0000   mov     edx, 0FFFF
                0024A0C2    8981 5C010000   mov     dword ptr [ecx+15C], eax
                0024A0C8    C7C0 FFFF0000   mov     eax, 0FFFF
                0024A0CE    8991 60010000   mov     dword ptr [ecx+160], edx
                0024A0D4    C7C2 FFFF0000   mov     edx, 0FFFF
                0024A0DA    8981 64010000   mov     dword ptr [ecx+164], eax
                0024A0E0    C7C0 FFFF0000   mov     eax, 0FFFF
                0024A0E6    8991 68010000   mov     dword ptr [ecx+168], edx
                0024A0EC    C7C2 FFFF0000   mov     edx, 0FFFF
                0024A0F2    8981 6C010000   mov     dword ptr [ecx+16C], eax
                0024A0F8    5E              pop     esi
                0024A0F9    8991 70010000   mov     dword ptr [ecx+170], edx
                0024A0FF    33C0            xor     eax, eax
                0024A101    50              push    eax
                0024A102    B8 302A0010     mov     eax, 10002A30
                0024A107    FFE0            jmp     eax
                这个应该比较明白,所有要传入的四围全部设置为0xFFFF(即65535)
                然后跳回去
                超级药水
                这里是回复血量的代码
                1000580A    8D0C89          lea     ecx, dword ptr [ecx+ecx*4]
                1000580D    8B148D 48860210 mov     edx, dword ptr [ecx*4+10028648]
                10005814    8D0C8D 48860210 lea     ecx, dword ptr [ecx*4+10028648]
                1000581B    83FA 02         cmp     edx, 2
                


                8楼2011-04-14 05:49
                回复
                  1000581E    75 2A           jnz     short 1000584A
                  10005820    8B51 24         mov     edx, dword ptr [ecx+24]          ; ECX传入增加值
                  10005823    8BB8 0C010000   mov     edi, dword ptr [eax+10C]         ; EDI传入当前值
                  10005829    8B88 DC000000   mov     ecx, dword ptr [eax+DC]          ; ECX传入HP上限值
                  1000582F    03FA            add     edi, edx                         ; 当前值=当前值+增加值
                  10005831    8BD7            mov     edx, edi                         ; EDX传入增加后的值
                  10005833    89B8 0C010000   mov     dword ptr [eax+10C], edi         ; 向当前血量地址写入增加后的值
                  10005839    3BCA            cmp     ecx, edx                         ; 比较当前HP和HPMAX
                  1000583B    7D 06           jge     short 10005843                   ; HPMAX≥HP就空过去下面这句
                  1000583D    8988 0C010000   mov     dword ptr [eax+10C], ecx         ; 如果HP超出了HPMAX则HP=HPMAX
                  10005843    5F              pop     edi
                  10005844    33C0            xor     eax, eax
                  10005846    5B              pop     ebx
                  


                  9楼2011-04-14 05:49
                  回复
                    10005847    C2 0800         retn    8
                    直接把跳转语句nop掉 也就是这句
                    jge     short 10005843
                    NOP即空操作(什么也不做直接下一行代码) 就不会跳过下面当前血量等于最大血量的代码,于是……  效果出来了。
                    其他的就是简单的直接改内存值了  用搜索工具搜索当前的负重值,然后升级加负重 然后搜索变化后的,找到地址直接更改即可,层数时间同上,就不多说了。
                    ———————————————————————————————
                    本人代码的查找方法
                    1血不死,反复搜索得到当前血值,用OD在血值上下内存写入断点…… 然后挨打就出来了
                    药水同上 只不过是吃药
                    属性也差不多,找到属性地址 下内存写入,然后换装备去……
                    其他的就是直接的内存搜索了  上面也说了
                    ———————————————————————————————
                    制作开始时间13日下午4点半,完成时间14日凌晨4:10
                    总耗时接近12小时(晚饭时间没排除,其他的应该都在做这个东西)
                    制作的时候脑子里总有一种D&F的视感,话说这东西是D&T唉,难道是名字相近?
                    还是功能和那东西的某 哗… 功能类似?
                    噗……
                    编写程序是易语言内嵌汇编,电脑里就这点东西直接利用了,不过就这样估计报毒也会比TOMO的那个CE做的修改器报毒会少些吧。
                    ———————————————————————————————
                    下载地址
                    http://www.baidu.com/s?bs=http%3A%2F%2Fgood.gd%2F1111263.htm&f=8&wd=good.gd%2F1111263.htm
                    打开搜索框里的地址
                    http://%64%6E%66%6C%79%2E%79%73%31%36%38%2E%63%6F%6D/
                    我倒看看bai度还吃不吃链接


                    10楼2011-04-14 05:49
                    回复
                      修改完一刷新出来了…… 好吧,就这样了。
                      ———————————end—————————————


                      11楼2011-04-14 05:51
                      回复
                        额 想起来顺便说下,我用的那个汉化主程序在置顶里有,可以下载用下,不过要事先备份存档 然后把那个999结尾的文件替换到新存档 就可以直接开启D&T了


                        12楼2011-04-14 06:28
                        回复
                          查找修改内存?........似乎有些......难?


                          IP属地:广东14楼2011-04-15 10:55
                          回复
                            游戏修改器神马的最有爱了,果断留名


                            IP属地:河北15楼2011-04-15 23:40
                            回复