[SE的技术力]关于官方反烧录验证的详细分析与对策 by Tring

gbadev上的资料搬运贴 Docmentation贴 为了防止某天网站down没有资源。我决定老老实实的坐一回搬运工。 未完待续。。。。。。 阅读详情

转自互联网:  

  相信这次不少烧录卡都扑倒在SE新出的恐怖游戏7日死的怨念下~经过几次详细研究~然后再比对上当时FFCC的那个几分钟试玩的检验代码~最终本人得到一个很令人不愿接受的结论~

这些一切都是SE的新烧录验证程序在作祟~SE已经有足够的技术检验出玩家是在使用Z版卡还是烧录卡~并且用一切近乎于羞辱的方式令玩家无法正常游戏(FFCC是给试玩时间后BAN掉~7日死还故意给放个片头LOGO才死机……)

按照这个势头~甚至可以断然~在马上将出的DQ5中~SE将会采用该技术继续玩弄烧录玩家~甚至采用新的检测技术~
所以这里我们十分有必要了解一下现有烧录检测技术的详情~
虽然之前我也有在帖子里说过这个问题~不过这里我认为还是有必要专门发一帖来介绍一下这个问题~

废话不多说了~首先以7日死的代码为例分析一下该检测程序的功能和实现~

首先说下ROM的载入~
在烧录里ROM都是由烧录前端引导程序载入到内存中然后放行的~开始游戏后程序会先进行一系列的初始化步骤~然后切到主循环~
因此要检测烧录~必须在进入主循环之前~也就是说代码在之前的初始化部分里~
这里我把反汇编后的7日死的检测程序入口帖出~:

:02000BF0 E92D4008 stmdb  r13!,{r3,r14}
:02000BF4 FA01BD6A blx 020701AC   ;(这里还有个编译错误~这跳转的地址应该是20701A4)

这里这个2000BF0的地址一般是游戏从2000800的初始化程序结束后用bl r1跳转到滴第一个地址~也就是正式程序部分的最开头~(有的游戏是在2000C00)
这个ROM非常厚道的把烧录检测程序放在了整个程序代码的最开头部分~……
然而大家也许注意到了~这里的跳转指令是blx而不是常用的bl~这其中最大的区别在于用blx的跳转后的代码是使用THUMB压缩格式的~……这使得我们现有的反汇编程序都对此无能为力……
因此现在换上CT2~因为在CT2的反汇编菜单里可以选择编译方式~选择到ARM9:THUMB指令后~我们看到20701A4这里终于顺利显示出了代码~如下:

020701a4 4804 ldr r0,[pc,10h]  ;[020701b8]=0x040000d4
020701a6 6800 ldr r0,[r0,0h]
020701a8 2800 cmp r0,0h
020701ac d001 beq 20701b0h

这里看到了检测代码的真面目~……读取0x040000d4的值~然后看是否等于0~如果不等于0的话就判定为使用烧录~……
也许这样说还不能理解这个代码的真实含义~因此这里介绍一下0x040000d4这个I/O口的作用~在权威开发文档GBATEK里是这么介绍的:

GBA DMA Transfers 

Overview
The GBA includes four DMA channels, the highest priority is assigned to DMA0, followed by DMA1, DMA2, and DMA3. DMA Channels with lower priority are paused until channels with higher priority have completed.
The CPU is paused when DMA transfers are active, however, the CPU is operating during the periods when Sound/Blanking DMA transfers are paused.
…………
DMA3 - can be used to write to Game Pak ROM/FlashROM (but not GamePak SRAM).
Beside for that, each DMA 0-3 may be used for whatever general purposes.
…………
40000D4h,0D6h - DMA3SAD - DMA 3 Source Address (W) (any memory)

简单的说40000D4就是DS(GBA)的4个DMA通道之一的DMA3的源地址寄存器~是使用该通道所必须设置的一个寄存器~
那DMA通道又是什么呢?~相信计算机考过级的人大概多多少少见过一点~所谓DMA就是一种让计算机(或类似设备)的各个I/O设备~存储设备之间能够不经过CPU而进行通信的硬件系统~所谓的DMA通道正式这样的一个桥梁~CPU所需要做的事情只是设置好该通道~而具体的传输过程是由专门的DMA芯片完成~无需CPU插手~
总是是一种十分便捷的数据传输方式~在DS中~通常用于内存和显存之间的传递~

