首先,在此感谢@casio2009,@amngis以及我的朋友@Humanity2020对我重写贪吃蛇的支持。他们教会了我大量gadget的用法,并给程序的方方面面提了很多宝贵的建议。
Here, I would like to thank casio2009, amngis and my friend Humanity2020 for their support in rewriting Snake.They taught me the usage of a large number of gadgets and gave me a lot of valuable suggestions on every aspects of the program.
在我发布程序以及具体思路前,先在此声明:禁止任何人将本帖中的任何内容传到微信、QQ等社交媒体上,6月微信视频号中的函数绘图教程已是前车之鉴。ROP技术的广泛传播可能会导致991cnx机型被全面禁止在考试中使用,这可能会给上海高考考生们带来困扰。
下面正文开始:重写版的贪吃蛇,主程序长度缩减至672字节,相比旧版缩减44%。模拟器测试已通过,但真机未测试。(也欢迎8u们尝试继续缩短它或是采用新的思路,写出更短的程序)程序链接:https://pan.baidu.com/s/19fzSb2P_wiuIZuk5U5iyLw?pwd=nxu8 提取码: nxu8
该版贪吃蛇由于将蛇身放在E3D4处存储,最多可支持768节蛇身,再长将会污染主程序。蛇的每一节遵照传统,仍为3*3。蛇的速度存在主程序第0x5c~5d处,为小端字节序,数值越小蛇速度越快。重写版贪吃蛇的改变有:
1、鉴于蛇可能覆盖屏幕的一半以上,食物将极有可能生成在蛇身上(作者至今已遇到5次),因此该版贪吃蛇中食物为空心3*3方块,以作区分。
2、每一次死亡之后,蛇在按下任何方向键之前将会保持不动。
3、重写版贪吃蛇使用0x02a84e检测按键,因此修复了原版中按下8/9/AC跳出的漏洞
4、重写版贪吃蛇使用0x0177da生成食物,因此修复了原版中食物可能生成于地图外的漏洞
程序中有许多奇怪的操作(例如render_bitmap判定撞墙),详见程序注释snake.txt。
参考文献:
RH_QDG 991CNX的ROP程序单次分支方法
RH_QDG 991CNX函数08EA4的利用方法
amngis [重发]一个用于计算数据的地址(991CNX VerC/F)
amngis Xyzst循环
casio2009 991CNX/580VNX render_bitmap
casio2009 Random Object on Screen
北冥の鱼_鲲 f吧2024年度总结&991CNX地址CF对照表新版
Here, I would like to thank casio2009, amngis and my friend Humanity2020 for their support in rewriting Snake.They taught me the usage of a large number of gadgets and gave me a lot of valuable suggestions on every aspects of the program.
在我发布程序以及具体思路前,先在此声明:禁止任何人将本帖中的任何内容传到微信、QQ等社交媒体上,6月微信视频号中的函数绘图教程已是前车之鉴。ROP技术的广泛传播可能会导致991cnx机型被全面禁止在考试中使用,这可能会给上海高考考生们带来困扰。
下面正文开始:重写版的贪吃蛇,主程序长度缩减至672字节,相比旧版缩减44%。模拟器测试已通过,但真机未测试。(也欢迎8u们尝试继续缩短它或是采用新的思路,写出更短的程序)程序链接:https://pan.baidu.com/s/19fzSb2P_wiuIZuk5U5iyLw?pwd=nxu8 提取码: nxu8
该版贪吃蛇由于将蛇身放在E3D4处存储,最多可支持768节蛇身,再长将会污染主程序。蛇的每一节遵照传统,仍为3*3。蛇的速度存在主程序第0x5c~5d处,为小端字节序,数值越小蛇速度越快。重写版贪吃蛇的改变有:
1、鉴于蛇可能覆盖屏幕的一半以上,食物将极有可能生成在蛇身上(作者至今已遇到5次),因此该版贪吃蛇中食物为空心3*3方块,以作区分。
2、每一次死亡之后,蛇在按下任何方向键之前将会保持不动。
3、重写版贪吃蛇使用0x02a84e检测按键,因此修复了原版中按下8/9/AC跳出的漏洞
4、重写版贪吃蛇使用0x0177da生成食物,因此修复了原版中食物可能生成于地图外的漏洞
程序中有许多奇怪的操作(例如render_bitmap判定撞墙),详见程序注释snake.txt。
参考文献:
RH_QDG 991CNX的ROP程序单次分支方法
RH_QDG 991CNX函数08EA4的利用方法
amngis [重发]一个用于计算数据的地址(991CNX VerC/F)
amngis Xyzst循环
casio2009 991CNX/580VNX render_bitmap
casio2009 Random Object on Screen
北冥の鱼_鲲 f吧2024年度总结&991CNX地址CF对照表新版















