gpt4 book ai didi

linux - 比较 Strace 中的字符串值

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:52 24 4
gpt4 key购买 nike

使用 strace 比较两个不同二进制文件的输出,我无法确定实际写入的值是什么。

write(3, "g\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096

write(4, "g\377\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096

第一个到第二个的区别似乎是\377\377 到\7\0,但是这些使用什么编码?这些应该是十进制值,但我不知道如何转换它们来比较它们。

最佳答案

Strace write() handler使用 printstrn函数,调用 util.c 中的 printstr_ex 函数,它调用 string_quote (也在 util.c 中)进行打印。

The function (默认情况下)使用 ASCII 字符打印数据,然后使用标准 C 表示法 \r \n\b 等,然后使用八进制值表示其他不可打印的字节。该字符串应该可以由 C 编译器解析,因此您可以编写一个简单的 C 程序来比较它们,例如。 strcmp("g\377\377\377", "g\377\7\0") 将按预期工作。

如果您想比较这些值,还有 man strace 中的这些开关:

-x

Print all non-ASCII strings in hexadecimal string format.

-xx

Print all strings in hexadecimal string format.

关于linux - 比较 Strace 中的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com