草庐IT

buffer-overflow

全部标签

c - 为什么gets函数如此危险以至于不应该使用它?

当我尝试通过GCC编译使用gets()函数的C代码时,我收到以下警告:(.text+0x34):warning:the`gets'functionisdangerousandshouldnotbeused.我记得这与堆栈保护和安全有关,但我不确定具体原因。我怎样才能删除这个警告?为什么会有关于使用gets()的警告?如果gets()如此危险,那我们为什么不能删除它呢? 最佳答案 为了安全地使用gets,您必须确切知道要读取多少个字符,这样才能使缓冲区足够大。只有确切知道要读取哪些数据,您才会知道这一点。您想使用fgets而不是使用g

rubyzip Zip::ZipFile.open_buffer 需要一个 String 类或 IO 类的参数

我正在从压缩的数据库中读取blob数据(文件内容为CSV格式)。我的变量的结果如下所示:irb(main):144:0>my_string=>"\x1F\x8B\b\x00\xCB'\xFBY\x02\xFF\xC5R\xC1n\xDB0\f\xBD\xF7+\x04\xF46\xA8\x81d\xCB\x96}\f\x92\x15\xEB\x90\xE6\xB0\x04\xD8qPd&\xD1\x12K\xAE$w\xE8\xDF\x8F\x96\x9A\xA2\x87\x01\x03r\t\r\x8B|\x92H>>\xD\x7F\xC0\xCB\b\xE1\x03\x84\xC1

c++ - 将 Protocol Buffer 定义拆分为多个 .proto 文件

我想在另一个协议(protocol)文件中包含一个协议(protocol)定义文件。例如://base.proto:messageP_EndPoint{requiredint32id=1;requiredstringhost=2;requiredint32port=3;}然后在另一个文件中:communication.proto://somehowinclude`base.proto'//...messageP_CommunicationProtocol{requiredCP_MessageTypetype=1;optionalint32id=2;optionalP_EndPointi

c++ - 将 Protocol Buffer 定义拆分为多个 .proto 文件

我想在另一个协议(protocol)文件中包含一个协议(protocol)定义文件。例如://base.proto:messageP_EndPoint{requiredint32id=1;requiredstringhost=2;requiredint32port=3;}然后在另一个文件中:communication.proto://somehowinclude`base.proto'//...messageP_CommunicationProtocol{requiredCP_MessageTypetype=1;optionalint32id=2;optionalP_EndPointi

java - Google Protocol Buffer 和 HTTP

我正在使用gSoap将遗留C++系统重构为SOA。我们有一些性能问题(非常大的XML),所以我的领导让我看看ProtocolBuffer。我做到了,它看起来很酷(我们需要C++和Java支持)。但是ProtocolBuffer只是用于序列化的解决方案,现在我需要将它发送到Java前端。从C++和Java的角度来看,我应该使用什么来通过HTTP(只是内部网络)发送这些序列化的内容?PS。另一个人试图加速我们的gSoap解决方案,我只对ProtocolBuffer感兴趣。 最佳答案 您当然可以通过HTTP请求或在HTTP响应中发送二进制

java - Google Protocol Buffer 和 HTTP

我正在使用gSoap将遗留C++系统重构为SOA。我们有一些性能问题(非常大的XML),所以我的领导让我看看ProtocolBuffer。我做到了,它看起来很酷(我们需要C++和Java支持)。但是ProtocolBuffer只是用于序列化的解决方案,现在我需要将它发送到Java前端。从C++和Java的角度来看,我应该使用什么来通过HTTP(只是内部网络)发送这些序列化的内容?PS。另一个人试图加速我们的gSoap解决方案,我只对ProtocolBuffer感兴趣。 最佳答案 您当然可以通过HTTP请求或在HTTP响应中发送二进制

c++ - Thrift 与 Protocol Buffer

这个问题在这里已经有了答案:BiggestdifferencesofThriftvsProtocolBuffers?[closed](15个回答)关闭7年前。我已经使用PB有一段时间了,但是Thrift一直在我的脑海中。在我看来,Thrift的主要优点是:native集合(即vector、集合等)与PB重复提供的功能类似于但不完全相似(没有迭代器,除非您深入研究文档指出“在大多数情况下不需要”的RepeatedField)。提供了一个不错的RPC实现,而不仅仅是插入你自己的钩子(Hook)。更多官方支持的语言(PB为Java、C++、Python提供“官方”支持)Thrift的缺点:R

c++ - Thrift 与 Protocol Buffer

这个问题在这里已经有了答案:BiggestdifferencesofThriftvsProtocolBuffers?[closed](15个回答)关闭7年前。我已经使用PB有一段时间了,但是Thrift一直在我的脑海中。在我看来,Thrift的主要优点是:native集合(即vector、集合等)与PB重复提供的功能类似于但不完全相似(没有迭代器,除非您深入研究文档指出“在大多数情况下不需要”的RepeatedField)。提供了一个不错的RPC实现,而不仅仅是插入你自己的钩子(Hook)。更多官方支持的语言(PB为Java、C++、Python提供“官方”支持)Thrift的缺点:R

c++ - "xor eax, ebp"在 C++ 编译器输出中使用

我刚刚尝试在VS2010上编译几个C++片段,并在IDAPro上分析了可执行文件。我注意到的是,他们中的大多数在开始时都有以下类似的内容(在调用__security_check_cookie后不久)xoreax,ebp类似的东西xorecx,ebp在底部。为什么会这样?编译器优化已关闭。 最佳答案 这些是缓冲区溢出保护方法,与编译器优化无关。MSVC将(如果您指定/GS开关)将安全cookie推送到返回地址附近的堆栈上,以便它可以检测到堆栈损坏的常见情况。堆栈损坏可能是由以下错误代码引起的:charbuff[5];strcpy(bu

c++ - "xor eax, ebp"在 C++ 编译器输出中使用

我刚刚尝试在VS2010上编译几个C++片段,并在IDAPro上分析了可执行文件。我注意到的是,他们中的大多数在开始时都有以下类似的内容(在调用__security_check_cookie后不久)xoreax,ebp类似的东西xorecx,ebp在底部。为什么会这样?编译器优化已关闭。 最佳答案 这些是缓冲区溢出保护方法,与编译器优化无关。MSVC将(如果您指定/GS开关)将安全cookie推送到返回地址附近的堆栈上,以便它可以检测到堆栈损坏的常见情况。堆栈损坏可能是由以下错误代码引起的:charbuff[5];strcpy(bu