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

2024-01-15 01:36

本文主要是介绍街机模拟游戏逆向工程(HACKROM)教程:[0]工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

街机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模拟器,比如按键的设置,能熟练地进行游戏的存档和读档,这些操作不要本教程的介绍范围。可以搜索对应的文章来了解。

这篇关于街机模拟游戏逆向工程(HACKROM)教程:[0]工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607218

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

超强的截图工具:PixPin

你是否还在为寻找一款功能强大、操作简便的截图工具而烦恼?市面上那么多工具,常常让人无从选择。今天,想给大家安利一款神器——PixPin,一款真正解放双手的截图工具。 想象一下,你只需要按下快捷键就能轻松完成多种截图任务,还能快速编辑、标注甚至保存多种格式的图片。这款工具能满足这些需求吗? PixPin不仅支持全屏、窗口、区域截图等基础功能,它还可以进行延时截图,让你捕捉到每个关键画面。不仅如此

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖: