我知道您可以使用 printf("\xab") 告诉 C 将值解释为十六进制。如果您将“\xab”作为输入输入到 C 程序,它将把它解释为字符 -x-a-b。有没有办法将 printf 样式的格式化信息嵌入到原始输入中?
最佳答案
不,这完全取决于读取字符的代码如何解释它们。您不能通过给程序提供文本来神奇地从外部强制程序执行其他操作。我想缓冲区溢出攻击有点像反例,但那是相当极端的。
许多程序使用例如strtol()
自动支持 0x
(十六进制)和 0
作为前缀(浏览器地址栏是这一意想不到的功能的一个常见示例)。例如,在 Windows 中,您可以执行此操作以 ping 此站点:
C:\>ping 0xc6fcce10
Pinging 198.252.206.16 with 32 bytes of data:
其中 0xc6fcce10 是单个 32 位十六进制数形式的 IP 地址。
关于c - 有没有办法将字符串格式化为输入,以便 C 将其解释为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274814/