![]() |
1
0
因为我怀疑症状是与printf/fprintfs无关的问题。在程序的早期,我冲刺了许多字符串,这是结构的一部分。我没有将结构成员的大小传递给sprintf,而是传递了整个结构的大小,这导致缓冲区溢出并损坏了不知有多少内存。当这是在一个主线程中时,它没有溢出到足以破坏我的堆栈并导致segfault,但它仍然写过缓冲区。 由于独立程序中的函数调用较少,因此过度写入堆栈指针的可能性为零,当引入实际程序/dll时,调用层次结构变得非常重要,大量缓冲区溢出肯定会覆盖堆栈指针,因此,地址范围为0x7ABCDEF的线程的printf试图跳转到返回地址0xF1234567,从而导致访问错误。 我把我的故事贴在这里供将来的读者阅读。如果下一个家伙有类似的问题,这里有一些sprintf_的资源: What is sprintf_s analog of sprintf(newpath, "%s%s",...)? |
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 11 月前 |