1

我的软件是一个网络爬虫,当我从 http 响应中获取正文时,它会崩溃。

resp->body = Malloc(content_len);
memcpy(resp->body, body_start, content_len); //THIS IS THE FAULTY LINE

malloc是malloc的封装函数,所以resp->body不为NULL,content_len是以body_start开头的内存区长度,但其内容为“PK\003\004\024”,“\003”为ETX( end of text), "\004" 是 EOT(end of transmission),"\024" 是设备控制 4,我真不知道这些奇怪的字符是什么意思,为什么会破解?

4

1 回答 1

2

正文采用 ZIP 编码,来自ZIP 维基百科页面

没有幻数
,尽管PK\003\004、 PK\005\006 (空存档)或 PK\007\008 (跨区存档)很常见。

在阅读之前,您需要检查标题并解压缩正文。

至于分段错误,memcpy 的 3 个参数中的任何一个都可能是罪魁祸首,需要显示其初始化的代码才能发现确切的问题。如果您在代码的未显示部分中使用主体上的任何字符串函数(strlen/strcpy),它们很可能会因像这样的二进制输入而中断。

于 2013-05-01T06:15:22.900 回答