https://github.com/duangsuse/MonkeyVM
炒冷饭,可能是目前为止我很少的 Rust 程序了,虽然还是两年前的...
说实在话,我觉得它不怎么样,因为那时候我真的什么都不懂,当时我也想根据一位大佬(coding 上某位写过目标为猴语言编译器的大佬,不过他没写 parser,而是直接用了 ECMAScript 语法解析库)的建议,把这玩意弄成 native 编译器(可是那时候我连内存是什么都不知道,甚至 malloc 是啥也不知道... 更别提 alloca、memmove 什么的了)
很可惜我当时是看不懂 x86 汇编的,更不理解 GNU AS 汇编器的功能,尝试自然是失败了
可见会 Rust 也未必是大佬啊!
所谓的越复杂越容易堆砌,大概就是这样,这个程序当时我堆砌了大概一个星期,9k 行代码,最后连二进制序列化的操作都有了...
可惜它到底有多么复杂的算法?我不清楚,但当时我的确是很菜。
炒冷饭,可能是目前为止我很少的 Rust 程序了,虽然还是两年前的...
说实在话,我觉得它不怎么样,因为那时候我真的什么都不懂,当时我也想根据一位大佬(coding 上某位写过目标为猴语言编译器的大佬,不过他没写 parser,而是直接用了 ECMAScript 语法解析库)的建议,把这玩意弄成 native 编译器(可是那时候我连内存是什么都不知道,甚至 malloc 是啥也不知道... 更别提 alloca、memmove 什么的了)
很可惜我当时是看不懂 x86 汇编的,更不理解 GNU AS 汇编器的功能,尝试自然是失败了
可见会 Rust 也未必是大佬啊!
所谓的越复杂越容易堆砌,大概就是这样,这个程序当时我堆砌了大概一个星期,9k 行代码,最后连二进制序列化的操作都有了...
可惜它到底有多么复杂的算法?我不清楚,但当时我的确是很菜。
GitHub
duangsuse/MonkeyVM
Coding 猴语言虚拟机,可能是很久以前的东西了. Contribute to duangsuse/MonkeyVM development by creating an account on GitHub.
#GitHub 炒冷饭,因为 duangsuse 私人帐号下全是黑历史和完全没有用的 repo,以后 duangsuse 会把有用的代码放
https://github.com/duangsuse-valid-projects
这里,自己帐号下之前的代码会 transfer、不属于自己而属于其他 org 的代码会直接 fork 一份。
https://github.com/duangsuse-valid-projects
这里,自己帐号下之前的代码会 transfer、不属于自己而属于其他 org 的代码会直接 fork 一份。
GitHub
duangsuse's code
duangsuse's valid personal code projects. duangsuse's code has 93 repositories available. Follow their code on GitHub.
Forwarded from duangsuse Throws
https://github.com/duangsuse-valid-projects
导入了 62 个 repo,但是还是感觉自己没底气,大概是因为 OO 抽象写得不如别人多、Android 平台不如别人熟悉
改日我有时间了多写点 Android 应用和封装 SDK 什么的的话会好一些
导入了 62 个 repo,但是还是感觉自己没底气,大概是因为 OO 抽象写得不如别人多、Android 平台不如别人熟悉
改日我有时间了多写点 Android 应用和封装 SDK 什么的的话会好一些
GitHub
duangsuse's code
duangsuse's valid personal code projects. duangsuse's code has 93 repositories available. Follow their code on GitHub.
duangsuse Throws
https://github.com/duangsuse-valid-projects 导入了 62 个 repo,但是还是感觉自己没底气,大概是因为 OO 抽象写得不如别人多、Android 平台不如别人熟悉 改日我有时间了多写点 Android 应用和封装 SDK 什么的的话会好一些
本频道里的东西,比如 AlpineDepolyer Python 脚本和 RustPlayBot/PythonPlayBot 就暂时放着了(不过我给加了个频道链接,反正那些也不是什么不得了的东西)
不得不说,后来再看我的确很菜,我之前没有一个面向对象的(比如,Java 类)抽象是被正确构造的... 而放在别人那里就多很多,还用 Java 软件架构常用的结构,比如 Annotation
至少看到了所谓的应用程序设计吧,真的用了不少别人的抽象呢,所以说底气不足,大概是实践不够
就好象看到会玩魔方的别人而自卑一样,但自己不经过长时间的训练,又如何能与别人相比呢?这样的话要么然花时间学魔方矩阵操作模型和模式识别,多训练、重操作速度,不这样怎么知道自己有没有能力做到?或许还能做到更好呢?
当然现在都过去了,我现在有能力,而且只要有时间,我一定能做到比以前本质上的进步,甚至超越别人(至少在某些方面是肯定可以的,因为这些是所谓更高层次的知识,和可以通过看代码抄代码改代码得到的技能有本质性的区别,就是所谓的『理解理论和进行分析程度的能力』)
我不是只会 quick hack,而是因为没时间所以真的只能去 Quick hack
越复杂越容易堆砌,我以前有时间的时候不是没有堆砌过这种功能多一点的东西,MonkeyVM 就是一个例子,这个虚拟机连”二进制代码文件格式“都写出来了,可是这能证明我理解它了吗?它只是个复杂的玩具,看起来像是有点用处而已,实际上内部依然只是空虚没有什么意思的逻辑,这种逻辑即便多一点又能怎么样?也不能证明我比别人多了些什么特别的东西。
所以我开始写所谓简单但难于设计的程序,开始看各种工程或者理论性的书籍,开始信奉简洁优雅定义自己的逻辑,即便自己依然 可能不是真正理解也要这么做。
所以我现在听到他们说『duangsuse 什么都会』『duangsuse 大佬』(这是貌似的意思,我只是大概描述一下....)
的时候甚至会怀疑,是不是在讽刺我...
希望有一天会彻底消失,不过我知道会很慢,因为那一天我必须写过所有他们写过开源的程序才行,因为打算涉足所有(软件)领域,所以要把所有领域的人都视为竞争者呢。
我知道我有时间赶,从基本的软件架构、GUI 程序、编译原理、关系代数开始,到计算机图形学、信号处理、人工智能、电子和无线电、操作系统,是以后每天要准备开始写代码的日常呢。
不得不说,后来再看我的确很菜,我之前没有一个面向对象的(比如,Java 类)抽象是被正确构造的... 而放在别人那里就多很多,还用 Java 软件架构常用的结构,比如 Annotation
至少看到了所谓的应用程序设计吧,真的用了不少别人的抽象呢,所以说底气不足,大概是实践不够
就好象看到会玩魔方的别人而自卑一样,但自己不经过长时间的训练,又如何能与别人相比呢?这样的话要么然花时间学魔方矩阵操作模型和模式识别,多训练、重操作速度,不这样怎么知道自己有没有能力做到?或许还能做到更好呢?
当然现在都过去了,我现在有能力,而且只要有时间,我一定能做到比以前本质上的进步,甚至超越别人(至少在某些方面是肯定可以的,因为这些是所谓更高层次的知识,和可以通过看代码抄代码改代码得到的技能有本质性的区别,就是所谓的『理解理论和进行分析程度的能力』)
我不是只会 quick hack,而是因为没时间所以真的只能去 Quick hack
越复杂越容易堆砌,我以前有时间的时候不是没有堆砌过这种功能多一点的东西,MonkeyVM 就是一个例子,这个虚拟机连”二进制代码文件格式“都写出来了,可是这能证明我理解它了吗?它只是个复杂的玩具,看起来像是有点用处而已,实际上内部依然只是空虚没有什么意思的逻辑,这种逻辑即便多一点又能怎么样?也不能证明我比别人多了些什么特别的东西。
所以我开始写所谓简单但难于设计的程序,开始看各种工程或者理论性的书籍,开始信奉简洁优雅定义自己的逻辑,即便自己依然 可能不是真正理解也要这么做。
所以我现在听到他们说『duangsuse 什么都会』『duangsuse 大佬』(这是貌似的意思,我只是大概描述一下....)
的时候甚至会怀疑,是不是在讽刺我...
希望有一天会彻底消失,不过我知道会很慢,因为那一天我必须写过所有他们写过开源的程序才行,因为打算涉足所有(软件)领域,所以要把所有领域的人都视为竞争者呢。
我知道我有时间赶,从基本的软件架构、GUI 程序、编译原理、关系代数开始,到计算机图形学、信号处理、人工智能、电子和无线电、操作系统,是以后每天要准备开始写代码的日常呢。
那么大概就是这样吧 #GitHub 现在有 64 个,但我马上还是要写新的东西的
duangsuse::Echo
Radare2 是最好的二进制编辑器 #bin
https://www.fileformat.info/format/bmp/egff.htm
BMP Version 4
第一个版本很好读取,只需要 unpack 就可以了(看这里)
>>>
一个 4 字节整数:Header 的字节数
一个 4 字节整数:图像宽度
一个 4 字节整数:图像高度
一个 2 字节整数:始终为 1
一个 2 字节整数:颜色数
BMP Version 4
第一个版本很好读取,只需要 unpack 就可以了(看这里)
>>>
struct.unpack('<ccIIIIIIHH',bmp)
('B', 'M', 691256, 0, 54, 40, 640, 360, 1, 24)
从结果 54 (矩阵偏移量)开始:一个 4 字节整数:Header 的字节数
一个 4 字节整数:图像宽度
一个 4 字节整数:图像高度
一个 2 字节整数:始终为 1
一个 2 字节整数:颜色数
GitHub
ctf-wiki/ctf-wiki
CTF Wiki Online. Come and join us, we need you! Contribute to ctf-wiki/ctf-wiki development by creating an account on GitHub.
新名字 duangsuse /'dʊɔːŋ sjuːz/ | [⃪PROM, FP]
显得简单一些
| [⃪PLD, FPλ]
这样 PLD 和 FP 就不会被误读了(PLD 是,好像是 FPGA 更好,其实是说 duangsuse 感兴趣的低到嵌入式层面,可是如果熟悉电子设计一定会知道 Programmable Logic Device 的)
FP 后面加上 lambda 符号肯定是说函数式编程的 FP 呢
显得简单一些
| [⃪PLD, FPλ]
这样 PLD 和 FP 就不会被误读了(PLD 是,好像是 FPGA 更好,其实是说 duangsuse 感兴趣的低到嵌入式层面,可是如果熟悉电子设计一定会知道 Programmable Logic Device 的)
FP 后面加上 lambda 符号肯定是说函数式编程的 FP 呢
duangsuse::Echo
不得不说,这是大小端的问题非常喜感,我明明什么都没做,只是保存了一下文件... 就自动帮我反色了
不,其实是我写错了... 好像多输出了一个字节,我都不知道从哪里来的,可是它影响了 BMP 矩阵的解释(shift 了一个位置,结果会导致这样的颜色值问题)...
duangsuse::Echo
我只好注释掉了这个... 我觉得比较有用的流位置指定
初步考证可能是由于 reader 程序对动态大小结构 DIB 的处理有问题,正在修复
表现的现象是读取矩阵时往前 seek 一个字节就不会出问题(不会影响颜色值的解释),但这么做输出的文件依然和源文件不同
我也在怀疑是不是索引格式的问题(零基和非零基什么的)
表现的现象是读取矩阵时往前 seek 一个字节就不会出问题(不会影响颜色值的解释),但这么做输出的文件依然和源文件不同
我也在怀疑是不是索引格式的问题(零基和非零基什么的)
out.bmp
1.6 MB
可以说是非常邪恶的 DIP 算法了...