街机模拟游戏逆向工程(HACKROM)教程:[0]工具

news/2024/5/18 16:10:44 标签: 经验分享, 游戏程序, 游戏引擎

街机hack,从早期的街霸-降龙版

 到后期对各种街机的各种改动版本

这些成果,就是对街机游戏的代码进行逆向分析的结果。对于大部份街机游戏,是基于摩托罗拉68000的CPU,使用的是一套特别的汇编指令集。

一、MAME下载

我们想要对游戏进行逆向分析,首先我们需要的是一个可以查看游戏中的汇编代码的工具,这里选择也只能选择的是一款比较流行的多机种模拟器工具,MAME。

下载地址:MAME | Latest MAME Release

在撰写该篇文章时,MAME所对应的最高版本为0.261。

二、MAME安装

该文件本身为一个EXE文件,但其实为一个自解压的压缩包,我们可以选择直接运行安装,也可以选择用压缩工具来把里面的文件解压出来。

artword        - 布局管理文件

bgfx             - BGFX着色器、着色器链和效果的定义

ctrlr              - 键盘按钮映射

docs            - 使用说明文档

hash            - 所有可模拟的游戏或软件列表

hlsl              - 滤镜文件

ini                - 配置文件

language     - 语言文件

plugins        - 插件文件

roms            - ROM文件

samples      - 一些声音样本文件

 三、MAME运行

其主要运行文件为mame.exe,直接双击可以运行MAME:

和mameplus不同,官方的mame没有窗口化的界面。

此时,我们还没有任何ROM文件,所以无法运行任何游戏。要运行需要的游戏,我们还需要要下载对应的ROM文件,我们去MAME官网下载一些网友原创非商业用途的游戏来进行测试。

下载地址:MAME | ROMs for Free Download

我们选择一个叫carpolo的小游戏来测试

MAME | Car Polo (Exidy, 1977)

下载该ROM文件,放到roms文件夹中。

我们可以用多种方法来运行该游戏:

1、双击"mame.exe"运行MAME,在搜索框中输入"carpolo":

 双击"Car Polo"运行该游戏。

2、在mame.exe相同的文件夹中,新建一个文本文档,重命名为carpolo.bat批处理文件

选中该批处理文件,右键,选择编辑或用文本编辑工具打开该文件,在文件中输入批处理命令:

mame.exe carpolo

 双击该批处理文件,运行游戏:

运行成功会显示游戏的基本信息,按任意键继续:

 

如果该ROM文件还存在问题,会出现提醒,该ROM的问题为"还未正确地模拟声音功能",按任意键继续:

 进入游戏:

 因为不太会玩该游戏,这里不做说明。

四、MAME查看DEBUG调试器

此时,我们只能看到游戏的运行,并不能观察到游戏的程序代码,我们如果需要查看游戏的程序代码,需要加入一些参数来启运MAME。我们下面将测试一款非常流行的游戏来测试如果查看游戏的程序代码,该游戏名为"Cadillacs and Dinosaurs(中文名:恐龙新世纪)"。这里因各种原因,无法提供该ROM的下载。

该游戏下载到的ROM文件文件名为dino.zip的压缩包,和之前的游戏一样,我们同样把该文件放到roms文件夹下。在mame.exe相同的文件夹中,新建一个批处理文件"dino.bat",在该文件中输入:

mame.exe dino -debug -window
pause

参数:

        -debug :打开debug调试选项

        -window :以窗口模式运行该游戏

因为如果出现错误,我们可能需要观察错误提示,我们加入一行"pause"命令。

在下载ROM文件时,经常见到的问题是会出现缺少某个ROM文件的情况:

比如这里是提供缺少dl-1425.bin文件,同样因为一些原因,这里无法提供该文件的下载。请自行搜索下载该文件。 把下载到的缺少的文件添加到dino.zip压缩包中:

再次测试运行:

如果正常运行,我们可以看到,除了游戏窗口,多了一个debug调试窗口,在这里,我们可以查看该游戏的运行代码。

这里说明一下该窗口菜单的一些功能:

New Memory Window                                - 新建内存窗口

New Disassembly Window                        - 新建汇编窗口

New Error Log Window                             - 新建错误日志窗口