回到之前说过的ROM载入方法上~由于检测代码被安插在游戏的最开头~该时刻由于游戏本该没做任何事情~所以也是不可能调用了DMA的~因此此时检测DMA3的源地址~无疑应该为0才对~
但是如果玩家使用了烧录卡则情况就完全不同了~……由于前期引导程序的存在~此时再在游戏开头检测该寄存器的话~……就会检测到烧录卡上次调用DMA的痕迹~无疑此时游戏就将玩家给认定为烧录玩家了~……

原理分析结束~接下来就是介绍对策~
由于该段代码有一个很显著的特点~就是调用0x040000d4这个地址~因此这样就有比较简单的方式来处理以后的ROM中有该检测代码的情况了~下面我用FFCC美版ROM来简单介绍对策~

首先用CT2打开ROM~直接在数据中搜D4 00 00 04 也就是上面那个地址在内存中保存的地址~可能会搜到不少值~但是因为只有ARM9.BIN中的代码才是我们关注的~所以基本上那些很靠后~用FSI查看已经偏出ARM9范围的值都可以直接忽略掉~
也就是说这里只用关注搜索出的第一个值~本例中该值在0202870C的位置~
然后将窗口切换到ASM反汇编窗口~指令方式切换到ARM9:THUMB~然后在这个位置上面一点的地方开始找~果然出现了刚才所说的那段代码~

020286f8 4804 ldr r0,[pc,10h]  ;[020701b8]=0x040000d4
020286f8 6800 ldr r0,[r0,0h]
020286f8 2800 cmp r0,0h
020286f8 d001 beq 2028704h

居然和上面7日死的代码一模一样~……因此甚至可以在搜索中直接搜索 04 48 00 68 00 28 01 d0 
找到位置后剩下的就是改了~……看最下面一行beq~……这里给改成b指令就一切OK了~简单的说~就是把该地址对应的那个 d0 改成 e0 就一切完工了~……

其实在知道原理后做起来就是这么简单~不过上面所述的所有对策都仅仅是对于SE现有的反烧录技术~而如果SE或者别的什么厂商~哪天突然又发现了一个新方法能检测到烧录卡的存在的话~……那么以上这一切就又全部成了泡影~一切破解又需从头开始~……
最后在这里预祝一下~DQ5别用烧录检测~至少别用新的烧录检测代码就好~

PS:如果你想检测一下你的烧录卡是否有可能被SE的该技术检测到~请下载下面小程序~放在烧录卡上运行~如果结果显示出来的只有2个逗号~没有长串的数字和字母的话~那么恭喜~你的烧录卡完美模拟~这次没有破绽~SE检测不出来~以上文章内容你大可完全无视就好了~
否则的话~……

否则的话~请协助我的测试~将你烧录卡的类型和显示的内容帖在回帖上~谢谢~

android随笔之烧录emmc bin dump及验证 本文基于MTK 8G EMMC方案描述如何dump emmc bin及emmc bin如何导入进去 阅读详情

相关推荐

EFR32 gecko 2生产烧录

#mermaid-svg-rNfrT25oib0VwV7h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rNfrT25oib0VwV7h .error-icon{fill:#552222;}#mermaid-svg-rNfrT25oib0VwV7h .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rNfrT..

qq_42860989的博客 917

[GJ高端娴熟又技术的SE]DQ5反烧录技术深度解析

[GJ高端娴熟又技术的SE]DQ5反烧录技术深度解析

Karl的专栏 2039

GBA《火焰纹章》三部曲专用修改套件:可视化编辑地图、角色、技能、文本与音乐

