CheatMaker 论坛

注册

 

发新话题 回复该主题

今天码字做一下科普,关于游戏修改的工具说明 [复制链接]

1#
游戏机游戏的程序修改很大程度上依赖模拟器调试器

各常用机种调试器推荐(有两个推荐时前者为主,后者为辅):
FC 推荐:Mesen、Fceux
SFC 推荐:Mesen-S、Bsnes Plus
N64 推荐:Project64(需手动打开调试开关)
GC/Wii 推荐:Dolphin(需手动打开调试开关)
GB/GBC 推荐:BGB
GBA 推荐:NO$GBA
NDS 推荐:NO$GBA
WiiU 推荐:Cemu
GG/SMS 推荐:Mekaw、MESS
MD 推荐:MESS、Gens rr
SS 推荐:Mednafen(某些加速卡模式的游戏断点无效)
PS 推荐:NO$PSX
PS2 推荐:PCSX2(注意QT版无法开启调试器)
PSP 推荐:PPSSPP
PCE/CD 推荐:Mednafen、MESS
PCFX 推荐:Mednafen
WS/WSC 推荐:Mednafen、MESS
NGP/NGPC 推荐:MESS
NEOGEOCD 推荐:MESS(不是很稳定,但勉强可用)
DOS 推荐:DOSBOX-X(没有读断点)
PC98 推荐:DOSBOX-X(没有读断点)
MSX/MSX2 推荐:MESS、BlueMSX
街机游戏 推荐:MAME(各种机板基本通吃)

除了模拟器外玩PC游戏游戏话目前就只有CheatEngine值得推荐
当然CheatEgine仅限于动态调试,脱壳解密还是需要OllyDBG等工具的配合

另外有些机种虽然已经不是什么新世代了但是一直没有稳定好用的调试模拟器,如果我孤陋寡闻,欢迎赐教:
Sega 32x:BizHawk模拟器看似支持实际无效
Sega MDCD:BizHawk模拟器看似支持实际无效
Sega Dreamcast:有模拟器支持看代码,但无读写断点功能
Panasonic 3DO:这机种虽然冷门,但其实游戏还挺不错的
Shap X68000:有点类似PC98的机种,模拟器没有读写断点功能
3DS:用3dstools工具解包cci或者解密后的3ds格式的rom,主程序文件一般在cxi0\exefs\code.bin,用ida加载
PS3:因为电脑配置原因没过多尝试,用ps3tools工具解包镜像里的boot文件等在用ida加载
ps4:未涉足了解过不清楚
switch:其实我也没涉足过,目前金手指和Hack的制作几乎都是实机上完成的,用的一个gdb的插件,可以实现ida联动进行断点和代码修改

没有稳定好用的调试模拟器可以改程序么?当然可以,但很麻烦。
只要数据文件没有压缩,用ida加载对应的程序文件,选择对应的指令集,则可以看到游戏整体的程序结构。

IDA反编译这种方法也有两个问题:
其一:有时候代码的反编译不准确,特别是有些老的非等长指令集,当代码穿插数据的时候会出现一些奇怪的反编译代码,这需要进行手工调整;还有某些call的回调ret直接读片段非常难判断程序走向,除非有非常准确的注释。
其二:这种整个代码的反编译,想找对应作用的代码是很难的,如果是有目的的修改某些功能,比起动态调试效率低个几百倍都说少了。

所以在没有可动态调试的模拟器或者工具时,不建议强行去做代码修改。费时费力,除非你真的特别有爱。

但IDA也有其好处,如果你能了解整个游戏的代码结构,并调整好内存分配的关系,你就能做到把游戏整个工程逆向,这时候你对游戏的修改会非常自由,比如意志之路论坛的大航海2为什么mod可以做得那么深入,就是因为整个游戏都被逆向工程了,新的功能加入后只需要重编译就可以了。但是这个需要特别注意内存分配问题,无论是WorkRam、SaveRam、VideoRam,分配出错就是出现游戏Bug、存档Bug、显示Bug了。

Bilibili上有过一篇拳皇97的逆向工程的视频,可以清晰的看到ida改游戏的优势。
为了更直观的说明一下逆向工程后的作用,放一份老外做过的MD平台的梦幻之星Ⅳ美版的逆向工程文件:
链接:https://caiyun.139.com/m/i?014MdJt6IN5fR
提取码:HhGW
下载解压后,只需要运行build.bat,就会生成:【ps4built.bin】文件;这就是MD的Rom了,可以直接模拟器载入运行
而在build之前,游戏里各项文件和代码的替换,玩家就可以随心所欲了。
但是就像之前说的,MD的工作内存、存档内存、显示内存都很有限,变更代码需要特别注意内存分配问题,不要与其他程序冲突。
最后编辑银河漫步 最后编辑于 2022-08-29 15:02:16
分享 转发
TOP
2#

DuckStation好像也有調試器
不過沒深入了解, 要先模擬器設置打開調試菜單
TOP
3#

DuckStation好像也有調試器
不過沒深入了解, 要先模擬器設置打開調試菜單
Blader 发表于 2022/8/29 14:32:37

试过不好用,无内存读写断点,还不如原来的psx
最后编辑银河漫步 最后编辑于 2022-08-29 14:41:39
TOP
4#

回复 3楼银河漫步的帖子

看到版主在ppx的吐槽了
試了一下真的難用
不過應該還有Mednafen這個備選才對
TOP
5#

回复 3楼银河漫步的帖子

看到版主在ppx的吐槽了
試了一下真的難用
不過應該還有Mednafe......
Blader 发表于 2022/8/29 14:45:27


跟no$psx相比
这些备选就没意义了
功能差距太远
TOP
6#

回复 5楼银河漫步的帖子

沒錢系列只用過NO$GBA
不過還是沒法找到機戰A地圖上無法令地圖炮移動可用的原因
在別的帖子看到版主說可以找文本
我就想說找那個P標誌, 但根本不知道對應的字碼是哪個
最後還是失敗了, 這個限制做的實在莫名其妙
任家攜帶機上的機戰也就A有這個限制
解除方法要出現該不會有生之年了吧
TOP
7#

回复 5楼银河漫步的帖子

沒錢系列只用過NO$GBA
不過還是沒法找到機戰A地圖上無法令地圖......
Blader 发表于 2022/9/11 15:47:55

我刚才抽空看了下
Rom地址:2807B
D0→E0

可以解除地图炮判定
最后编辑银河漫步 最后编辑于 2022-09-27 12:34:18
TOP
8#

回复 7楼银河漫步的帖子

試了一下, 還是不行
只有選擇武器時變成白字
但實際仍不可用
還是要感謝版主抽空幫忙查看
TOP
9#

回复 7楼银河漫步的帖子

試了一下, 還是不行
只有選擇武器時變成白字
但實際仍不可用
還......
Blader 发表于 2022/9/27 12:50:55


2D299
D1→E0

这样就可以了
但是前置判定没改
就是移动后
敌人不在非地图炮内射程时
不会显示攻击菜单

想完美修改
还需要找前置判定程序
TOP
10#

回复 9楼银河漫步的帖子

感覺這個修改更厲害些
不用P屬性都能移動後攻擊了
還不只影響地圖炮, 全武器通用
這樣輕鬆許多, 感謝版主的幫忙~~
TOP
发新话题 回复该主题