粹脍誊 发表于 昨天 16:34

GBA的D商汉化游戏 细胞分裂实体卡 袁军加密破解研究 2025.04.14补充版本

GBA的D商汉化游戏 细胞分裂实体卡 袁军加密破解研究 2025.04.14补充版本
PS:如果真有人可以尝试dump也可以联系我,反正这卡带我还留着。
本文部分研究成果来自流浪的猎人和Advance汉化组@空调JO太郎,卧看微尘和DS Homebrew群友@BadLuckW所进行的讨论,以及星夜之幻和B站UP主 深空星尘Channel提供的一位GBA卡带Dump相关人士的出处指引,以及GBA开源烧录卡ChisFlash作者林面包做出的一些回答与讨论。
本文仅出于技术讨论为目的进行编写。
流浪的猎人于2024年10月14日进行初次记录并发布在老男人游戏网附属论坛,在2024年12月6日进行补充,在2025年4月14日集成其他的讨论内容。
其实我一开始根本不考虑发到老男人游戏网附属论坛,如果不是因为那个论坛的站长有这个卡带的ROM不发布,我根本没必要往那里发这篇内容。
还有一点,与其因为自己不会去做某样东西,好意思把这种不会当成某种理所应当的事去别人跟前求一个东西却不愿意自己先动手尝试一下,想要一样东西却不敢付出任何的努力,还不如自己试一试亲自下场做点什么,有些东西光靠从别人手里要,求别人给自己做某样东西这辈子都不可能有,我自己做这个研究同样是自己查了一些东西之后发现自己可能搞不定才去集结其他开发者去搞这个研究,要是光靠从别人手里面要东西就因为自己不会还觉得是理所应当的话,那这种人就是活该要不到。

关于这张卡带,在2018年左右,GBA吧的吧主尝试去使用EZ Flash的烧录器去dump这张卡带,最后没有dump出来。




之后贴吧里面有人成功dump过该卡带,不过未发布ROM。
再之后在老男人论坛里面的这个帖子里也是一样的内容,对方不愿意公开发布ROM,本人一开始觉得对方是在吊胃口+人无我有跑公开平台臭显摆。


直到2024年8月的某一天,我在闲鱼上看见了这张卡带:

当时我还不确定是否要去dump这张卡带,因为我对这个游戏其实没有特别大的兴趣。
然后就是2024年9月末的一天,我发现这人居然还在闲鱼上挂着这张卡带,于是我就决定把他买了,自己给dump了再发出来ROM,然后我连带花掉149RMB,买了一个西蒙匠人的GBA烧录器以防万一。(当时我买这个烧录器的另一个打算,是去烧录那张我之前在淘宝上买的4G合卡)

https://img2024.cnblogs.com/blog/3543333/202504/3543333-20250414215746921-1612967486.jpg



卖家附赠了两张GBA卡带,一张是龙珠Z的盗版卡,另一张是早就被Dump出来ROM的D商汉化三国志。

EZODE烧录卡和NDS内存拓展卡旁边那两张就是卖家的赠品了。

这张卡带还是2005年卖出去的,都快20年了居然还能读出来,也是奇迹了。