专为GBA平台FE6《封印之剑》、FE7《烈火之剑》、FE8《圣石之谜》设计的本地化与MOD制作工具,无需编程基础即可操作。支持直接替换游戏内图像资源(含角色立绘、UI图标、地图图块),通过表格界面批量修改角色属性、职业成长率、武器耐久与威力、技能触发条件及剧情文本。内置所见即所得的地图编辑器,可调整地形类型、事件触发区域、移动路径与战斗动画位置。音乐模块允许导入自定义音轨并匹配GBA硬件音源配置。集成补丁管理功能,兼容主流汉化补丁一键加载与冲突检测。所有界面采用多语言支持(含简体中文),依赖库已打包进bi

u6v7w8x的博客 1149

GBA学习-基础篇

GBA 基础知识,寄存器信息,基础原理应用的学习

affairing的博客 3612

GBA TEK Technical Info version 2.5

Gameboy Advance / Nintendo DS - Technical Info - Extracted from no$gba version 2.5 HTML格式

GBATEK带标签重排版.pdf

GBATEK带标签重排版.pdfGBATEK带标签重排版.pdf

[译文]GBAGuy的GBA ASM教材 第八章 BIOS

<br />第八章 BIOS<br /> <br />BIOS是一些GBA中预先写好的函数集。我们能使用指令SWI来调用它们。<br /> <br />SWI<br /> <br />SWI是SoftWare Interrupt(软件中断)。SWI的实质就是调用那些内置的函数,只要给出函数号就能工作了。比如:<br />mov r0, #0x10<br />swi 0x80000 @ SWI编号8是SQRT(SQuare RooT,开根号)。它会对r0开根号,然后把结果放到r0。<br />注意虽说SWI编

yusjoel的专栏 1793

GBA官方开发库(官方哦)

GBA官方开发库,会用就拿去,要你2分不会太多吧。

探索3DS家居屏幕新境界:NDSForwarder深度解析

探索3DS家居屏幕新境界:NDSForwarder深度解析 项目介绍 NDSForwarder,作为GBATemp页面上广受好评的Forwarder3-DS Java应用的接班人,为任天堂3DS用户带来了革命性的体验升级。这款精心设计的应用程序能够轻松创建NDS转发器,并直接安装到你的3DS主屏幕上,极大地丰富了游戏启动方式,让怀旧的NDS游戏触手可及。 项目技术分析 NDSForwarder的背...

gitblog_00183的博客 1637

gbatek硬件资料

gba与nds的硬件资料,很全。是国外牛人的,英文。想开发模拟器的,就一定要看看这个!

用FPGA控制步进电机是种什么体验?从状态机到分频器,详解Verilog驱动A4988全流程

本文详细介绍了如何使用FPGA通过Verilog语言控制步进电机,从状态机设计到A4988驱动模块的精准控制全流程。FPGA的并行处理能力和纳秒级响应速度使其在步进电机控制中展现出显著优势,特别适合工业自动化和精密仪器应用。通过实战代码示例,展示了如何实现高效的状态机设计和可编程分频器,为开发者提供了一套完整的FPGA驱动步进电机解决方案。

weixin_30983965的博客 329

如何快速入门GBA开发:Awesome-GBAdev新手必备资源清单

Awesome-GBAdev是一个精心策划的Game Boy Advance开发资源列表,汇集了从入门到进阶所需的各类工具、教程和社区资源。无论你是完全没有经验的编程新手,还是希望转型掌机开发的程序员,这份开源项目都能帮助你快速掌握GBA开发的核心技能。 ## 为什么选择GBA开发?🎮 Game Boy Advance作为任天堂经典掌机,拥有独特的硬件架构和庞大的玩家群体。开发GBA游戏不仅

gitblog_00261的博客 712

Android——Handler详解

1. 简介 Handler是一套 Android 消息传递机制 可以说只要有异步线程与主线程通信的地方就一定会有 Handler。 在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理 使用Handler消息传递机制主要是为了多个线程并发更新UI的同时,保证线程安全 2. 相关概念解释 Handler、Message、Message Queue、Looper Android消息机制: 以Handler的sendMes

Yawn 7万+

[译文]GBAGuy的GBA ASM教材 第四章 分析第一个程序

