教程内容请求
Opened this issue · 35 comments
教程内容请求
大家对教程内容有什么补充的要求,可以补充在这个Issue里
分为两个部分:
- 缺失知识点/模块(如缺失Σ溢出的方法)
- 缺失对内容的解释(看不懂)
- 排版建议
Contributors直接更新下面我的评论2,3,4即可。(请使用任务列表)
缺失知识点/模块
- 缺失Σ溢出的方法
- 缺失按键检测原理(KI KO那个)
- 缺失刷各种数量的字符的专题
- 指出地址的储存、打出与使用方法(小端序)
- https://github.com/Physics365/991CN-X-CW-Decompilation/blob/main/ROP/复杂ROP程序/fx991cnx/内存写入/quickcpy_0xd820.bin 处的文件在lfs变基时丢失
- 卡西欧991cnx的许多内置的未列出的字符的功能(比如81的(/@是平方和),可以单独列个表的说。不需要长的ropchain也能用说实在有些时候很方便的说,比如Intg(,可以直接算[x]的说
缺失对内容的解释
-
991CN X (VerC) 异常教程/第三章 变量与历史记录 中an下刷字符的方法不全的说
其实有相当多的方法(大佬们应该更熟悉的说),各有其便利性,教程里给出的这个有点繁复,像
F.__ __ __ __ __ __ __ x10 __ xin->cm: x: xin->cm: @=1.0000__ __ __ __ __ x10 __
这个和
xin->cm: x: xin->cm: @=10000__ [__ __ __] 23
这个都满方便而且常用的
(也许可以单独列一个附录的说) -
reference from #29 对于利用变量的copy方法解释有一定缺失,同时(可能)有错误
-
优化部分过于晦涩的表述(详见讨论页)
缺失对内容的解释
reference from #29 对于利用变量的copy方法解释有一定缺失,同时(可能)有错误
缺失对内容的解释
991CN X (VerC) 异常教程/第三章 变量与历史记录 中an下刷字符的方法不全的说
其实有相当多的方法(大佬们应该更熟悉的说),各有其便利性,教程里给出的这个有点繁复,像
F.__ __ __ __ __ __ __ x10 __
xin->cm:
x:
xin->cm:
@=1.0000__ __ __ __ __ x10 __
这个和
xin->cm:
x:
xin->cm:
@=10000__ [__ __ __] 23
这个都满方便而且常用的
(也许可以单独列一个附录的说)
觉得现有建议不妥或不予考虑的话可以像这样划掉。
觉得教程有要补充的就直接写上去好了,其实没必要开issue
觉得教程有要补充的就直接写上去好了,其实没必要开issue
实际上是因为我也不太会!的说!
现在教程里缺一大块rop的内容,由于我自己也不会,所以没法写,@Xyzstk 能否帮助一下
大佬已经很厉害了(那个内存修改器就很好的说
觉得教程有要补充的就直接写上去好了,其实没必要开issue
这地方倒是更像一个「待办事项清单」😂
@qiufuyu123 教程需要补一些例子,你看下能不能直接把知乎文章弄过来(我没账号看不了知乎)
ok,就是rop那一部分是吧?但是知乎没法直接导出markdown,得等我复制粘贴一遍 🥲
不过我找到自动导出工具了
觉得教程有要补充的就直接写上去好了,其实没必要开issue
这地方倒是更像一个「待办事项清单」😂
是不是可以放到github的project里。。。不过classic的project我没找到就是了
缺失知识点/模块
* [ ] 缺失Σ溢出的方法 * [ ] 缺失按键检测原理(KI KO那个) * [ ] 缺失刷各种数量的字符的专题 * [ ] 指出地址的储存、打出与使用方法(小端序) * [x] [https://github.com/Physics365/991CN-X-CW-Decompilation/blob/main/ROP/复杂ROP程序/fx991cnx/内存写入/quickcpy_0xd820.bin](https://github.com/Physics365/991CN-X-CW-Decompilation/blob/main/ROP/%E5%A4%8D%E6%9D%82ROP%E7%A8%8B%E5%BA%8F/fx991cnx/%E5%86%85%E5%AD%98%E5%86%99%E5%85%A5/quickcpy_0xd820.bin) 处的文件在lfs变基时丢失 * [ ] 卡西欧991cnx的许多内置的未列出的字符的功能(比如81的(/@是平方和),可以单独列个表的说。不需要长的ropchain也能用说实在有些时候很方便的说,比如Intg(,可以直接算[x]的说
对于按键检测的话,可以去搜搜矩阵键盘扫描
,rom也dump了,也有ghidra,可以看看源代码?
刷字符真的没必要,quickcpy/4d变量+字符表搞定
地址只是采用了小端序表示而已,你只要点出是和字节自然书写顺序相反就行了
比如0x11223344
只要点出其字节表示为:
44 33 22 11
就行了
没必要列出991cnx的未使用字符功能,使用这些未使用字符的功能也麻烦很多(CWII就更不要说了),也不会有多出Rom能力之外的功能(比如Gamma),并且根据Rom不同可能性质也不同
不过Intg(这样的应该是卡西欧程序员懒得删了,因为这种代码可能被程序的其他地方使用(比如Fix数位显示代码),删除了不会减少多少rom大小
像大Π这样的就彻底被移除了,不过还是可以用e sigma ln这样的方法来算,其实影响不大
题外话,楼主是最近在学日语ですか
"的说"这个口癖影响我理解语句了
另外,建议移除无意义的乱码字符,这些乱码字符会影响CWII的学习,因为CWII采用了新的一二级转换表,没有之前的bug了
不过乱码字符的特性确实可以很方便的看出来字符的二进制表示...
另外试试将一二级字符表做成纯文字版,加上字体?(这个是可行的,一级字符显示前会被转换为二级字符)
此外,一级字符和二级字符,多字节双字节字符 控制字符之类的字符的命名问题应该需要探讨一下(毕竟这些其实是历史遗留),这些很容易误导新手理解
我的建议是:
一级字符改为: 算术字符
二级字符改为: 显示字符
双字节字符改为: 双字节(算术)字符
控制字符改为: ROP函数(gadget)
这个可以讨论一下
缺失知识点/模块
* [ ] 缺失Σ溢出的方法 * [ ] 缺失按键检测原理(KI KO那个) * [ ] 缺失刷各种数量的字符的专题 * [ ] 指出地址的储存、打出与使用方法(小端序) * [x] [https://github.com/Physics365/991CN-X-CW-Decompilation/blob/main/ROP/复杂ROP程序/fx991cnx/内存写入/quickcpy_0xd820.bin](https://github.com/Physics365/991CN-X-CW-Decompilation/blob/main/ROP/%E5%A4%8D%E6%9D%82ROP%E7%A8%8B%E5%BA%8F/fx991cnx/%E5%86%85%E5%AD%98%E5%86%99%E5%85%A5/quickcpy_0xd820.bin) 处的文件在lfs变基时丢失 * [ ] 卡西欧991cnx的许多内置的未列出的字符的功能(比如81的(/@是平方和),可以单独列个表的说。不需要长的ropchain也能用说实在有些时候很方便的说,比如Intg(,可以直接算[x]的说
对于按键检测的话,可以去搜搜
矩阵键盘扫描
,rom也dump了,也有ghidra,可以看看源代码?刷字符真的没必要,quickcpy/4d变量+字符表搞定
刷字符还是满有用的说,放在附录也许会比较好的说
地址只是采用了小端序表示而已,你只要点出是和字节自然书写顺序相反就行了 比如
0x11223344
只要点出其字节表示为:44 33 22 11
就行了
这个还是提一下比较好的说
没必要列出991cnx的未使用字符功能,使用这些未使用字符的功能也麻烦很多(CWII就更不要说了),也不会有多出Rom能力之外的功能(比如Gamma),并且根据Rom不同可能性质也不同 不过Intg(这样的应该是卡西欧程序员懒得删了,因为这种代码可能被程序的其他地方使用(比如Fix数位显示代码),删除了不会减少多少rom大小 像大Π这样的就彻底被移除了,不过还是可以用e sigma ln这样的方法来算,其实影响不大
这些其实有个别的(比如Intg,在算下取整的累加时很有用)还是满好用的说,弄一下还是有意义的也许,而且也可以补充一下字符表指出那些可以用lbf就能刷,这样对于比较新手的人来说也方便,而且能直接一点看到教程的学习的成效的说
题外话,楼主是最近在学日语ですか(desuka) "的说"这个口癖影响我理解语句了
呐,"的说"是我的个人口癖的说,如果要写教程的话不会带到教程里,但是平常回复的话也没办法的说
另外,建议移除无意义的乱码字符,这些乱码字符会影响CWII的学习,因为CWII采用了新的一二级转换表,没有之前的bug了 不过乱码字符的特性确实可以很方便的看出来字符的二进制表示... 另外试试将一二级字符表做成纯文字版,加上字体?(这个是可行的,一级字符显示前会被转换为二级字符) 此外,一级字符和二级字符,多字节双字节字符 控制字符之类的字符的命名问题应该需要探讨一下(毕竟这些其实是历史遗留),这些很容易误导新手理解
无意义的字符的话就指明无意义也许可以的说
我的建议是: 一级字符改为: 算术字符 二级字符改为: 显示字符 双字节字符改为: 双字节(算术)字符 控制字符改为: ROP函数(gadget)
这个可以讨论一下
主要是几个字符之间有重叠(比如rop与一二级字符),按分类的话会很难分的说,所以还是按十六进制编号顺序排列会比较好的说
不建议把控制字符放在字符表里,因为控制字符的本质是函数地址,应该归到rop一类里去
字符表就分1,2级字符就够了
不建议把控制字符放在字符表里,因为控制字符的本质是函数地址,应该归到rop一类里去 字符表就分1,2级字符就够了
不,我没提控制字符是字符,我的意思是,1,2级字符的说法有迷惑性,应该考虑改名,如果是针对新手的话
1,2级字符是早期研究拼字遗留的,这个命名在通常语境下不具有任何意义
没必要列出991cnx的未使用字符功能,使用这些未使用字符的功能也麻烦很多(CWII就更不要说了),也不会有多出Rom能力之外的功能(比如Gamma),并且根据Rom不同可能性质也不同 不过Intg(这样的应该是卡西欧程序员懒得删了,因为这种代码可能被程序的其他地方使用(比如Fix数位显示代码),删除了不会减少多少rom大小 像大Π这样的就彻底被移除了,不过还是可以用e sigma ln这样的方法来算,其实影响不大
这些其实有个别的(比如Intg,在算下取整的累加时很有用)还是满好用的说,弄一下还是有意义的也许,而且也可以补充一下字符表指出那些可以用lbf就能刷,这样对于比较新手的人来说也方便,而且能直接一点看到教程的学习的成效的说
@Physics365
我推测,异常字符的作用效果是可能随着机型甚至版本改变的(卡西欧也没必要保证异常字符能工作),这些和rom的函数和数据偏移和内容不同有关,甚至对于cwi,乱码也是会因为rom变化而改变的
不过,关于异常字符的特性的话可以考虑用ui自动化对着模拟器去刷?我自己之前就用模拟器+ui自动化刷了个字符表
毕竟字符用法也就那几种,ocr一下错误类型或者直接读取stacktrace和寄存器判断就行了
不建议把控制字符放在字符表里,因为控制字符的本质是函数地址,应该归到rop一类里去 字符表就分1,2级字符就够了
不,我没提控制字符是字符,我的意思是,1,2级字符的说法有迷惑性,应该考虑改名,如果是针对新手的话
1,2级字符是早期研究拼字遗留的,这个命名在通常语境下不具有任何意义
是否可以改成单字节/双字节字符表的说¿
没必要列出991cnx的未使用字符功能,使用这些未使用字符的功能也麻烦很多(CWII就更不要说了),也不会有多出Rom能力之外的功能(比如Gamma),并且根据Rom不同可能性质也不同 不过Intg(这样的应该是卡西欧程序员懒得删了,因为这种代码可能被程序的其他地方使用(比如Fix数位显示代码),删除了不会减少多少rom大小 像大Π这样的就彻底被移除了,不过还是可以用e sigma ln这样的方法来算,其实影响不大
这些其实有个别的(比如Intg,在算下取整的累加时很有用)还是满好用的说,弄一下还是有意义的也许,而且也可以补充一下字符表指出那些可以用lbf就能刷,这样对于比较新手的人来说也方便,而且能直接一点看到教程的学习的成效的说
@Physics365 我推测,异常字符的作用效果是可能随着机型甚至版本改变的(卡西欧也没必要保证异常字符能工作),这些和rom的函数和数据偏移和内容不同有关,甚至对于cwi,乱码也是会因为rom变化而改变的 不过,关于异常字符的特性的话可以考虑用ui自动化对着模拟器去刷?我自己之前就用模拟器+ui自动化刷了个字符表 毕竟字符用法也就那几种,ocr一下错误类型或者直接读取stacktrace和寄存器判断就行了
至少Intg等等在991cnx的verc和verf里都能用,所以仅对于cnx来讲还是能用的,而且最主要是对于很多新手来说,如果没办法有非常显著而且易得的成果就会有点吸引力缺失,而这些字符个别也的确很有用。其实更重要的是指出哪些单字节字符可以直接用lbf去刷,这个能省不少事而且还满常用的
如果能自动判断的话就更方便了的说
不建议把控制字符放在字符表里,因为控制字符的本质是函数地址,应该归到rop一类里去 字符表就分1,2级字符就够了
不,我没提控制字符是字符,我的意思是,1,2级字符的说法有迷惑性,应该考虑改名,如果是针对新手的话
1,2级字符是早期研究拼字遗留的,这个命名在通常语境下不具有任何意义是否可以改成单字节/双字节字符表的说¿
你这就是没有怎么分清单字节双字节 一级二级了
单字节双字节和内容有关的,大部分函数都会对其进行处理,是字符本身的特性
一级二级则是因为被不同的函数解释而导致的,在编辑公式的时候,就是一级字符,显示到屏幕上面的,就是二级字符,这是和被什么函数使用相关的
不建议把控制字符放在字符表里,因为控制字符的本质是函数地址,应该归到rop一类里去 字符表就分1,2级字符就够了
不,我没提控制字符是字符,我的意思是,1,2级字符的说法有迷惑性,应该考虑改名,如果是针对新手的话
1,2级字符是早期研究拼字遗留的,这个命名在通常语境下不具有任何意义是否可以改成单字节/双字节字符表的说¿
你这就是没有怎么分清单字节双字节 一级二级了
单字节双字节和内容有关的,大部分函数都会对其进行处理,是字符本身的特性
一级二级则是因为被不同的函数解释而导致的,在编辑公式的时候,就是一级字符,显示到屏幕上面的,就是二级字符,这是和被什么函数使用相关的
哦哦,这个啊,那是我弄错了,那么原来的一级字符表就叫单字节字符表,然后二级作为映射或者拼字字符表行不行的说?
不建议把控制字符放在字符表里,因为控制字符的本质是函数地址,应该归到rop一类里去 字符表就分1,2级字符就够了
不,我没提控制字符是字符,我的意思是,1,2级字符的说法有迷惑性,应该考虑改名,如果是针对新手的话
1,2级字符是早期研究拼字遗留的,这个命名在通常语境下不具有任何意义是否可以改成单字节/双字节字符表的说¿
@fish4terrisa-MSDSM
你这就是没有怎么分清单字节双字节 一级二级了
单字节双字节和内容有关的,大部分函数都会对其进行处理,是字符本身的特性
一级二级则是因为被不同的函数解释而导致的,在编辑公式的时候,就是一级字符,显示到屏幕上面的,就是二级字符,这是和被什么函数使用相关的哦哦,这个啊,那是我弄错了,那么原来的一级字符表就叫单字节字符表,然后二级作为映射或者拼字字符表行不行的说?
不是这样的,公式中的字符也有双字节的,两者是互不干扰的
比如单位转换就都是FE开头的双字节字符,但是它不属于二级字符,而是一级字符
@Physics365
教程内容不考虑在内存区域添加SFR的内容吗?
data段0xf000往上就是sfr区域了,包含屏幕帧缓冲区,对比度,屏幕控制,待机,定时器等特殊功能的控制
btw: sfr==special function register 特殊功能寄存器
同意
不建议把控制字符放在字符表里,因为控制字符的本质是函数地址,应该归到rop一类里去 字符表就分1,2级字符就够了
不,我没提控制字符是字符,我的意思是,1,2级字符的说法有迷惑性,应该考虑改名,如果是针对新手的话
1,2级字符是早期研究拼字遗留的,这个命名在通常语境下不具有任何意义是否可以改成单字节/双字节字符表的说¿
@fish4terrisa-MSDSM
你这就是没有怎么分清单字节双字节 一级二级了
单字节双字节和内容有关的,大部分函数都会对其进行处理,是字符本身的特性
一级二级则是因为被不同的函数解释而导致的,在编辑公式的时候,就是一级字符,显示到屏幕上面的,就是二级字符,这是和被什么函数使用相关的哦哦,这个啊,那是我弄错了,那么原来的一级字符表就叫单字节字符表,然后二级作为映射或者拼字字符表行不行的说?
不是这样的,公式中的字符也有双字节的,两者是互不干扰的
比如单位转换就都是FE开头的双字节字符,但是它不属于二级字符,而是一级字符
的确双字节字符是一级字符,但二级字符(也就是拼字的时候显示时字节对应的字符)表里应该都是单字节对应一个字符的吧,我的意思是:
原一级字符表 =>
单字节字符表
双字节字符表(FAXX,FBXX...)
原二级字符表 =>
映射(拼字)字符表
这样行不行
可以
但二级字符(也就是拼字的时候显示时字节对应的字符)表里应该都是单字节对应一个字符的吧
emmm...那就分成
原一级字符表 => 单字节字符表 双字节字符表(FAXX,FBXX...) 原二级字符表 => 映射(拼字)字符表 映射(拼字)汉字字符表
如何
在非中文机型上,双字节的二级字符不一定是中文,中文和日语共用字节开头(0xF1 0xF2),0xF3 0xF4都是其他语言机型的字节开头,还有0xF0里面在Cwii中存储了一些符号,这些也不属于汉字
由于拼字字符不需要用到双字节字符的特性(因为也没办法编辑)
所以我建议:
将二级字符统一改为映射(拼字)字符
特别标注其为双字节是无意义的
但二级字符(也就是拼字的时候显示时字节对应的字符)表里应该都是单字节对应一个字符的吧
emmm...那就分成
原一级字符表 => 单字节字符表 双字节字符表(FAXX,FBXX...) 原二级字符表 => 映射(拼字)字符表 映射(拼字)汉字字符表
如何
在非中文机型上,双字节的二级字符不一定是中文,中文和日语共用字节开头(0xF1 0xF2),0xF3 0xF4都是其他语言机型的字节开头,还有0xF0里面在Cwii中存储了一些符号,这些也不属于汉字
由于拼字字符不需要用到双字节字符的特性(因为也没办法编辑)
所以我建议:
将二级字符统一改为映射(拼字)字符
特别标注其为双字节是无意义的
好的