精华内容
下载资源
问答
  • 点击开始游戏! 有鱼上钩! 可以修改里面的数据吗 可以!你可以! ...作为修改者或使用者你 要在遵守法律前提...对本游戏 只允许正常玩游戏娱乐 还有在软件学习设计和交流中使用 禁止任何形式剽窃 -前提...

    点击开始游戏!

    有鱼上钩! 可以修改里面的数据吗

    可以的!你可以的!

    -前提是-

    作为修改者或使用者的你 要在遵守法律的前提下 不通过本游戏及修改后的本游戏进行一切非法商业行为及其他违法行动

    本文的目的是为了有更近一步的游戏体验下 允许修改者发挥想象及创意等 对修改《有鱼上钩!》的要点做出说明

    对本游戏 只允许正常玩游戏娱乐 还有在软件学习设计和交流中使用 禁止任何形式的剽窃

    -前提完毕 感谢你的配合-

     

    总之 把这游戏 当成单机游戏修改吧

    首先先把游戏本体下载下来 下面是下载地址

    GitHub1(推荐)  

    网盘地址(推荐) 

    然后是浏览器 由于种种原因 请一定要下载火狐浏览器(Mozilla Firefox)

    火狐浏览器下载地址

    再下来要准备的就是 一个本文编辑器

    一般电脑上能打开TXT的记事本 但要是真用记事本来查看和修改下面这种数据文件的话就未必...

    那个 要是能无差别的使用记事本修改的话 那请收下我的敬仰...

    这里要推荐下Sublime Text  由于修改的数据配置文件主要是json文件

    Sublime Text 看json文件 会比较好看一些 因为里面带有各种提示以及着色功能:

     

    【普通修改过程】

    上面的游戏本体/火狐浏览器/Sublime Text都准备好了吗

    接下来就要大干一场了 

    如果是从网盘下载游戏本体【有鱼上钩!.zip】的话 那就解压 找到【HookedFish】文件夹

    为了避免文件路径方面识别的麻烦 建议直接把【HookedFish】文件夹复制到磁盘目录下

    例如直接拷贝到E盘下边

    由或者是把【HookedFish】文件夹 放到全英文的路径下 比如下图 就是放到E盘的Files文件夹下 

     

    接下来就是使用Sublime Text  点击里面的【文件】-->【打开文件夹】 然后选择打开【HookedFish】文件夹

     

    打开后 应该能看到:

    【HookedFish】文件夹出现在里面的话 那就可以进行下一步了

    下一步我们要找到【game.json】文件 这是我们主要去修改的文件

    点击里面的【resource】就能看到【game.json】

    然后点击一下【game.json】 

    长舒一气!终于能看到了!

    既然打开了 现在我们先来小试牛刀吧

     

    【尝试改变某个鱼塘的背景颜色】

     这次要修改的是【掺水鱼塘】的背景颜色 相信看过《钓鱼篇》的你 是不会对【掺水鱼塘】感到陌生的

    那么 要修改哪个地方 才能改变【掺水鱼塘】的背景颜色呢?

    首先找到标记【“levels”】 这个就代表地图上的设施点(行号为9)

    然后再【“levels”】右边的冒号【:】的右边的一对方括号【[]】内

    找到节点为【"id":"1"】的地方(行号为88)

    然后在往下稍微走几步 找到【"color"】

     

    现在我们要把背景颜色改成军校蓝色 军校蓝的颜色码是#5F9EA0

    这里要注意了 我们只需要【5F9EA0】 不需要【#】

    最后写好的是【0x5F9EA0】 其中【x】就是英文字母中的x

    改好了之后 就【保存】 按快捷键【ctrl + s】保存即可

     回到【HookedFish】文件夹内 用【火狐浏览器】 打开【index.html】文件

     看看我们修改好的成果吧  当然 看之前一定要保存之前对【game.json】的修改哦

    【掺水鱼塘】 Let's Go Princess Precure!  

    很好【掺水鱼塘】一片【军校蓝】 搞定! 

     

     

    【万一改呲了怎么办】

    1. 了解关于JSON的知识还是很有必要的 请点击 JSON教程 JSON语法

    2. 注意在【game.json】文件中不能修改的地方:

     ① 冒号(:)左边的部分请不要修改;例如上面提到的【"id":"1"】【"color":"0x5F9EA0"】中

    其中的"id" "color"以及包括其中双引号 都不要修改

    ② 其他符号 例如【{ } [ ] , :】的花括号 方括号 逗号 冒号 请在掌握上面的JSON教程之后 再仔细进行修改

    3. 在【game.json】文件中可以随便修改的地方:

    一般的话 冒号(:)右边的部分 如果有双引号("") 扩住的 或者是数字 可以进行修改

    但是为了 游戏平衡以及其他种种可能会引起问题的地方 请按照本文文末的说明文章进行参考

    4. 如果改了出错 造成无法打开【index.html】的 可以尝试重新下载游戏本体 再从游戏本体中的【game.json】进行修改;

    5. 错误校验 一般Sublime Text会有出错的提示 当出现输入错误是 及时按【ctrl + z】撤销即可 例如下面不小心删掉了某个逗号(行号88中的逗号)

    这时在89行 就会显示出些异常的东西 比如 【"name":"level_1_name"】中间的冒号被标记红色

    这时只要及时按快捷键【ctrl+z】撤销之前的操作即可

    又或者通过在线的JSON校验工具 全选【game.json】里面的全部并复制 粘贴到检验工具里面

    可以查看出是否有问题

     

    【修改参考文章】

    有鱼上钩!修改游戏显示的文字以及多语言设置

    有鱼上钩!创建新的钓鱼关卡

    有鱼上钩!修改玩家数据 还有道具数据

    有鱼上钩!做一条鱼!你也可以的!

    转载于:https://www.cnblogs.com/pp158825968/p/8796557.html

    展开全文
  • 修改植物大战僵尸的游戏数据 说明 1.掌握知识 1.了解二进制、十六进制对于计算机意义 2.掌握二/七/八十/十二/十六等多种数据进之间转换 3.掌握如何在windows及linux中修改并保存二进制文件 2.内容 修改...

    修改植物大战僵尸的游戏数据

    说明

    1.掌握的知识

    1.了解二进制、十六进制对于计算机的意义
    2.掌握二/七/八十/十二/十六等多种数据进之间的转换
    3.掌握如何在windows及linux中修改并保存二进制文件

    2.内容

    修改《植物大战僵尸》的存档文件,将一个新用户的进度直接修改到5-2关,金钱直接修改到10000

    3.用到的软件

    Hex Editor Neo
    《植物大战僵尸》

    4.原理

    下载好《植物大战僵尸》后,找到对应的存档文件,目录为C:\ProgramData\PopCap Games\PlantsVsZombies\userdata下的user1.dat,进行记录,为的是以后进行数据的对比。此时需要用准备好的软件Hex Editor Neo进行编辑。然后进入游戏,先通一关,再退出游戏找到user1.dat文件,查看数据有何变化,从而找到控制关卡的数据,进而进行修改;金币的修改原理类似。

    5.进行过程

    1.找到user1.dat文件,目录为C:\ProgramData\PopCap Games\PlantsVsZombies\userdata。
    在这里插入图片描述
    然后用Hex Editor Neo打开,得到如下的原始图片
    在这里插入图片描述

    1. 进入游戏通一关,再观察数据有什么变化,下图是通关后的存档截图。
      在这里插入图片描述
      通过对比数据可知在第一行的04位置数据发生了变化,由01变到了02,因此可知每增加一个数关卡增加一关。于是,实验此数据改为2a,在进入游戏,可以看到关卡已经变为5-2!可知猜想正确。
      在这里插入图片描述
    2. 再用类似原理改金币,原始图片为
      在这里插入图片描述
      而此时,对应的金币为0,同理,进入游戏得到一些金币后,再进行数据对比
      在这里插入图片描述
      进入游戏后,发现金币变为170,再查看数据变化,可知第一行的08位置每增加一金币增加10。经过实验证明,不只一个位置可以代表金币,第一行的09位置同样可以控制金币,于是将此位置此两个位置改为e8和03,再进入游戏观察,可知金币已经变为10000!
      在这里插入图片描述

    相关说明

    1. Hex Editor Neo从官网上下载,下载官网:https://www.hhdsoftware.com/free-hex-editor
    2. 《植物大战僵尸》可从游侠下载。
    展开全文
  • Cheat Engine 是一款内存修改编辑工具 ,它允许你修改的游戏软件内存数据,以得到一些其他功能。它包括16进制编辑,反汇编程序,内存查找工具。与同类修改工具相比,它具有强大反汇编功能,且自身附带了外挂...
  • 数据修改

    2019-07-17 09:34:53
    在传统网页和网站,软件,以及游戏反面等方面,都会提供一些修改不必要数据的功能,例如:QQ的称呢, 游戏的名称,购物网站上修改收货信息中的各种信息等等,即修改功能。 需要实现数据查询,数据回填,数据修改保存...

    在传统网页和网站,软件,以及游戏反面等方面,都会提供一些修改不必要数据的功能,例如:QQ的称呢,
    游戏的名称,购物网站上修改收货信息中的各种信息等等,即修改功能。
    需要实现数据查询,数据回填,数据修改保存
    Mvc控制器查询需要修改的数据

      public ActionResult Accountparticulars(int AccountID)
            {
                try{
                    var Accountparticular = (from tbAccount in myModels.B_Account
                                             join tbLi in myModels.S_LnitialAccount on
    tbAccount.LnitialAccountID equals tbLi.LnitialAccountID
                                             where tbAccount.AccountID == AccountID
                                             select new
                                             {
                                                 AccountID = tbAccount.AccountID,
                                                 LnitialAccountID = tbLi.LnitialAccountID,
                                                 AccountName = tbAccount.AccountName.Trim(),//账户名称
                                                 Accountbalance = tbAccount.Accountbalance,//账户余额
                                                 AcOpenbank = tbAccount.AcOpenbank.Trim(),//开户银行
                                                 AcNote = tbAccount.AcNote.Trim(),//备注
                                                 AcBankcardnumber = tbAccount.AcBankcardnumber,//银行卡号
                                                 LnitialBalance = tbLi.LnitialBalance,//期初余额
                                                 AcState = tbAccount.AcState,
                                             }).Single();
                    return Json(Accountparticular, JsonRequestBehavior.AllowGet);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    return Json(null, JsonRequestBehavior.AllowGet);
                }
            }
    

    //页面JS

    //修改数据回填
      function AccountUpdate(AccountID) {
                $('#UpdateAccountModal input[name = "reset" ]').click();
                $.post("Accountparticulars", { AccountID: AccountID }, function (date) {
                    loadDatatoForm("UpdateAccountModal", date);
                    if (date.AcState == true) {
                        $("#StateSex").click();
                    }
                    if (date.AcState == false) {
                        $("#StateEmp").click();
                    }
                });
                $("#UpdateAccountModal").modal("show");
    
            }
     //修改保存        
     function UpdatePreserve() {
                var ferfAccountName = $('#UpdateFromAccount [name = "AccountName"]').val();//账户名称
                if (ferfAccountName != "") {
                    $("#UpdateFromAccount").ajaxSubmit(function (returnJsonddddd) {
                        if (returnJsonddddd.State == true) {
                            $("#UpdateAccountModal").modal("hide");
                            table.reload("AcountTitle");
                            layer.alert(returnJsonddddd.Text)
                        }
                        else {
                            layer.alert(returnJsonddddd.Text)
                        }
                    });
                }
                else {
                    layer.alert("账户名称不能为空?");
                    $("#UpthreeIconDivicon").css("display", "block");
                }
            }
    

    修改的数据回填使用了一个封装的JS方法loadDatatoForm方法,主要是用于回填input文本框的值,是根据input标签中name的值回填对应的数据,name的值与数据库中的字段或你在查询中命名的字段相对应,该文本框就回填相对应的数据。
    修改保存用的是from表单的提交中的ajaxSubmit,需要用的一个插件;
    在这里插入图片描述
    提交的路径放在:
    在这里插入图片描述
    Action指定提交路径、method指定提交的方式。
    Mvc修改保存;

      public ActionResult UpdateAccountone(B_Account BAccount, S_LnitialAccount SlnitialAccount)
            {
                ReturnJson returnJsonddddd = new ReturnJson();
    
                try
                {
                    //查重
                    var AccountCount = (from tbAccount in myModels.B_Account
                                        where tbAccount.AccountID != BAccount.AccountID
                                        && tbAccount.LnitialAccountID == BAccount.LnitialAccountID
                                        && tbAccount.AccountName == BAccount.AccountName
                                        select tbAccount).Count();
                    if (AccountCount == 0)
                    {
                        //查询期初数据
                        S_LnitialAccount LnitialAccount = (from tbLnitial in myModels.S_LnitialAccount
                                                           where tbLnitial.LnitialAccountID == 				 													SlnitialAccount.LnitialAccountID
                                                           select tbLnitial).Single();
                        //修改期初数据
                        LnitialAccount.LnitialAccountID = SlnitialAccount.LnitialAccountID;
                        LnitialAccount.LnitialBalance = SlnitialAccount.LnitialBalance;//期初余额
    
                        //修改保存
                        myModels.Entry(LnitialAccount).State = System.Data.Entity.EntityState.Modified;
                        //  if (myModels.SaveChanges() > 0) 判断是否保存成功
                        if (myModels.SaveChanges() > 0)
                        {
                            //提取期初数据
                            var ID = LnitialAccount.LnitialAccountID;
                            var momo = LnitialAccount.LnitialBalance;//期初余额
                            //查询账户信息
                            B_Account listAvvount = (from tbAccount in myModels.B_Account
                                                     where tbAccount.AccountID == BAccount.AccountID
                                                     select tbAccount).Single();
                            //提取账户信息进行修改
                            listAvvount.AccountID = BAccount.AccountID;
                            listAvvount.LnitialAccountID = ID;
                            listAvvount.AccountName = BAccount.AccountName; // 账户名称
                            listAvvount.AcOpenbank = BAccount.AcOpenbank; //开户银行
                            listAvvount.AcBankcardnumber = BAccount.AcBankcardnumber;//银行卡号
                            listAvvount.AcNote = BAccount.AcNote;//备注
                            listAvvount.AcState = BAccount.AcState;//状态
                            //提取账户余额与期初余额比较
                            var mo = listAvvount.Accountbalance;
                            //判断账户余额是否为空,为空则赋值为0
                            if (mo == null)
                            {
                                mo = 0;
                            }
                            //判断账户余额与期初余额的关系
                            if (momo > mo )
                            {
                                listAvvount.Accountbalance = momo;
                                myModels.Entry(listAvvount).State = System.Data.Entity.EntityState.Modified;
                                if (myModels.SaveChanges() > 0)
                                {
                                    returnJsonddddd.State = true;
                                    returnJsonddddd.Text = "修改成功";
                                }
                                else
                                {
                                    returnJsonddddd.State = false;
                                    returnJsonddddd.Text = "修改失败";
                                }
                            }
                            else
                            {
                                myModels.Entry(listAvvount).State = System.Data.Entity.EntityState.Modified;
                                if (myModels.SaveChanges() > 0)
                                {
                                    returnJsonddddd.State = true;
                                    returnJsonddddd.Text = "修改成功";
                                }
                                else
                                {
                                    returnJsonddddd.State = false;
                                    returnJsonddddd.Text = "修改失败";
                                }
                            }
                        }
                    }
                    else
                    {
                        returnJsonddddd.State = false;
                        returnJsonddddd.Text = "该账户已经存在";
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    returnJsonddddd.State = false;
                    returnJsonddddd.Text = "风蚀符文";
                }
                return Json(returnJsonddddd, JsonRequestBehavior.AllowGet);
            }
    

    在数据修改中,如果修改的数据中存在,表与表中的数据存在对比关系,则可能需要设定可修改条件。
    例如:A表修改的主体表,B表是关系表,
    如果A表中的某个字段与B表的某个字段存在对比关系,A表的字段必须符合某种条件,才能修改B表的字段,如果不符合条件,则只可修改A表的字段,不可修改B表的字段。

    展开全文
  • ce修改器(Cheat Engine)一款专门修改内存修改编辑的游戏工具它包括16进制编辑,反汇编程序,内存查找工具 新版6.7版CE与6.0 最大区别就是添加了修改器制作工具,比之前版本更强大 ce修改器也是修改造梦西游3一款...
  • WINDOWS内存数据查看修改

    热门讨论 2012-03-24 11:54:37
    能直接查看和修改进程内存数据的软件。就是说能查看和修改正在运行的软件或游戏的内存数据,可用在破解软件,修改软件或游戏数据之用;适合电脑老鸟使用,新手必须学习必要的基本知识后才可。
  • 在内存中修改数据的网游外挂

    千次阅读 2007-04-24 08:29:00
    在内存中修改数据的网游外挂现在很多游戏都是把一些信息存入内存单元的,那么我们只需要修改具体内存值就能修改游戏中的属性,很多网络游戏也不外于此。 曾几何时,一些网络游戏也是可以用内存外挂进行修改的,后来...
    在内存中修改数据的网游外挂

    现在很多游戏都是把一些信息存入内存单元的,那么我们只需要修改具体内存值就能修改游戏中的属性,很多网络游戏也不外于此。

      曾几何时,一些网络游戏也是可以用内存外挂进行修改的,后来被发现后,这些游戏就把单一内存地址改成多内存地址校验,加大了修改难度,不过仍然可以通过内存分析器可以破解的。诸如“FPE”这样的软件便提供了一定的内存分析功能。

      “FPE”是基于内存外挂的佼佼者,是家喻户晓的游戏修改软件。很多同类的软件都是模仿“FPE”而得到玩家的认可。而“FPE”实现的技术到现在都没有公开,很多人只能够通过猜测“FPE”的实现方法,实现同类外挂。笔者也曾经模仿过“FPE”实现相应的功能,如“内存修改”、“内存查询”等技术。稍后会对此技术进行剖析。

      既然要做内存外挂,那么就必须对Windows的内存机制有所了解。计算机的内存(RAM)总是不够用的,在操作系统中内存就有物理内存和虚拟内存之分,因为程序创建放入物理内存的地址都是在变化的,所以在得到游戏属性时并不能够直接访问物理内存地址。在v86模式下,段寄存器使用方法与实模式相同,那么可以通过段寄存器的值左移4位加上地址偏移量就可以得到线性地址,而程序创建时在线性地址的中保留4MB-2GB的一段地址,游戏中属性便放于此。在windows中把虚拟内存块称之为页,而每页为4KB,在访问内存时读取游戏属性时,为了不破坏数据完整性的快速浏览内存地址值,最好一次访问一页。

      在操作进程内存时,不需要再使用汇编语言,Windows中提供了一些访问进程内存空间的API,便可以直接对进程内存进行操作。但初学者一般掌握不了这一项技术,为了使初学者也能够对内存进行操作,做出基于内存控制的外挂,笔者把一些内存操作及一些内存操作逻辑进行了封装,以控件形式提供给初学者。控件名为:MpMemCtl。

      初学者在使用此控件时,要先安装外挂引擎控件包(在此后的每篇文章中外挂引擎控件包仅提供与该文章相应的控制控件),具体控件安装方式,请参阅《Delphi指南》,由于篇幅所限,恕不能详细提供。

      在引擎安装完成后,便可以在Delphi中的组件栏内,找到[MP GameControls]控件组,其中可以找到[MpMemCtl]控件。初学者可以使用此控件可以对内存进行控制。

      一、 得到进程句柄

      需要操作游戏内存,那么首先必须确认要操作的游戏,而游戏程序在运行时所产生的每一个进程都有一个唯一的句柄。

      使用控件得到句柄有三种方法:

      1、 通过控件打开程序得到句柄。

      在控件中,提供了startProgram方法,通过该方法,可以打开程序得到进程句柄,并且可以返回进程信息。

    PProcInfo: PROCESS_INFORMATION;
    MpMemCtl.startProgram(
     FilePath:String; //程序路径
     var aProc_Info:PROCESS_INFORMATION //进程信息
    ):BOOLEAN  

      该方法提供了两个参数,第一个参数为要打开的程序路径,第二个参数为打开程序后所创建进程的进程信息。使用这个方法在得到进程信息的同时,并给控件的ProcHandle(进程句柄)属性进行了附值,这时可以使用控件直接对内存进程读写操作。其应用实例如下:

    Var
     PProcInfo: PROCESS_INFORMATION;
    begin
     MpMemCtl1.startProgram(edit1.Text, PProcInfo)   

      2、通过控件根据程序名称得到句柄。

      在控件中,对系统运行进程也有了相应的描述,控件提供了两个方法,用于根据程序名称得到相应的进程句柄。getProcIDs()可以得到系统现在所运行的所有程序的名称列表。getProcID()可以通过所运行程序名称,得到相应进程的句柄。

    getProcIDs():TStrings //所返回为多行字符串型

    getProcID(
    aProcName:String //应用程序名称
    ):Thandle; //应用程序进程句柄  

      其应用实例如下:

      首先可以通过getProcIDs()并把参数列表返回ComboBox1.Items里:

    ComboBox1.Items:=MpMemCtl1.getProcIDs();  

      接着可以通过getProcID()得到相应的进程句柄,并给控件的ProcHandle(进程句柄)属性进行了附值,这时可以使用控件直接对内存进程读写操作。

    MpMemCtl1.getProcID(ComboBox1.Text)  

      3、通过控件根据窗口名称得到句柄。

      在控件中,控件提供了两个方法,用于根据窗口名称得到相应的进程句柄。可以通过getALLWindow()得到所有在进程中运行的窗口。getWinProcHandle()可以通过相应的窗口名称,得到相应的进程的句柄。

    getALLWindow(
    aHandle:THandle //传入当前窗口的句柄
    ):TStrings; //返回当前所有运行窗口的名称

    getWinProcHandle(
    aWindowName:String //传入当前窗口名称
    ):Thandle; //返回窗口的句柄  

      其应用实例如下:

      首先可以通过getALLWindow ()并把参数列表返回ComboBox1.Items里:

    ComboBox1.Items:=MpMemCtl1. getALLWindow(Handle);  

      接着可以通过getWinProcHandle ()得到相应的进程句柄,并给控件的ProcHandle(进程句柄)属性进行了附值,这时可以使用控件直接对内存进程读写操作。

    MpMemCtl1. getWinProcHandle (ComboBox1.Text);  

      二、使游戏暂停

      在程序中,为了便于更好的得到游戏的当前属性。在控件中提供了游戏暂停方法。只需要调用该方法,游戏便可以自由的暂停或启动。该方法为:pauseProc()

    pauseProc(
     aType:integer //控制类型
    )  

      控制类型只能够传入参数0或1,0代表使游戏暂停,1代表取消暂停。其应用实例如下:

    MpMemCtl1.pauseProc(0); //暂停游戏
    MpMemCtl1.pauseProc(1); //恢复暂停  

      三、读写内存值

      游戏属性其实寄存在内存地址值里,游戏中要了解或修改游戏属性,可以通过对内存地值的读出或写入完成。

      通过控件,要读写内存地址值很容易。可以通过调用控件提供的getAddressValue()及setAddressValue()两个方法即可,在使用方法之前,要确认的是要给ProcHandle属性进行附值,因为对内存的操作必须基于进程。给ProcHandle属性附值的方法,在上文中已经介绍。无论是对内存值进行读还是进行写,都要明确所要操作的内存地址。

    getAddressValue( //读取内存方法
    aAddress:pointer; //操作的内存地址
    var aValue:integer //读出的值
    ):Boolean;

    setAddressValue( //写入内存方法
    aAddress:pointer; //操作的内存地址
    aValue:integer //写入的值
    ):Boolean;  

      要注意的是,传入内存地址时,内存地址必须为Pointer型。其应用实例如下:

      读取地址值(如果“主角”等级所存放的地址为4549632):

    var
     aValue:Integer;
    begin
     MpMemCtl1.getAddressValue(Pointer(‘4549632’),aValue);  

      这时aValue变量里的值为内存地址[4549632]的值。

      写入地址值:

    MpMemCtl1.setAddressValue(Pointer(Strtoint(‘4549632’)),strtoint(87));  

      通过该方法可以把要修改的内存地址值改为87,即把“主角”等级改为87。

      四、内存地址值分析

      在游戏中要想要到游戏属性存放的内存地址,那么就对相应内存地址进行内存分析,经过分析以后才可得到游戏属性存放的人存地址。

      控件提供两种基于内存地址的分析方法。一种是按精确地址值进行搜索分析,另一种是按内存变化增减量进行搜索分析。

      1、 如果很明确的知道当前想要修改的地址值,那么就用精确地址值进行搜索分析

      在游戏中,需要修改人物的经验值,那么首先要从游戏画面上获得经验值信息,如游戏人物当前经验值为9800,需要把经验值调高,那么这时候就需要对人物经验值在内存中搜索得到相应的内存地址,当然很可能在内存中地址值为9800的很多,第一次很可能搜索出若干个地址值为9800的地址。等待经验值再有所变化,如从9800变为了20000时,再次进行搜索,那么从刚刚所搜索到的地址中,便可以进一步获得范围更少的内存地址,以此类推,那么最后可得到经验值具体存放的地址。

      如要用控件来实现内存值精确搜索,其实方法很简单,只需要调用该控件的Search()方法即可。但是在搜索之前要确认搜索的范围,正如前文中所说:“而程序创建时在线性地址的中保留4MB-2GB的一段地址”,所以要搜索的地址应该是4MB-2GB之间,所以要把控件的MaxAddress属性设为2GB,把控件的MinAddress属性设为4MB。还有一个需要确认的是需要搜索的值,那么应该把SearchValue属性设置为当前搜索的值。如果需要显示搜索进度那么可以把ShowGauge属性挂上一个相应的TGauge控件(该控件为进度条控件)。

    search(
     isFirst:Boolean //是否是第一次进行搜索
    ):Boolean  

      在搜索分析时为了提高搜索效率、实现业务逻辑,那么需要传入一个参数,从而确认是否是第一次进行内存。其应用实例如下:

    maxV:=1024*1024*1024;
    maxV:=2*MaxV;
    minV:=4*1024*1024;
    V:=StrToInt(Edit1.Text);
    with MpMemCtl1 do
    begin
     MaxAddress:=maxV;
     MinAddress:=minV;
     SearchValue:=SeaarchV;
     ShowGauge:=Gauge1;
     Search(first)
    end;
    if first then first:=false;  

      2、 如果不明确当前想要修改的地址值,只知道想要修改的值变大或变小,那么就按内存变化增减量进行搜索分析。

      如有些游戏的人物血值不显示出来,但要对人物血值进行修改,那么只有借助于内存量增减变化而进行搜索分析出该人物血值存放的地址。如果人物被怪物打了一下,那么人物血值就会减少,那么这时候就用减量进行搜索分析,如果人物吃了“血”人物血值就会增加,那么这时候就用增量进行搜索分析。经过不断搜索,最后会把范围放血值的内存地址给搜索出来。

      如要用控件来实现内存值精确搜索,其实方法很简单,只需要调用该控件的compare()方法即可。MaxAddress、MinAddress属性设置上面章节中有详细介绍,在此不再重提。在此分析中不需要再指定SearchValue属性。如果需要显示搜索进度那么可以把ShowGauge属性挂上一个相应的TGauge控件。

    compare (
     isFirst:Boolean //是否是第一次进行搜索
     aType:Integer //搜索分析类型
    ):Boolean  

      在搜索分析时为了提高搜索效率、实现业务逻辑,那么需要传入一个参数,从而确认是否是第一次进行内存。搜索分析类型有两种:如果参数值为0,那么就代表增量搜索。如果参数值为1,那么就代表减量搜索。其应用实例如下:

    if RadioButton1.Checked then v:=0
    else v:=1;
     maxV:=1024*1024*1024;
     maxV:=2*MaxV;
     minV:=4*1024*1024;
     with MpMemCtl1 do
     begin
      MaxAddress:=maxV;
      MinAddress:=minV;
      ShowGauge:=Gauge1;
      compare(first,v);
    end;
    if first then first:=false;  

      五、得到内存地址值

      在控件中,提供获得分析后内存地址列表的方法,只需要调用getAddressList()方法,便可以获得分析过程中或分析结果地址列表。但如果使用的是按内存变化增减量进行搜索分析的方法,那么第一次可能会搜索出来很多的地址,致使返回速度过长,那么建议使用getAddressCount()方法确定返回列表为一定长度后才给予返回。

    getAddressList():TStrings //返回地址字符串列表
    getAddressCount():Integer //返回地址字符串列表长度  

      其应用实例如下:

    if MpMemCtl1.getAddressCount() <100 then
     listbox1.Items:=MpMemCtl1.getAddressList();  

      通过以上五个步骤,便可以整合成一个功能比较完备的,基于内存控制方法的游戏外挂。有了“FPE”的关键部份功能。利用此工具,通过一些方法,不仅仅可以分析出来游戏属性单内存地址,而且可以分析出一部份多内存游戏属性存放地址。
     
    展开全文
  • VC在内存中修改数据的网游外挂

    千次阅读 2012-03-26 06:38:51
    很多游戏都是把一些信息存入内存单元,我们只需要修改具体内存值就能修改游戏属性,很多网络游戏也不外于此。  曾几何时,一些网络游戏也是可以用内存外挂进行修改,后来被发现后,这些游戏就把单一内存...
  • 现在很多游戏都是把一些信息存入内存单元,那么我们只需要修改具体内存值就能修改游戏属性,很多网络游戏也不外于此。 曾几何时,一些网络游戏也是可以用内存外挂进行修改,后来被发现后,这些游戏就把单一...
  • GameExpert游戏修改工具

    2009-05-13 12:55:55
    在最新版本中,GE还提供了制作专用游戏修改器(Trainer)功能,您可以将表格中的数据方便地制作成专门针对这个游戏的修改器,以后再想玩这个游戏时,您可以直接运行以前制作的修改器而不需要运行Game Expert啦,...
  • 在众多工具中,这是一个功能还行工具,免费软件,免费全功能使用通用游戏修改器,可修改网络游戏和本地游戏中任何数据,功能强大,主要功能为修改游戏中所有数值如生命,等级,游戏速度,经验,金钱等
  • 游戏修改器原理

    2013-08-26 16:10:52
    通过一款第三方软件金山游侠2002便可以找到那些存储数据的地址,在我们玩游戏的过程中,通过单一变量法来分析某种属性的地址在哪里,比如说玩游戏的过程中生命全满然后保持其他不变将生命值减少然后观察地址中数据...
  • 如题,采用是Sun Checks规范, 最终将代码修改如下: .../**Cell为细胞类,以实现数据封装和实现与细胞有关方法.*/ public class Cell { /**长度.*/ private int maxLength; /**宽度.*/ priva...
  • 《植物大战僵尸》游戏存档修改

    千次阅读 多人点赞 2021-03-21 21:43:37
    《植物大战僵尸》游戏存档修改说明需求知识必要软件原理进行过程总结软件下载相关说明相关链接说明需求知识必要软件原理进行过程总结软件下载相关说明 说明 需求 知识 必要软件 原理 进行过程 总结 软件下载相关说明...
  • 萝卜游侠是一款搜索和修改内存地址游戏辅助工具,该软件支持所有Windows操作系统下游戏, 此软件充其量也就是一个游戏脚本,主要可以修改本地存储的游戏数据,以达到打怪,秒怪目的。当然该软件不仅仅可以支持...
  • 学习内容:了解计算机对二进制数据的处理机制 Hex Editor Neo软件下载路径: 百度下载 简介: hex editor neo ultimate是的一款专业的16进制编辑器,可以轻松编辑和查看ASCII、二进制和十六进制文件,支持使用正则...
  • 游戏修改器、外挂原理

    千次阅读 2014-05-14 10:02:49
    通过一款第三方软件金山游侠2002便可以找到那些存储数据的地址,在我们玩游戏的过程中,通过单一变量法来分析某种属性的地址在哪里,比如说玩游戏的过程中生命全满然后保持其他不变将生命值减少然后观察地址中数据...
  • 分享一下任务完成流程 任务说明 了解⼆进制、⼗六进制对于计算机的意义。 掌握⼆/七/⼋/⼗/⼗⼆/⼗六等...文件存储数据的位置,我的电脑是在C:/ProgramData/游戏名/.../userdata 选取打开dat文件的软件是Hex Editor
  • 植物大战僵尸游戏数据修改 下载植物大战僵尸 进入win10自带的软件商店下载super hex Editor 进入游戏创建一个测试用户 进入C:\ProgramData\PopCap Games\PlantsVsZombies\userdata. 用super hex ...
  • 八门神器是一个Android平台游戏修改器,该软件通过修改正在运行游戏内存数据,可以非常方便地修改游戏的HP、MP、生命数等等参数。比较类似于PC平台整人专家(FPE)及金山游侠等游戏修改器,软件支持中、英双语言...
  • C1任务-修改游戏存档 任务说明 1、修改《植物大战僵尸》存档文件,能跳到指定关卡5-1 2、修改《植物大战僵尸》存档⽂件,让你游戏账户有1W⾦币 准备工作 1、工具软件Hex Editor Neo,Hex Editor Neo Ultimate...
  • 树形结构一对多1n B非线性结构图形结构A顺序存储 2数据的存储结构 B链式存储 3对数据的操作检索排序插入删除修改.树的实例五子棋游戏/ (root)userbinetclibswyintaoxiemathdsQueue.cppStack.cppTr
  • 修改某一游戏的玩家背包图鉴开启状态和宠物三围 准备软件 安卓模拟器搭载Android 4.x系统 ,内存修改器(烧饼或八门) 内存修改修改操作 使用烧饼修改器搜索 1920 截图如上,可以看到1个DWBF就是一个...
  • 数据为中心的软件,一例

    千次阅读 2005-04-26 18:48:00
    最近看《Game Programming Gems 1》,第一篇是关于以数据为中心的游戏开发,如果能够把一些数据属性甚至是逻辑抽取出来放在plain-text文件里面,就能够获得巨大灵活性,因为engine programmer和game designer很...
  • 支持指针、代码、数据的修改,支持热键,支持内存读写属性修改。全部功能经过多次测试,完全可用。 昨天发布的被删除了,不知道是怎么搞的,好像是我删文章的时候一起没了,呵呵,修改了一点东西,又发出来。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 635
精华内容 254
关键字:

修改游戏数据的软件