
参考链接:
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站自动保存吞了,摆了,有机会再出一个更详细的教程,并补充说明自由拼图教程中曾经卡住我的一些内容)
注入所需要的字符转换器输入如下(如无特殊说明,图片中的A~F均为通过lbf刷取的字符,而不是变量):

其中第一列为 12345678x: 后接的内容,第二列为需要用 lbf 转换器刷的内容(第一个@为748,第二个@为749)
输入完后 calc, =, =, =, 上,删去xnor后的三个空格,并根据下面表格进一步补充完整成下面形式
(48数字)k010(蓝色)⌟ ▸t 00xnor² cosh⁻¹()008@20003:(绿色)

图片中黄色字体内容均为对应的地址(小端序)和efRanI对应的16进制内容,输入中不需要理会,绿色下划线的为通过字符转换器刷出的字符
比如第一行,其应该会显示成如下形式:

(如果空格中有其他字符的“残影”是正常的)
=,AC,注入下一行,直至所有行均被注入
(这里和自由拼图教程 中注入quickcpy的方法相同,不理解的可以再次看一下这篇文章)
由于需要刷取的不可刷字符较多,这里对应下表分将对应内容存入变量C D E

然后刷取三个@,并补成下面形式(其中左边的@为748,中间为749,右边为714,C,D,E均为变量)
12345678x:@=C:@=D:@=E
calc, =, =, = ,=, 上(4次等于),并分别删去@和▸t 后的三个空格,补充至下图(前面仍要填充48字符)

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

按等于,此时会出现“语法错误”的警告,AC,此时会进入“基数模式”,此时已进入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时:添加修改地址说明和备注