网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月17日漏签0天
fx-es(ms)吧 关注:17,457贴子:312,502
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 11回复贴,共1页
<<返回fx-es(ms)吧
>0< 加载中...

[991cnx]ROP贪吃蛇

  • 取消只看楼主
  • 收藏

  • 回复
  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
视频来自:百度贴吧


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
https://pan.baidu.com/s/10iArKnSd4AItqk1rQRe6tg?pwd=wu5c


2025-08-17 14:12:58
广告
不感兴趣
开通SVIP免广告
  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
已知的问题:
1.长按按键会造成卡死,按AC可解除
2."随机数"通过在内存中取数生成,部分情况下点位可能生成在屏幕外或连续在相同位置生成
3.蛇的数据存储在0xeab0+,每个3x3方块需要6字节空间(实际上是每行需要一个坐标),0xf000以上的内存可能是不安全的,因此蛇有长度限制,过长可能会卡死(未测试)


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
主程序长1208字节(snake1.5),需要存储在0xe9e0-0xee98处
运行前需在0xeea0处初始化数据:
[随机数种子] AE EE A4 EE 03 00 06 00 B6 EE BC EE 00 00 09 09 09 0A 09 0B 0C 09 0C 0A 0C 0B 0C 09 0C 0A 0C 0B C6 D9(随机数种子实际上是从内存中取数的地址)
并将data_1.5内容存储在0xd9f0处
随后输入启动程序(launcher)并调整为小字体运行


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我使用这个程序写入内存


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
方法:
1.将上述程序使用0x00d070(strcpy)分次复制到0xd820内存处
2.运行程序:
E2 30 31 30 C2 D8 20 D8 30 30 A2 D5 F0 86 30 30 30 01 38 1D 32 30
创建程序副本
3.运行
E2 30 31 30 30 30 [地址-0x18] 30 30 A2 D5 6C C0 30 30 C0 D9 28 8F 30 30 30 30 30 30 38 1D 32 30
初始化写入地址
4.随后可以直接输入相应的数字和16进制字符写入内存,每次可写入24字节(124an),在要写入的数据后添加
E2 30 31 30 30 30 30 30 30 30 C0 D8 38 1D 32 30(此处仍为一级字符表对应字符)
后运行即可
使用该方法可以只使用lbf转换器注入任意数据(包括00),但若数据以0开头则会导致移码,此时需重设地址至开头不为0处再写入数据
若使用模拟器则直接将程序复制到内存中即可


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序使用的内存空间如下:
0xe9e0-0xed31主循环体存储区
0xed34-0xee7d绘制函数存储区
0xee80-0xee97重置函数存储区
0xd534-0xd9ec运行时程序存储区
0xd9f0,0xd9f4,0xda30,0xda34分别为左,上,下,右键按下后访问的数据
0xda00初始化数据,在判定死亡后重置时会覆盖0xeea2处的数据
0xeea0随机数种子
0xeea2绘制函数循环时所使用的地址,对应本轮循环所读取的队列数据
0xeea4按键后将数据复制到这里,前两位即为此处的地址,后两位为方向,即本次循环中要为坐标加上的数值
0xeea8与当前蛇的长度相关
0xeeaa,0xeeac分别为蛇的头部以及目标点位的坐标数据在内存中的地址
0xeeb0+为蛇的坐标数组,自尾部到头部排列,随后为目标点位的坐标以及绘制结束时的跳转地址(0xd9c6)


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
按键检测所使用的函数为0x009eb2,该函数实际上在自检时被调用
其同时具有时滞功能,即循环调用0x00916a,er4内为循环数
由于为自检设计,按下AC/8/9键可直接跳出循环,但在模拟器上测试时按8键会触发一个ecsr1=E的interrupt,因此实际运行时应避免按8


2025-08-17 14:06:58
广告
不感兴趣
开通SVIP免广告
  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
屏幕绘制使用的函数为0x008372,该函数实际上为0x0082f6字符绘制函数的一部分.
在0x00836a处该函数调用了0x0085b8,将小字体字模加载到栈内,随后在er12内存入其地址.小字体字模每行由一个字节存储,该字节的二进制形式每个比特代表一个像素.
若选择0x008372为函数入点,则可令其绘制我们自己的字模.此时需满足:
er6:绘制的坐标
r4:字符宽度(此程序中为3像素)
er12:字模地址(此程序中字模为0xE0)
[FP-1]:屏幕缓冲区每行字节数(即0x18)
[FP-4]:屏幕缓冲区结尾地址(0xE3D3,用于判断所绘制的内容是否已超出屏幕外,实际足够大即可)
[FP-6]:此处的两个字节分别为字符宽度与8-字符宽度,此程序中为0305
[FP-10]:此处的两个字节存储字模行数信息,每轮循环后程序会判断[FP-9]是否大于[FP-10],并将[FP-9]加1.但若程序判断已经完成绘制(二者相等),则会强制在最下方绘制一行空白.因此本程序中调用函数时使[FP-9]大于[FP-10],但此时每次调用只能绘制一行像素.
进入函数后,其调用0x008750将坐标转换为屏幕缓冲区内的对应地址.地址存储在er10及[er2]内,r0存储该坐标在此地址内偏移的比特数.
在0x008390处该函数会判断字体设置,因此在启动程序前应先设置为小字体模式.


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
此程序中使用的条件判断有:
0x0262b0:
比较er0与er2,若er0小于等于er2则将er2赋值给er0.
rt返回.
本程序中用于便捷判断绘制函数的跳出,将er0设置为正常跳转地址,er2为从数组中取出的数据,调用后跳转到er0的地址.因此需在数组的结尾处写入跳出函数时的地址(0xd9c6),读取到此处时结束绘制
0x0193ae:
比较er2与er4,相等则r0=1,否则r0=0.
注意此函数会重设所有寄存器及lr.
0x00b59a:
比较er0与er2,若er0>er2则r0=0,否则r0=1.
rt返回.
上述的两个函数调用后可在er4内放入较小地址,r2内放入两地址之差,随后调用0x014b12在er0内生成跳转地址.


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
写入内存的程序主要依赖计算器存储变量的函数(0x017364),正常运行情况下该函数会将输入的内容转换为计算器的数据存储格式并放在栈内.其在0x0173c4处调用0x0160d2,将R0内的数据取二进制后四位(如0x3A→0x0A)存入[er12+r10+0x28]内(r10标志第几字节,er12不变),随后调用0x015ece取出[er14]内的数据并判断其内容,进行循环.循环结束后生成指数位并调用0x016d7c将数据拼合.
为避免数据标志,指数等污染,我们首先从0x0173c4进入函数,将输入区数据转换后存入内存(实际是从0xd248重做缓冲区取数).注意该函数跳出条件较多,r10=15,r9≥100(这些寄存器每轮加1)或读取到双字节字符等均会导致跳出.同时该函数返回时会pop xr8
将数据初步转换后,调用0x016d8a可将[ea]处的数据两两拼合,并存入[er12].r10规定了数据的总字节数.注意该函数为rt返回,调用第一个函数后应重设lr


  • 贴吧用户_QQR3MM4
  • 991EX
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
注意若需在运行短rop程序后返回输入模式,在124an情况下可将sp设为0xd5a4并pop pc(我一般使用0x021d38,该函数将sp设为er6并pop er8,故er6应设为0xd5a2).此时rop程序应控制在80字节内.
若非124an则该地址跟随栈偏移字节数调整.


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 11回复贴,共1页
<<返回fx-es(ms)吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示