网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月24日
漏签
0
天
fx-es(ms)吧
关注:
16,703
贴子:
305,178
看贴
图片
吧主推荐
视频
游戏
1
2
下一页
尾页
22
回复贴,共
2
页
,跳到
页
确定
<<返回fx-es(ms)吧
>0< 加载中...
一种可能的cwii通用rop方法
只看楼主
收藏
回复
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
注:本贴所有数据均来自模拟器rom,不确定在真机上的可行性
以下以EY-031A为例
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
方法:在an后间隔特定的字节数后输入rop字符串
一般为12个字节(分别为xr4,qr8),但在部分机型上可能不同
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
cwi理论上也可行,不过在cwi计算过程中屏幕无法正常绘制,需手动更改相应的sfr;cwii计算过程则以转圈代替,因此可以完成屏幕绘制
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
原理和an更改栈指针的基本原理相关.在正常输入an并按等号时,可以观察到计算器类似重启的行为,若先在0x000000处设置断点,则在按等号后可发现断点被触发
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
众所周知,在按等号后计算器会将输入区的内容复制到两个区域,在cwi中为0xd248和0xd522,在cwii中则为0x9330和0x9588.前一个区域为重做缓冲区,后一个则似乎是卡西欧用来解析输入内容的区域
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
以EY-031A为例,在按下等号后,计算器会调用0x017cf8函数处理输入内容,随后在0x017d16处将er14设为0x9588,并遍历0x9588区域,将er14递增,直至输入内容的末端。
假设输入内容为fd 20,则在遇到该字符后er14变为0x958a.
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
随后根据目前的字符,计算器会从rom window中的数表取出处理该字符的函数地址,并通过0x017d40处的bl er4跳转。
对于fd20,计算器会跳转到0x017ab8.在此处计算器会再次判断当前字符,并从另一个数表中取出跳转地址,通过0x017af6处的bl er2跳转。
对于fd20,计算器总会取最后一个地址,且该地址在不同的机型中均一致,即跳转至0x015402.
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
而该地址不同于其他地址,对应的并不是某个特定函数,而是某个函数的中间.在EY-005A中则是一个4字节指令的中间,计算器恰好将此指令识别为and r14,r9,从而改变了er14,使在该机型中(可能仅限于模拟器rom)只需间隔4个字节便可输入rop string.
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
虽然在不同的机型中该地址对应的函数相对位置不尽相同,但在该地址后不远处总会有一个不返回跳转指令,而在此后计算器又会执行多次不返回跳转(对于EY-031A,在仅输入fd20的情况下跳转路径为0x0155cc-0x013e3c).以EY-031A为例,无论中间路径如何,最后总会跳转到0x013e3c.而此处的指令为mov sp,er14;pop xr4;pop qr8;pop pc,看起来是函数0x013d68的结尾。在一般情况下此处的mov sp,er14对应函数开头处的mov er14,sp,即常见的对sp的备份操作,但此时计算器是从输入内容处理函数直接跳转到该函数的结尾,而er14则是(对于多数机型,前述EY-005A不同)0x958a。因此计算器会将sp设置为0x958a,并执行pop xr4,pop qr8,pop pc的操作。
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
而在一般情况下,我们在输入an相关的内容时一般以an结尾,因此fd20后均为00,pop pc指令会将pc设为0.对于U8处理器,rom的前4个字节分别为初始栈顶指针以及程序初始化入口,而卡西欧将初始栈顶指针设为0xf000,正好与后面的初始化入口构成了一个不返回跳转指令,因此将pc设为0时,cpu会将此处的指令识别为“跳转到程序入口”,与按下开机键的操作基本相同,唯一不同的地方是按开机键执行初始化时计算器会将sp设为0xf000,而此时则是以当前的sp进行初始化。上述即为an造成栈顶指针偏移的基本原理。
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
而由于cwii的栈显著大于cwi,因此在执行an操作后,栈一般会覆盖输入缓冲区,重做缓冲区以及设置数据区的全部内容。因此cwii在执行an操作后会变得极不稳定,且经常出现设置数据异常。但与cwi不同,cwii的变量存储区在0x9588区域之后,因此在执行an操作后不会出现异常变量。
贴吧用户_QQR3MM4
991EX
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
因此,若在输入an后间隔12个字节并输入rop字符串,理论上则可在cwii上执行rop。以EY-031A为例(注意:模拟器rom与真机rom不同,模拟器rom中的地址大概率不适用于真机),输入an000000000000Ayd>ch
并按等号即可进入自检。
(若不修改内存也可通过进入68模式刷取an和A,在模拟器上经测试有效)
Wind0721
TI-84+
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
kami
Wind0721
TI-84+
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
999CNCW测试有效
贴吧用户_5X2MVNC
5800P
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
yd-ch怎么刷
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示