“烫”常出现在Windows环境下,执行越界访问的程序,会打印出一很多连续的“烫烫烫…”,而0xcccc用汉语表示刚好就是“烫” oxcc正好是中断int 3的指令 起到保护作用。
首先,“烫”的GBK编码为“0xCCCC”。
其次,在x86系统中“0xCC”代表汇编指令”INT 3“的机器码。
INT 3解释:一个中断指令,例如设置软中断与这个指令相关,那么一段内存全是“CCCCCC…”,就会一直产生“烫”。
因为你字符串输出的时候,指针读取超过了本字符数组的结束 而不到下一个字符串的开始,指针指向就是这两个中间的位置 这些内存char值一般在VC里会是205,而两个字节的205连在一起,正好是汉字“烫”的代码。
- 错误示例
void rs(void* par) {
char buffer[1000];
char add[] = "iamaserver";
// I am a server
SOCKET sock = (SOCKET)par;
int size = recv(sock, buffer, sizeof(buffer), 0);
cout << buffer<< endl;
strcat
文章讨论了Windows环境中,由于程序越界访问导致的烫字符连续出现现象,以及0xCCCC在汇编中的含义。还分析了一个C++代码示例中的缓冲区溢出问题及其解决方法,强调了字符串操作和网络通信中的边界检查重要性。
最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



