2025 pwn_A_childs_dream
文章目录
- fc/sfc
mesen下载和使用推荐
fc/sfc
https://www.mesen.ca/docs/
mesen2安装,vscode安装zg
任天堂yyds
w d 左右移动 u结束游戏 i崩溃或者卡死了 L暂停
D658地方有个flag
发现DEEE会使用他。且只有这个地方,maybe会输出flag,应该属于DEDF这个函数,因为和上面通过RTL隔开了
00CD5E [004D5E] A9 00 00 LDA #$0000
……
00CD73 [004D73] 22 AC C0 00 JSL $00C0AC00C0AC [0040AC] 3B TSC …… 00C8E0 [0048E0] 22 69 E0 00 JSL $00E069 00E069 [006069] 08 PHP……00E073 [006073] CB WAI 中断00E074 [006074] AF 30 00 00 LDA $000030……00E07C [00607C] 6B RTL……00C8EA [0048EA] 6B RTL
00CD77 [004D77] 80 E5 BRA $00CD5E
发现R的时候没有 JSL $00E069 直接到并且也没有 RTL返回到BRA $00CD5E
但当开始00C0AC时候 此时返回地址是正常的
发现返回地址比保存到栈里的返回地址多1,可能是这个汇编的特色吧
所以问题就出在这段00C0AC [0040AC] 3B TSC -> 00C8EA [0048EA] 6B RTL这段代码里
不但改掉了返回地址,并且没有进入00E069 里
然后设了个条件断点观察栈的返回地址改变时候自动下断点
发现进入 --------sub start-------- 018301 [008301] A3 04 LDA $04,S后改变的
调试后又发现是018316 [008316] 20 28 00 JSR $0028
导致的,会跳转到0028去执行
000028 [000028] 54 00 7F MVN $7F,$00
00002B [00002B] 60 RTS----------------
大致逻辑如下
// 假设有一个 `stack[]` 数组表示堆栈,`memory[]` 数组表示内存void subroutine() {A = stack[4]; // LDA $04,Smemory[0] = A; // STA $00Y = A; // TAYA = stack[8]; // LDA $08,SX = A; // TAXA = stack[10]; // LDA $0A,Sint temp = X; // 保存 X 的值X = Y; // XBA: 交换 A 和 XY = temp;A |= stack[6]; // ORA $06,Smemory[41] = A; // STA $29A = stack[12]; // LDA $0C,Sif (A == 0) {goto skip_decrement;}A--; // DEC
skip_decrement:// PHB 及 PLB 没有直接映射subroutine_0028(); // JSR $0028A = stack[6]; // LDA $06,Smemory[2] = A; // STA $02return; // RTL
}
010028 [000028] 54 00 7F MVN $7F,$00此时A=2 X=0 Y=1ff9 DB=7E第一次复制:
源地址:$7F:0000 的值被复制到 目标地址 $00:1FF9。
X 和 Y 递增:
X = 0 + 1 = 1
Y = 1FF9 + 1 = 1FFA(以十六进制计算,加 1 是 1FF9 → 1FFA)。
A 减 1:A = 2 - 1 = 1。
第二次复制:
源地址:$7F:0001 的值被复制到 目标地址 $00:1FFA。
X 和 Y 递增:
X = 1 + 1 = 2
Y = 1FFA + 1 = 1FFB.
A 减 1:A = 1 - 1 = 0.
第三次复制(A 变为 0,但 MVN 会继续执行直到 A 为 $FFFF):
源地址:$7F:0002 的值被复制到 目标地址 $00:1FFB。
X 和 Y 递增:
X = 2 + 1 = 3
Y = 1FFB + 1 = 1FFC.
A 减 1:A = 0 - 1 = -1(以十六进制表示为 $FFFF)。
所以目标就是怎么改0x7f0000
期间自己乱尝试的时候发现前面的按键会导致后面的R的结果不一样。猜测可能是由影响的,自己准备下个断点监视0x7f0000内容。尝试后发现上下按钮对返回地址有影响,类似上按钮+1,下按钮-1,但加的比特位置有区别,貌似和左右移动有关。并且球球不能掉下去,不然会清零
这个地方逆得不是很明白,有时间再看看
所以最终目标将其变成DEDF即可,还要保证球球不掉落下
因为会自动加1,所以是DEDE
相关文章:

