fx-991 CNX verC quickcpy++ 教程
微微星尘_Stardust
编辑于 2024年05月15日 15:09
收录于文集
共1篇

参考链接:

https://tieba.baidu.com/p/8996184424 (程序设计)

网页链接​ (自由拼图教程)

https://github.com/Physics365/991CN-X-CW-Decompilation (ROP相关资料查询)


前言

(由于本人刚接触卡西欧计算器ROP没几天,如果存在错误,敬请各位大佬指正)

quickcpy++ 是一种更简便的写入内存的程序,相比于自由拼图教程​中的 quickcpy,其不需要使用lbf转换器即可输入 16 进制中的 A~F,从而加速了复杂ROP链的注入速度(本教程中注入的地址为E9E0,跟自由拼图教程​ 中注入的地址相同)

另外,这里实现的是贴吧中的原始的程序(之后修改的程序我一开始没试验成功,虽然找到了原因,但是懒得再次做按键设计了)

在阅读此笔记前,请先阅读屿の风​大佬的自由拼图教程​,部分相关内容并不会再次说明

(由于之前打了差不多2000字被B站自动保存吞了,摆了,有机会再出一个更详细的教程,并补充说明自由拼图教程​中曾经卡住我的一些内容)

教程

1.进入124an模式

2.使用 strcpy 注入 quickcpy++ 程序

注入所需要的字符转换器输入如下(如无特殊说明,图片中的A~F均为通过lbf刷取的字符,而不是变量):

其中第一列为 12345678x: 后接的内容,第二列为需要用 lbf 转换器刷的内容(第一个@为748,第二个@为749)

输入完后 calc, =, =, =, 上,删去xnor后的三个空格,并根据下面表格进一步补充完整成下面形式

(48数字)k010(蓝色)⌟ ▸t 00xnor² cosh⁻¹()008@20003:(绿色)

图片中黄色字体内容均为对应的地址(小端序)和efRanI对应的16进制内容,输入中不需要理会,绿色下划线的为通过字符转换器刷出的字符

比如第一行,其应该会显示成如下形式:

(如果空格中有其他字符的“残影”是正常的)

=,AC,注入下一行,直至所有行均被注入

(这里和自由拼图教程​ 中注入quickcpy的方法相同,不理解的可以再次看一下这篇文章)

3.启动 quickcpy++

由于需要刷取的不可刷字符较多,这里对应下表分将对应内容存入变量C D E

然后刷取三个@,并补成下面形式(其中左边的@为748,中间为749,右边为714,C,D,E均为变量)

12345678x:@=C:@=D:@=E

calc, =, =, = ,=, 上(4次等于),并分别删去@和▸t 后的三个空格,补充至下图(前面仍要填充48字符)

填充完后计算器应类似下图所示

按等于,此时会出现“语法错误”的警告,AC,此时会进入“基数模式”,此时已进入quickcpy++,建议切换成小字体方便输入

4.使用 quickcpy++

这里可以直接输入对应的要注入的程序的16进制代码(A~F可直接通过对应按键输入,跟基数模式相同),填满小字体三行,类似图中所示(以自由绘图为例)

按 菜单, 3,出现下图

即代表前3行已经成功注入内存,即可开始输入新3行的内容,重复此操作,直至全部代码输入完成(程序最后若不满3行需要用0填满)

此时用 shift 9 1 = AC(复位设置数据)退出 quickcpy++,此时进入 272an模式(不太清楚),可以关机后开机再重新进入124an后进行之后的操作(如绘图程序初始化等)

(注:此时程序已经写入内存,正常关机不会清除)

更改注入地址

假设需要注入其他程序,而需要修改所注入的地址(在前文中,注入地址是自由绘图程序所需的 E9E0)也是很简单的。比如,若需要注入的地址为 E9E2(随便假设的),首先分成前后两部分(以不同颜色区分):E9E2,然后交换前后两部分:E2E9,之后将交换后的地址填入选中部分

将此行换成(所需lbf刷取字符也可能有所不同):

@=10.000C8D8D130A2:@=11D15E2E90E23

在前文的教程中由于 E0 是不需要通过字符转换器刷取而可以直接输入,因此为了刷取简便,只刷取了 E9,而没有刷取 E0

在退出 quickcpy++ 时,貌似程序会将最后输入的3行再次在后面填充,也许会使得部分程序产生问题(至少对于自由绘图程序经过测试没有问题)。


放一下用quickcpy++注入的自由绘图程序所绘制的图形


2024-5-7 00时:第一次发布

2024-5-8 00时:添加头图

2024-5-15 09时:添加修改地址说明和备注