还有一点,这张卡带只有GBA可以正常运行,NDS是不能运行的。(BadLuckW之前说GBA和NDS这两个机型运行GBA的初始化情况并不一致,实际上在GBA+NDS模拟器 No$GBA的开发者马丁·科思(Martin Korth)写的GBA软硬件研究文档里,也提及了GBA和NDS的Bios引导上有一定区别。
实际上这张卡带没那么容易破解,我一开始觉得这张卡带大概率就和我之前买的4G合卡一样,用NDS自制软件都可以把第一个地址的ROM给dump出来,但是这个游戏的ID有一些不同之处。



我在卡带到手后,先后在使用了烧录器和NDS自制软件将卡带给dump之后,提取出来的ROM属于空数据,有一大部分的数据都不见了。
由于该卡带的片头显示为YJencrypted,我们在进行了一定调查之后,可以确定这张卡带使用了袁军加密,并不好破解,该加密几乎无法被任何dump设备所提取。
我这下可以确定为啥GBA吧的吧主不能把这张卡带给dump出来了。
后面我和DS Homebrew群里的几个人,以及Advance汉化组的几个人说了这张卡带的事情,DS homebrew的几位技术人士对此有一些不同的看法:
在软件问题上没有头绪的情况下,BadLuckW让我把卡带拆了把电路板拍照发出来看看。
由于这张卡带的外壳也有一点松,我直接可以用手扣开,看到电路板上面的布局,我把卡带拆了发给了他们几个人看。


卡带正面和一些D卡的结构一致,但是背面有两块芯片,BadLuckW认为可能卡带使用了这两个IC作为加密手段,但是芯片表面被白色的粘稠膏状物给黏住了。
我拿棉签蘸了点酒精擦了一会,卡带背面是两片三菱的芯片,看来并不是负责加密的。

而在破解卡带加密上,目前还有一些不同的方案:
1.卧看微尘之前在DS Homebrew群里提到了一个NGC的自制软件,可以用于NGC有线连接GBA,从而去监听卡带数据。
2.参考GBE+模拟器作者Shonumi之前收集任天堂GBA播放君数据的方案,去编写一个Wii自制软件,并把GBA连接到Wii上面,然后让Wii来监听数据。(按照BadLuckW的说法,这本质上是让GBA先读取一个bootloader,然后这个bootloader劫持了一些玩意,这个思路被Shonumi称为“病毒程序”)

(Shonumi自己做的一张图片,来展示这个劫持技术具体的思路)
3:BadLuckW提出的两个思路:
如果有一个通道数足够的逻辑分析仪,那么直接监听GBA和卡带的通信并截获,然后一点点拼回去。
卡带的供电上焊接两个引线,接入可调电源,插入GBA,然后让GBA完成开机初始化,接着可调电源给卡带供电,然后在不关闭GBA的情况下拔出卡带插入GBX Flash烧录器。
但是还有个问题就是这卡带里面还设置了一些陷阱,你访问了这个陷阱卡带又会锁上。
关于目前的情况:
1.卡带使用了袁军加密,不能用正常手段(指使用GBA烧录器和NDS自制软件)将ROM给dump出来。
2.目前已知过去周哥破解过一张袁军加密的卡带,但是周哥和卡带加密者袁军是朋友关系,我觉得基本上就是开发者模式了。
PS:周哥放出过部分加密破解的ROM,但是格式是GBK,不是常规的GBA文件,只能在K101硬解机运行。
流浪的猎人之前去联系周哥,周哥表示目前没时间搞这个。
而目前暂时不可行的原因,只是笔者暂时没有啥折腾主机的条件(DS Homebrew群里有人愿意给我借一台NGC用,只是我目前实在是不太方便。)
实际上在11月份左右,流浪的猎人看见星夜之幻dump了几张Game Boy卡带并放出了ROM,抱着试一试的形态,想看看能不能星夜之幻帮忙dump,不过星夜之幻也表示对GBA没有咋研究过,主要在研究GB卡带。
不过星夜之幻和B站UP主 深空星尘Channel,都向我提到了一个人,GBC模拟器hhugboy的开发者Taizou。(我看他主页感觉像是俄罗斯人?)
他在个人主页记录了大量dump任天堂GBA+GBC/GB盗版卡带的记录,其中就有一篇在2020年左右发布的文章,Taizou成功dump了一张带有YJencrypted的口袋妖怪蓝宝石D商英译卡带:

这里我把他破解相关的一部分内容,通过deepl翻译贴到这里:
这是一个非官方的英文译本,是在游戏的日文版和北美版之间完成的。这两个版本之间的间隔只有四个月,这意味着该译本的制作者必须赶在正式英文版上架之前将其推出市场。
不仅如此,他们还采用了与Sintax公司为其数十亿部GBA平台游戏所使用的 “YJencrypted”系统相同的复制保护措施,大概是为了确保没有其他有心的盗版商可以趁机钻空子。
卡带标签很明显是在美国官方发行材料问世之前制作的--它实际上使用了游戏发行前的封面图,并标有 “RP”(评级待定)的 ESRB 评级。Sintax 的 GBC 策略游戏《口袋妖怪 Saphire》的“New Game Color Advance”版本也使用了同样的封面图。
实际翻译与所谓的“中国绿宝石”有一些共同之处,可能是由同一个人完成的,但很多文字都不一样(而且更奇怪!)。
保护和转储组合
现在,正如我所提到的,这个卡带是受拷贝保护的--但与GBC卡带通常受保护的方式不同,GBC卡带通常可以完全转储游戏,但如果没有该公司的特定映射器就无法运行。哦不:“YJencrypted”卡带有适当的读取保护,是提取数据的大麻烦。
简单总结一下:除非通过GBA启动序列正确初始化,否则你根本无法从卡匣中读取数据(我无法手动复制,只能想办法在不断电的情况下重置),如果你设法绕过了初始化,每个卡匣都有许多“陷阱 ”地址,从这些地址读取数据将被锁定,无法读取任何进一步的数据。而且每个卡匣的“陷阱 ”地址都不一样,所以确定这些地址的唯一方法就是反复试验。
如果你设法从这些卡匣中转存ROM,它大部分都能像标准的GBA ROM一样工作,但它们在32MB ROM地址空间的未使用部分使用了奇怪的寻址/镜像,这也是因卡匣而异的,我不确定它是否有任何模式。
它做的另一件不寻常的事情是,在正常初始化之后,在 ROM 头中替换任天堂标志的几个字节;据我所知,这似乎没有任何与保护相关的用途,但确实可以防止 GBA 在这种状态下以某种方式启动游戏。在本例中,被替换的数据是 “90 AE 17 4E 59 4A”--最后两个字节在ASCII 码中是“YJ”,因此这可能是某种保护的“签名”......
总之,这意味着我无法像往常那样发布 GBC 的“原始转储”,然后尽可能发布“石皮 解”版本--相反,我在这里展示的是从这东西中提取完整可用 ROM 的最佳努力。
该ROM的构建过程如下:
转存了整个32MB ROM区域(实际ROM大小为8MB,与日文版相同)
跳过“陷阱”地址
跳过的数据从相同数据的镜像拷贝补回
ROM保留为完整的32MB,以便在不模拟怪异镜像的情况下进行游戏(因为我还没有完全弄明白它是如何工作的)
用真正的任天堂徽标补回标题中被覆盖的部分任天堂徽标
起初我对最后一点不太确定,因为这意味着要黑掉一些原来转储的数据;但我们知道它实际上在启动时确实显示了正确的任天堂标志,因为游戏启动时确实显示了该标志,所以恢复该标志实质上就是恢复购物车的正常启动状态。我认为这是合理的。
(我确实考虑过发布较少触发的ROM,例如跳过数据仍被跳过,任天堂徽标被部分覆盖的 ROM,但我不认为它比这个转储更“真实”/“完整”,如果我把它放到野外,只会引起混乱,但如果有人有兴趣看看,请告诉我)。
我把它标记为“YJ恢复”转储,这意味着它基本上是用上述技术转储并修补的。这并不是真正的“原始转储”,因为它是经过修补的,而且存在已知的重复/过度转储数据。但这也不是真正的破解/黑客行为,因为理论上所有修补过的数据都应该存在于原始磁带盒中。
根据深空星尘Channel的说法,Taizou使用了一个叫xboo电缆的东西,将GBA连接到PC上面进行操作。
凑巧前几天,流浪的猎人在尝试配置GBA开发库butano,并打算写一些东西(但是我又被配置Windows环境变量和WSL安装Linux给恶心了一次),不过在工程make上面一直存在问题弄不出来,中途我还是又翻了一下Tonc的GBA开发文档,正好Tonc在第3章里面提到了这个xboo电缆的样子:


这就麻烦了,这个电缆需要打印机接口连接,而且需要自己手搓一根出来,这对于不擅长硬件的我而言十分棘手,而且跑这个东西,你得弄一台Windows XP系统的电脑。
笔者最后在这个记录的评论区给Taizou回复了一条评论,不过对方截至2024年12月6日发布本文的时候仍然没有做出回复。
https://img2024.cnblogs.com/blog/3543333/202504/3543333-20250416125740504-666670852.png
目前暂时没啥头绪了,我暂时不考虑dump这张卡带了。
前段时间热门的GBA开源烧录卡ChisFlash作者林面包,正在开发Bacon开源烧录器,笔者把自己正在写的这篇文章发给了对方,对方表示等他开发设备到了的下一步就是做仿真,Bacon烧录器的设计目标之一就是用于直接执行卡带,能直接执行卡带意味着加密的内容会自动被拖下来。
并且林面包看完本文之后,也提出了一个思路:
大概明白了,我的思路是这样的,也更方便做调试和自动化提取
利用bacon+mgba(或者自己写一个小型的ARM解释器)实现片上执行,模拟真实GBA对卡带的操作,但暗桩确实没办法防,等我开发进度到片上执行的时候,我会试试解密我手头的yj加密卡带, 而且说起来都是袁军加密,说不定每个游戏操作都不一样,最最直接粗暴的方法就是片上执行。
目前流浪的猎人也只能等着Bacon开源烧录器的成品发布之后,再买一个去尝试dump这张卡带了。
最后我再补充两张我拿Analogue Pocket运行这张卡带在BIOS界面报错的照片:


不过我个人对某人dump不发布ROM有一些不同的想法,当时我提出的几个问题:
1.当事人既然不愿意放出ROM,那么破解者是否是袁军本人?或者是双方存在利益关系不愿意发布?
2.假设他dump了卡带,是否和某些人一样觉得“自己研究这个太辛苦了,不能就这么发了ROM白让你们玩”,我不知道对方是否这么想过。
3.卡带持有者不知道是因为啥原因不想公开ROM
不过至少对方没干另一种行为,破解了之后搞付费,只能找谁买到ROM才能玩,或者是和某些bilibili众筹汉化的人渣一样,未经允许偷跑ROM再跑到闲鱼上面开个小号当倒卖狗。
在我发布这篇文章几个小时后,论坛站长给出如下回复:
Oldman:
是这个游戏吗?我就有rom,不过dump者不让发布,还需等待,不是吊胃口,我也得讲信用是吧
流浪的猎人:
我是看见你没公开ROM,我准备买了自己dump,结果发现卡带有加密
Oldman:
不让公开呀,而且他人也消失了,联系不到了,手上还握着很多其他dump修复的中文rom
然后是另外几位的回复:
shn:
卡带ic擦干净些看看。不过可以推断,应该就是三零的两个nor,用于存储rom的,两个ic串联高位,实现的扩容。我不知道这个卡插nds上会显示什么,是不能dump还是dump的内容有问题。如果是dump的内容有空白,两个ic存储的话,可能有自己的切换空间指令?目前我还想不通。 但是,但是,但是,就算是两个ic,只要是三零的nor芯片,可以焊下来搞到老d卡上去,分别dump,然后合并就行了。
我对nor的了解,应该没有什么特殊的指令不让读取,或者我理解的太浅显了
流浪的猎人:
这张卡带插在NDS上面,使用GBA模式运行会直接白屏,使用nds端的烧录软件也只会显示一些空数据,dump出来只有开头一部分的地址
shn:
另外对于周老板的gbk游戏,我发现,其头部bios读取部分实际跟原版gba是一致的,单到了执行游戏初始化时,其代码改变了规则,并不能被arm或者thumb反汇编处理,不知是否意味着bios中(或者周老板的固件中)有别的编码处理,可以识别这些看似加密的代码?
只是略窥一探,我也没有深入的去了解,主要我对这些代码根本不了解,有时间可以继续研究研究
72hour:
dump到陷阱了,看原理好像放了些陷阱地址,只要读到这些地址就停止读取后面的数据了!
shn:
不要dump,进nds的hex查看数据情况先。如果直接查看的内容跟dump的不同,再说
shn:
我是理解不了什么dump陷阱,nor作为读取状态,我了解的根本不会有什么指令会阻止它输出,跟纸上的文字一样,没有什么指令能阻碍眼睛看到它的内容。如果有,那真的太神奇了,一段书本上的文字被人看到就会将全本书的内容隐藏了,这个我真理解不了。nor的写入是要解锁的,就像拿笔一样,如果说这个环节能改变东西我相信,读取是不会改变任何东西的,这也是nor保护数据安全的基础原理啊
gymzatan :
袁军加密有两种,一种可以在nds上运行,rom头也可以被dump设备读取,但读取很小一段之后就会被屏蔽;另一种就是nds也无法运行的。我在taizou的discord群里面请教过他,他说这种卡带加密主要是靠检测GBA开机启动时间,必须与官方GBA系列完全一致才能通过,否则看门狗就会屏蔽设备,而NDS因为启动方式不同所以就无法运行此类卡带。周哥硬解机也是基于控制启动时间实现了运行这类D卡。至于那个蓝宝石,我记得他们说是通过一个类似外接金手指的设备间接读取卡带,在进入游戏后马上做一些硬件上的操作引导到dump设备(具体我也不清楚),实现分批读取rom片段,最后把这些片段拼接起来,反正是非常繁琐,也并非完全可重复的操作
gymzatan :
具体也不能透露更多了,只是说这个事情可能最后还是得老爱决定怎么处理
流浪的猎人:
看个人决定了,无论最终老爱是否发布ROM,我这边都会尝试dump卡带的
流浪的猎人:
不过倒是感谢你的回答了,我现在还在写一篇研究Analogue Pocket有关GBA还原研究相关的文章,你的回答倒是启发了我的一个想法
Conard :
有没有这么一种可能,给存储芯片吹下来用IC刷写器直接给做镜像,就不管他卡带的主控程序
une21:
作为帖子里截图中的“一员”表示,这盘卡我收到两张了,但是一直没有更好的通路实现分享,包括蜡笔小新D商汉化,我至今都未买到,也基本放弃找寻了,之前也无偿分享过不少自费购卡的rom,至于闲鱼上是否有人拿去做卡赚钱跟我没关系,反正我也不靠这个发家,既然都决定发布出去了就别搞长臂管辖了。分享这个事,的确是持卡者不同意发布的话也实在没办法,虽然我也理解不了这种决定,也的确很想下到这些rom,所以不多说什么了,楼主的文字通篇都看完了,一样坚持过但个人实在能力有限,表示完全感同身受。
补充:
如果有其他人方便dump也可以联系我,我唯一的要求就是dump成功并修复ROM后必须无偿在互联网上公开ROM,要是只有我一个人自嗨的话,那我买这张卡带就没意思了。
如果之前那位破解了袁军加密的人,愿意协商并公开ROM我也没问题,不过我还是会想办法去尝试把我手里的这张卡带给dump出来。
目前的进展:
BadLuckW答应可以做一根Xboo电缆,我会在确定整个流程后尝试回家用我那台老笔记本试着提取数据,但是我们需要单独研究整个工作流程。
参考内容:
A mysterious sapphire
https://hhug.me/?post=90
Tonc: My first GBA demo
https://www.coranac.com/tonc/text/first.htm
GBA D商绝版游戏互助分享计划,站长请进
https://bbs.oldmantvg.net/thread-29248.htm
Edge of Emulation: Nintendo Play-Yan - Part 1
https://shonumi.github.io/articles/art32.html
https://github.com/tzlion/vfdump

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: GBA的D商汉化游戏 细胞分裂实体卡 袁军加密破解研究 2025.04.14补充版本