2025 pwn_A_childs_dream
文章目录 fc/sfc mesen下载和使用推荐 fc/sfc https://www.mesen.ca/docs/ mesen2安装,vscode安装zg 任天堂yyds w d 左右移动 u结束游戏 i崩溃或者卡死了 L暂停 D658地方有个flag 发现DEEE会使用他。且只有这个地方,maybe会输出flag,应…...
面试题整理:操作系统
文章目录 操作系统操作系统基础1. 操作系统的功能?2. 什么是用户态和内核态? 进程和线程1. 是什么?区别?2. ⭐线程间的同步的方式有哪些?3. PCB 是什么?包含哪些信息?4. 进程的状态有哪些&#…...

构建未来教育的基石:智慧校园与信息的重要性
随着科技的迅猛发展,教育领域正经历一场深刻的变革。在这个过程中,“智慧校园”作为教育信息化的重要实践,扮演着不可或缺的角色。智慧校园不仅仅是硬件设施的升级,更是一种全新的教育理念,强调利用信息技术优化教育资…...
C# 控制台相关 API 与随机数API
C# 控制台相关 API 与随机数API 控制台输入输出 功能说明 Console.WriteLine(string): 输出字符串并换行Console.Write(string, string): 输出字符串不换行Console.ReadLine(): 等待用户输入并返回字符串Console.ReadKey(bool).KeyChar: 读取按键,指定是否显示输…...

【踩坑】⭐️MyBatis的Mapper接口中不建议使用重载方法
目录 🍸前言 🍻一、背景 🍹二、问题处理 💞️三、处理方法 🍸前言 小伙伴们大家好,很久没有水..不是,写文章了,都收到系统的消息了;我算下时间,上周是单休…...
CSS Grid 网格布局,以及 Flexbox 弹性盒布局模型,它们的适用场景是什么?
CSS Grid网格布局和Flexbox弹性盒布局模型都是现代CSS布局的重要工具,它们各自具有独特的优势和适用场景。 作为前端开发工程师,理解这些布局模型的差异和适用场景对于编写高效、可维护的代码至关重要。 CSS Grid网格布局 适用场景: 复杂…...

HDFS体系结构
HDFS 支持主从结 构 , 主节 点 称为 NameNode ,从节点称为 DataNode HDFS中还包含一个 SecondaryNameNode 进程,只要辅助主节点 公司BOSS:NameNode (NN) 秘书:SecondaryNameNode (2NN) 员工&a…...
AI大模型的技术突破与传媒行业变革
性能与成本:AI大模型的“双轮驱动” 过去几年,AI大模型的发展经历了从实验室到产业化的关键转折。2025年初,以DeepSeek R1为代表的模型在数学推理、代码生成等任务中表现超越国际头部产品,而训练成本仅为传统模型的几十分之一。这…...

vscode/cursor+godot C#中使用socketIO
在 Visual Studio Code(VS Code)中安装 NuGet 包(例如SocketIOClient),你可以通过以下几种方法: 方法 1:使用dotnet cli 打开终端:在 VS Code 中按下Ctrl 或者通过菜单View -> Terminal打开终端。 导…...
分段线性插值
分段线性插值 分段线性插值,就是将插值点用折线段连接起来逼近f(x)。设已知节点 a x 0 < x 1 < ⋅ ⋅ ⋅ < x n b ax_0<x_1<<x_nb ax0<x1<⋅⋅⋅<xnb上的函数值 f 0 , f 1 , . . . , f n f_0,f_1,...,f_n f0,f1,...,fn&a…...