New (Break|Watch)points Window           - 新建中断列表窗口

Run                                                           - 运行游戏(不关闭debug窗口)

Run and Hide Debugger                          - 运行游戏(同时关闭debug窗口)

Run to Next CPU                                        -运行(直到下一个CPU)

Run until Next interrupt on This CPU        - 运行(直到该CPU中的下一个中断)

Run until Next VBLAND                            - 运行(直到下一个VBLAND)

Step Into                                                    - 步入

Step Over                                                  - 步过

Step Out                                                    - 步出

Rewind Step                                              - 步回

Soft Reset                                                  - 软重启

Hard Reset                                                - 硬重启

Exit                                                            - 退出游戏

Set breakpoint at cursor                - 在光标处设置一个中断

Disable breakpoint at cursor         - 在光标处取消一个中断

Run to cursor                                - 运行到光标处

Raw opcodes                                -显示原始数据

Encrypted opcodes                       - 显示加密的数据

Comments                                    - 显示注释

Save Window Arrangement        -保存窗口的排列

Light Background                        - 亮色背景

Dark Background                        - 深色背景

我们如果需要关闭debug调试窗口,可以在选中调试窗的情况下,按"F12"键,来关闭调试窗口并进入游戏。

以上就是对于街机游戏逆向工程所需用到的MAME模拟器的基本介绍,在之后的章节,会一步步地尝试如何去逆向分析一个游戏的运行。并测试改变程序的运行逻辑,来改变程序的运行结果。

在后续的文章中,会要求可以熟练地使用MAME模拟器,比如按键的设置,能熟练地进行游戏的存档和读档,这些操作不要本教程的介绍范围。可以搜索对应的文章来了解。


http://www.niftyadmin.cn/n/5324935.html

相关文章

webpack 是什么?

webpack 是一个开源的 JavaScript 模块打包工具。它是前端开发中常用的构建工具之一,主要用于将项目中的多个模块和文件打包成一个或多个静态资源文件(通常是 JavaScript 文件),以便在浏览器中加载和运行。 webpack 的主要功能包…

基于传统机器学习模型算法的项目开发详细过程

1 场景分析 1.1 项目背景 描述开发项目模型的一系列情境和因素,包括问题、需求、机会、市场环境、竞争情况等 1.2. 解决问题 传统机器学习在解决实际问题中主要分为两类: 有监督学习:已知输入、输出之间的关系而进行的学习,从而…

Mr_HJ / form-generator项目学习-增加自定义的超融组件(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

TCP服务器和客户端的创建步骤

TCP服务器的实现流程:一、创建套接字(socket函数):通信域选择IPV4网络协议、套接字类型选择流式; int sockfd socket(AF_INET,SOCK_STREAM,0); //通信域选择IPV4、套接字类型选择流式二、填充服务器的网络信息结构体&…

高级分布式系统-第11讲 现场总线技术

现场总线概述 国际电工委员会制定的国际标准IEC61158对现场总线(fieldbus)的定义是: 安装在制造或过程区域的现场装置与控制室内的自动控制装置之间的数字式、串行、多点通信的数据总线。 新型的现场总线控制系统突破了DCS系统中通信由专用网…

智慧园区数字孪生智能可视运营平台解决方案:PPT全文82页,附下载

关键词:智慧园区解决方案,数字孪生解决方案,数字孪生应用场景及典型案例,数字孪生可视化平台,数字孪生技术,数字孪生概念,智慧园区一体化管理平台 一、基于数字孪生的智慧园区建设目标 1、实现…

VQE音频处理流程

VQE 上行VQE,主要针对MIC采集部分的音频增强 下行VQE,主要针对SPK播放部分的音频增强 附关键词解释 RES RES 模块为重采样(Resampler)模块。当AI上行或AO下行通路中开启VQE 各功能 模块时,在处理前后各存在一次重采样…

未来饮食方向——通过精准营养降低慢性病风险

谷禾健康 营养对于身体健康和疾病预防的重要性已得到充分证实,全球膳食指南建议也得到了明确定义,以指导有效的政策。然而,吃什么、何时吃以及如何保持健康地优化饮食模式实际上非常复杂。 许多因素会影响饮食模式,包括个人的生理…