请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

新模拟器共享论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

1

最近看过此主题的会员

查看: 29528|回复: 57

Emu Cheat 基地址文件制作及工具1.1 (文档更新)本地下载

    [复制链接]

签到天数: 83 天

[LV.6]常住居民II

评论头像(9)

发表于 2009-9-11 21:54:28 | 显示全部楼层 |阅读模式
Emu Cheat 基地址文件制作及工具1.0 本地下载


有想制作EMU的到QQ群:14769066中下载,求CHT和CHF的请不要打扰!谢谢

同时,非官方的基地址文件如果出现找到的作弊地址与官方不同,或是同一机种同一个游戏同一作弊地址有偏移,官方不作修正,请不要向官方发问
但以官方为主,官方依据会更新基地址文件!

CHT和CHF文件,由大家自行收集,官方会定时更新安装包

www.emu-zone.orghttp://bbs.emu-zone.org为官方和官方BBS
www.emucheat.com,将成为官方网站


两者没有冲突,www.emucheat.com作为EC的门户而已!

Emu Cheat 基地址文件制作基本教程 1.1

本文以fceuxdsp-1_07为例子,说明基地址的查找,基地址文件的制作

一、工具

1.模拟器及相关游戏。

2.PC游戏修改器或自已作的内存修改器也可以,只要能找到作弊地址就OK。推荐使用GM8.

3.调试器工具,SoftIce(NT),Trw2000(9x), OLLYDBG,推荐OLLYDBGOllyICE

