处理来自第三方DLL的缓冲区溢出

时间:2017-04-19 14:02:33

标签: c++ dll buffer-overflow

在我的项目中,我使用了一个不会更新的旧版第三方DLL。它用于解压缩数据。它解压缩数据并将结果放入传递给它的缓冲区中。

问题是如果将结果数据放入未分配足够空间的缓冲区中,则可能发生缓冲区溢出。此缓冲区大小是压缩数据前面的int32值。如果存在不正确的缓冲区大小,则会发生缓冲区溢出,从而导致堆损坏。

你怎么能从中恢复过来?我可以检测到 if 缓冲区溢出,但只有在调用DLL的解压缩函数之后才会检测到。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

唯一真正的解决方案是让缓冲区大于任何可能的结果大小。如果你不这样做,那么通过你对函数的描述,一旦你调用了函数,就可能已经发生了堆损坏。