当前位置: 首页 > news >正文

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打开终端。 导…...

分段线性插值

分段线性插值 分段线性插值&#xff0c;就是将插值点用折线段连接起来逼近f(x)。设已知节点 a x 0 < x 1 < ⋅ ⋅ ⋅ < x n b ax_0<x_1<<x_nb ax0​<x1​<⋅⋅⋅<xn​b上的函数值 f 0 , f 1 , . . . , f n f_0,f_1,...,f_n f0​,f1​,...,fn​&a…...

制作一个项目用于研究elementUI的源码

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

[AI]从零开始的llama.cpp部署与DeepSeek格式转换、量化、运行教程

一、前言 在上一次的DeepSeek的部署教程中&#xff0c;我们使用Ollama与LM Studio很轻松的部署了DeepSeek并且也完成了相关API的调用&#xff0c;如果还有不会的小伙伴请看下面的教程&#xff1a; DeepSeek本地部署&#xff1a;[AI]从零开始的DeepSeek本地部署及本地API调用教…...

vLLM专题(二):安装-CPU

vLLM 是一个 Python 库,支持以下 CPU 变体。选择您的 CPU 类型以查看供应商特定的说明: Intel/AMD x86 vLLM 最初支持在 x86 CPU 平台上进行基本模型推理和服务,支持的数据类型包括 FP32、FP16 和 BF16。 注意 此设备没有预构建的 wheel 包或镜像,因此您必须从源代码构建 v…...

JVM 底层探秘:对象创建的详细流程、内存分配机制解析以及线程安全保障策略

文章目录 1. 类加载检查2. 内存分配① 指针碰撞② 空闲列表线程安全问题&#xff1a; 3. 内存空间初始化4. 对象头设置5. 对象初始化 当Java虚拟机遇到一条 new指令时&#xff0c;会执行以下步骤来创建对象&#xff1a; 1. 类加载检查 首先检查new指令的参数是否能在常量池中…...

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter14-DOM

十四、DOM 文档对象模型&#xff08;DOM&#xff0c;Document Object Model&#xff09;是 HTML 和 XML 文档的编程接口。DOM 表示由多层节点构成的文档&#xff0c;通过它开发者可以添加、删除和修改页面的各个部分。脱胎于网景和微软早期的动态 HTML&#xff08;DHTML&#x…...

外汇掉期(FX Swap):全球企业管理外汇风险的关键工具(中英双语)

外汇掉期&#xff08;FX Swap&#xff09;&#xff1a;全球企业管理外汇风险的关键工具 引言 在全球化经济环境下&#xff0c;跨国公司、银行和金融机构经常面临外汇风险&#xff0c;因为它们的业务涉及多种货币。例如&#xff0c;一家中国公司可能需要欧元支付欧洲供应商&am…...

verilog程序设计及SystemVerilog验证

1.Verilog测试程序设计基础 1.1Testbench及其结构 在仿真的时候Testbench用来产生测试激励给待验证设计( Design Under Verification, DUV)&#xff0c;或者称为待测设计(Design UnderTest, DUT) 。 测试程序的一般结构&#xff1a; Testbench是一个测试平台&#xff0c;信号…...

Unity DeepSeek API 聊天接入教程(0基础教学)

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

力扣 乘积最大子数组

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

ABP - 事件总线之分布式事件总线

ABP - 事件总线之分布式事件总线 1. 分布式事件总线的集成1.2 基于 RabbitMQ 的分布式事件总线 2. 分布式事件总线的使用2.1 发布2.2 订阅2.3 事务和异常处理 3. 自己扩展的分布式事件总线实现 事件总线可以实现代码逻辑的解耦&#xff0c;使代码模块之间功能职责更清晰。而分布…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...