制作一个项目用于研究elementUI的源码
需求:修改el-tooltip的颜色,发现传递参数等方法都不太好用,也可以使用打断点的方式,但也有点麻烦,因此打算直接修改源码,把组件逻辑给修改了 第一步下载源码 源码地址 GitHub - ElemeFE/element: A Vue.j…...

[AI]从零开始的llama.cpp部署与DeepSeek格式转换、量化、运行教程
一、前言 在上一次的DeepSeek的部署教程中,我们使用Ollama与LM Studio很轻松的部署了DeepSeek并且也完成了相关API的调用,如果还有不会的小伙伴请看下面的教程: DeepSeek本地部署:[AI]从零开始的DeepSeek本地部署及本地API调用教…...
vLLM专题(二):安装-CPU
vLLM 是一个 Python 库,支持以下 CPU 变体。选择您的 CPU 类型以查看供应商特定的说明: Intel/AMD x86 vLLM 最初支持在 x86 CPU 平台上进行基本模型推理和服务,支持的数据类型包括 FP32、FP16 和 BF16。 注意 此设备没有预构建的 wheel 包或镜像,因此您必须从源代码构建 v…...

JVM 底层探秘:对象创建的详细流程、内存分配机制解析以及线程安全保障策略
文章目录 1. 类加载检查2. 内存分配① 指针碰撞② 空闲列表线程安全问题: 3. 内存空间初始化4. 对象头设置5. 对象初始化 当Java虚拟机遇到一条 new指令时,会执行以下步骤来创建对象: 1. 类加载检查 首先检查new指令的参数是否能在常量池中…...
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter14-DOM
十四、DOM 文档对象模型(DOM,Document Object Model)是 HTML 和 XML 文档的编程接口。DOM 表示由多层节点构成的文档,通过它开发者可以添加、删除和修改页面的各个部分。脱胎于网景和微软早期的动态 HTML(DHTML&#x…...
外汇掉期(FX Swap):全球企业管理外汇风险的关键工具(中英双语)
外汇掉期(FX Swap):全球企业管理外汇风险的关键工具 引言 在全球化经济环境下,跨国公司、银行和金融机构经常面临外汇风险,因为它们的业务涉及多种货币。例如,一家中国公司可能需要欧元支付欧洲供应商&am…...
verilog程序设计及SystemVerilog验证
1.Verilog测试程序设计基础 1.1Testbench及其结构 在仿真的时候Testbench用来产生测试激励给待验证设计( Design Under Verification, DUV),或者称为待测设计(Design UnderTest, DUT) 。 测试程序的一般结构: Testbench是一个测试平台,信号…...

Unity DeepSeek API 聊天接入教程(0基础教学)
Unity DeepSeek API 聊天接入教程(0基础教学) 1.DeepSeek 介绍 DeepSeek是杭州深度求索人工智能基础技术研究有限公司推出的一款大语言模型。2025年1月20日,DeepSeek-R1正式上线,和当前市面上的主流AI相比,它在仅有极少标注数据的情况下&am…...

力扣 乘积最大子数组
动态规划,注意负负得正,dp交换。 题目 注意这里的dp的乘积要求最大,而两个很大的负数相乘也是大的,因此在每遍历到一个数时要存一个最大值的dp与一个最小值的dp,然后遍历完后再去存ans的dp。由于存在负数,…...

ABP - 事件总线之分布式事件总线
ABP - 事件总线之分布式事件总线 1. 分布式事件总线的集成1.2 基于 RabbitMQ 的分布式事件总线 2. 分布式事件总线的使用2.1 发布2.2 订阅2.3 事务和异常处理 3. 自己扩展的分布式事件总线实现 事件总线可以实现代码逻辑的解耦,使代码模块之间功能职责更清晰。而分布…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...