4.Emu Cheat(以下称:EC)内部版或基地址制作工具集(emu2xml,xml2emu,chf2cht,cht2r4

5.内存查看软件,用来查找基地址所在内存地址,推荐用winhex

6.Spy++类软件,我用的是Vs2008带的spy++

7.模拟器对应机种的平台信息文档

二、编写EC基地址支持文件基本XML

以下是基本文档结构:

<?xml version="1.0"?>

  <EMUCHEATE>

    <EMUS>

      <EMU Name="模拟器名称" ClassName="窗体类名" Scan="1">;Scan="1",1为启用,0为不启用

        <FC>;机种1-m个

        <BASE Data="特征串,长度" SIZE="搜索大小"></BASE>;基地址1-n个

        <BASE Data="特征串,长度,读取方式" SIZE="搜索大小"></BASE>

       </FC>

   </EMU>

<EMU Name="模拟器名称" ClassName="窗体类名" defaultData="特征串,长度[,读取方式]" Scan="1">;Scan="1",1为启用,0为不启用

   <FC>;机种1-m个
         <BASE SIZE="搜索大小"></BASE>;基地址1-n个

    <BASE  Data="特征串,长度[,读取方式]" SIZE="搜索大小"></BASE>;基地址1-n个

   </FC>

</EMU>


    <
EMU Name="模拟器名称" CHECK="主程序CRC" Ver="版本号">

<FC>;机种1-m个

   <BASE Address="基地址" SIZE="搜索大小"></BASE>;基地址1-n个

   <BASE Address="基地址" SIZE="搜索大小"></BASE>

</FC>

</EMU>
     <
EMU Name="模拟器名称" ClassName="窗体类名" StarAdder="开始扫描地址" ScanSize="扫描大小" Scan="1">;Scan="1",1为启用,0为不启用

    <FC>

     <BASE Address="基地址" SIZE="搜索大小"></BASE>;基地址1-n个

      <BASE Address="基地址" SIZE="搜索大小"></BASE>

   </FC>

</EMU>

<EMU Name="模拟器名称" CHECK="主程序CRC " ClassName="窗体类名" LoadLIB="mameplib.dll" StarAdder="开始扫描地址" ScanSize="扫描大小" scan="1" update="更新时间" author = "作者>;Scan="1",1为启用,0为不启用

  <CPSX>

   <BASE Data="特征串,长度" SIZE="搜索大小"></BASE>;基地址1-n个

   <BASE Data="特征串,长度,读取方式" SIZE="搜索大小"></BASE>

   </CPSX>

</EMU>
    </
EMUS>

</EMUCHEATE>

1.模拟器名称:这个并不是很重要,主要是用来显示在EC里的模拟器名

2.窗体类名:学过VC的都知道,每个window窗口都一个类名。

      

3.主程序CRC:这个是EC用一定的算法得到的一个CRC,与WinRAR的CRC32值并不相同,注意哟,两种方法得到,一个内部版在标题时自动显示,别一种就是用EC工具XML2EMU完成。启动XML2EMU并选择模拟器可执行文件

4.版本号, 开始扫描地址,扫描大小这些都可自己定义

5.Update,更新时间,author,更新者/作者

6.LoadLIB,主要用于MAME的GUI版,如PLUS,在有一段时间出现了基地址存在dll内存中,而不在exe内存里

7.defaultData,这个是默认查找的特征串,如果<base>中已经有,可以不写,如果写了defaultData<base>里可以不写,也可以先新的特征串

8.基地址搜索大小下面会再说的

9.编写

三、关于修正及修正值

<BASE SIZE="搜索大小" FIX="方式" FixData="修正值" ></BASE>;基地址1-n个,Fix值目前有7种,FixData为16进制数

1:处理方法:基地址的值+修正值,再读取基地址的值

2:处理方法:读取基地址的值,再基地址值+修正值
        3:
处理方法:基地址的值+
修正值

4:处理方法:基地址+修正值,再读取基地址的值

5:处理方法:先读取基地址的值+修正值,再读取基地址的值

6:处理方法:基地址的值 XOR
修正值

99: nestopia专用修正(暂时不用关心)

四、基地址的查找

基地址其实就是一个二级指针或是三级指针,在这里我就不多说了,主要是写怎么查找。

NES/FC/FDS/DENDY系统按其内存应试分为两层,0x8000x2000,共0x2800大小,这个可以在NES规格说明书找到或通过调试器断点找到(1.0版本教程,到现在为止,基本上目前有的模拟器的内存大小都已经确认)。由于基地址可能多个,但并不是每个游戏都可能用到多个地址,所以可能要进行一定的调试和测试才能找到所有的基地址。目前有问题的是SFC的基地址,SS的基地址,以前一直是认为有一个基地址,这些要大家来共同完善了!

本例中两个基地址,我以第一个基地址为例。从魂斗罗1的人数作弊可得到第一层0x800的基地址,从最终幻想3的人物HP可得到第二层0x2000的基地址。

基本算法,是这样的,GM8找到的作弊地址(以下称:PC地址)-EC找到的作弊地址(以下称:EC地址)=基地址值(以下称:基地址值)

使用GM8或其它修改器找到的作弊地址

1.启动模拟器。加载魂斗罗(日版,美版,欧版都可以)

2.查找其人物作弊地址。

   GM8找到的0x00592B12

3.利用GM8的机器码追踪功能

GM8有机器码追踪功能,所以可以用这一功能来查找机器码

之后让模拟器数据发生改变,之后在机械码追踪里就可以显示相应的机器码

从上图可以看到mov byte[ebx+00592Ae0],al

EBX=32,这就是EC找到魂斗罗的人数地址。

00592Ae0所在内存地址就是基地址

4.利用调试工具来完成GM8的机器码追踪功能

启动OllyDBG并载入模拟器,之后运行,当模拟器运行起来后,载入ROM

之后设置断点,我一般是设硬件断点,在下边的命令行里输入Hw 00592B12,回车,意思是写这个地址时中断。

之后正常游戏,当访问地址00592B12时会中断,大概如下图,每个模拟器可能不同但都差不多,大约都是mov开头

00592Ae0所在内存地址就是基地址

EDX=32

GM8有一点点区别,但这并不是我想研究的

5.查找基地址

winhex为例

00592Ae0应该查找的值是E02A5900

有时你会发现有很多的地方都有,这些都可以作为基地址,但你要找到最稳定的一个。

我呢,这次就找了0x00462128作为基地址。

五、制作基地址文件

1.编写XML文件

其内容如下:

<?xml version="1.0"?>

<EMUCHEATE>


       <
EMUS>


        <
EMU Name="FCEUXD SP" ClassName="FCEULTR1A" Scan="1">;方法一


           <
FC>

         <BASE Data="335F000100000024054100,8" SIZE="800"></BASE>


           </
FC>


      </
EMU>


     <
EMU Name="FCEUXD SP" CHECK="41A80DAC" Ver="1.07">;方法二


       <
FC>


         <
BASE Address="462128" SIZE="800"></BASE>


      </
FC>


    </
EMU>


    </
EMUS>

</EMUCHEATE>

2.335F000100000024054100的由来,看下图

长度自己搞定啦,只要能找到基地址所以地方且稳定,这个可以灵活运用,这一点我不想多说

<BASE Data="335F000100000024054100,8" SIZE="800"></BASE>这种形式呢,取读到的就是绿色圈内的值

<BASE Data="335F000100000024054100,8,1"SIZE="800"></BASE>这种形式呢,取读到的就是蓝色圈内的值不过呢,不是E02A5900,而是00592AE0

六、生成EMU文件,并在EC里测试

使用XML2EMU工具可以完成这一功能

启动XML2EMU,如下图


    点浏览读入XML文件

点转换

即可在xml所在目录生成emu文件

七、注意
还有一些写法这里没有写出,可参考emu.xml文件,本教程为1.1版本,目前为止EC版权属于YDMIS,最终解释权属于YDMIS

作本基本教程,就是为了让EC支持更多的模拟器。目前只限和我答成约定的人使用。EZSSforME是第一个使用者。



By dragon2snow,
龙儿 Sunday, October 04, 2009

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

签到天数: 1053 天

[LV.10]以坛为家III

评论头像

发表于 2009-9-12 23:40:34 | 显示全部楼层
消滅0回複!!寂寞嗎?
回复 支持 反对

使用道具 举报

该用户从未签到

评论头像

发表于 2009-10-7 23:11:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

该用户从未签到

评论头像

发表于 2009-10-18 00:29:54 | 显示全部楼层

123adfaj加拿大

你地方打发安定罚款觉得能否哦啊佛啊

评分

2

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

评论头像

发表于 2009-10-25 11:13:57 | 显示全部楼层
试试看~
回复 支持 反对

使用道具 举报

该用户从未签到

评论头像

发表于 2009-11-1 10:40:53 | 显示全部楼层
下载,不忘说声谢
回复 支持 反对

使用道具 举报

该用户从未签到

评论头像

发表于 2009-11-9 22:06:43 | 显示全部楼层
最好有几个实例教材啊,,,
回复 支持 反对

使用道具 举报

该用户从未签到

评论头像

发表于 2009-11-9 22:07:11 | 显示全部楼层
最好有几个实例教材啊,,,
回复 支持 反对

使用道具 举报

该用户从未签到

评论头像

发表于 2009-11-14 18:42:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

该用户从未签到

评论头像

发表于 2009-11-19 22:49:05 | 显示全部楼层

老板,你辛苦多久了?

十分感谢,资源比我想象的还丰富
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

新模拟器共享论坛X

翻译WIKI大量成长力和金钱奖励!

访问http://wiki.nesbbs.com,翻译词条到论坛指定区,每一个完成翻译并有采纳的,有成长力等奖励哟...

点击查看详情 

QQ|申请友链|小黑屋|手机版|Archiver|新模拟器共享网 ( 辽ICP备09001055号|繁體中文   

GMT+8, 2019-12-10 08:38 , Processed in 0.187200 second(s), 47 queries , XCache On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表