【C语言】
“ASCII码16由控制字符表示␐也称为数据链接转义”
我想从键盘上获取这个字符作为程序的输入,该程序允许您进行缓冲区溢出。仅当我用以下值覆盖 INT 变量时它才有效:1161258512。
我不知道如何构建这个数字,因为不可能将单个字符 16 写为输入。我也尝试过转义序列,但没有成功。也许我应该使用 unicode 来做到这一点,并写入 4 字节有效负载的前 2 个字符(包括 16 个字符)。
我对此类事情很陌生,所以如果您了解更多,我将非常感激
不可能将单个字符 16 作为输入写入
这是一个奇怪的表达方式。如您所知,DLE 是 0x10, 16。
如何从键盘获取此信息取决于许多您没有透露的事情:什么操作系统?
在键入按键时按下 Control 的效果是屏蔽位 5 和 6,即值 32 和 64,所以这就是您的答案:
您可以使用 Ctrl+P、Ctrl+p 或 Ctrl+0,因为有 3 个可能的值:
0
是 0x30P
是 0x50P
是 0x70但是要阅读本文,您需要准备键盘驱动程序。在 Linux 和家庭 pos-Unix 下使用 raw input 并在 Windows 下调用 ReadConsoleInput 或类似的。
简而言之,您保存输入配置,准备一些适合您需要的配置,例如禁用回显和缓冲,然后读取关键代码。最后你恢复了一切。Microsoft 有一个
控制台参考。 Linux下man
是你的朋友。寻找
raw io
和
ioctl