<br />四章 分析第一个程序<br /> <br />今天我们会讨论一下第二章的那段程序,不过之前我们要再多学点指令。<br />我们要学的第一条指令是STR的另一种形式。我们能以32位方式工作,其实也能以16位,8位方式工作,不过你要确定你使用的地址是不是按照32位,16位对齐了。这里几个例子演示了如果读取和写入16位和8位的值:(我这里只用了寄存器寻址方式,其实都可以用)<br /><br />ldrh r0, [r1] LDR后面的H意思是halfword(半字,word=32,half=16,b

yusjoel的专栏 1581

【深度学习新浪潮】手把手教你不花一分的token钱,纯本地部署openclaw

本地轻量开源AI智能体框架Windows 11 + WSL2 + Ollama + OpenClaw 一键部署零代码配置,直接用上本地模型工具调用未来方向:轻量化、插件化、本地生态成熟如果你喜欢本地AI、厌倦了云端限制、想真正拥有一个“听话又能干”的本地助手,OpenClaw 绝对值得现在就上手玩一玩。

专注:太空算力、AI infra、异构调度、大模型成本工程 2785

【WRF工具】WRF 模型输出可视化工具 plotfmt

【WRF工具】WRF 模型输出可视化工具 plotfmt

WW、forever的博客 1292

quartus程序回读

quartus中flash程序回读

weixin_41155462的博客 5245

复现Fastjson反序列化漏洞(从dnslog回显到rce再到反弹shell)

Fastjson是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令执行漏洞,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。......

记录并分享学习安全的知识点.. 2697

移植OpenHarmony轻量系统【7】烧录与验证

摘要:本文简单介绍OpenHarmony轻量系统移植,内核初始化和启动 适合群体:想自己动手移植OpenHarmony轻量系统的朋友 上一节我们已经完成的移植好了内核,hb build -f编译后,查看输出文件: out\gd32f303_lianzhian\gd32f303_lianzhian 其中,OHOS_Image.bin 是我们要烧录的文件。 这里我们使用jlink进行烧录,步骤如下: (1)下载JLinkARM_GD_Exclusive软件,打开JFlashARM.exe程序。 (2)选择Op

连志安 1836

问答式AI vs 智能体(Agent):它们有什么不同?

你肯定用过 ChatGPT 或文心一言——问它一个问题,它给你一个答案。AI Agent(AI智能体)。很多人搞不清楚:它们不都是"AI"吗?有什么区别?这篇文章用一个最简单的类比,彻底讲清楚这两者的本质差异。框架特点适合人群AutoGPT完全自主执行任务,链式思考开发者MetaGPT模拟团队协作,多角色分工开发者LangChain最流行的Agent开发框架开发者Dify可视化无代码搭建Agent非技术用户Coze(扣子)字节跳动出品,国内最易用普通用户WorkBuddy。

Johnny2004的专栏 447

YOLO骨干网络改进-第1篇:深度解析YOLOv8的C2f模块原理与实现

首先,需要将自定义的C2f模块注册到Ultralytics的模块字典中。# 注册自定义模块"""自定义的C2f模块。"""# 自定义YOLOv8s配置文件:yolov8s_custom.yamlscales:# Backbonebackbone:# Headhead:# 加载自定义模型# 训练模型imgsz=640,batch=16,device=0,workers=8,设计理念:C2f模块是C3模块的演进,通过增加梯度分支来丰富梯度流,提升特征表示能力。结构原理。

2201_76125393的博客 110

MiCoder烧录和SEGEER烧录所对应的J-Link驱动选择

1. MiCoder烧录和串口调试 准备: 硬件:电源+板子+JTAG 软件:电脑+MiCoder 接线:按原理图接线 编译和烧录,生成build文件,查看bin文件日期 串口调试: 硬件:USB_to_TTL+板子(USB或电源适配器供电) 软件:SerialPortUtility 2. MiCoder烧录失败排查: 接线接头是否正确; 驱动是否正确(J-Link驱动、USB驱动); 线...

大叶子的博客 818

华为OD面试手撕真题目录

2026最新华为OD面试手撕真题 , 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解.

qq_45776114的博客 1万+
上一篇: Mac下的一些软件使用心得
下一篇: [GJ高端娴熟又技术的SE]DQ5反烧录技术深度解析
LuckilyYu
博客等级 码龄20年 72粉丝 89原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值