28得票2回答
如何调试“检测到堆栈溢出”错误?

我有一段复杂的C++代码。它是一个FastCGI程序,使用FastCGI C++类库。 当我请求一个非常长的URL时,会出现以下情况: *** stack smashing detected ***: ./tileserve terminated Erreur de segmentatio...

18得票1回答
破解堆栈示例3:Aleph One式

我已经在Linux x86_64上重现了Smashing the Stack for Fun and Profit的第三个示例。然而,我不明白应该增加多少字节到返回地址以跳过指令。 0x0000000000400595 <+35>: movl $0x1,-0x4(%rbp...

17得票3回答
什么是栈溢出(C语言)?

代码:int str_join(char *a, const char *b) { int sz =0; while(*a++) sz++; char *st = a -1, c; *st = (char) 32; while((c = *b++)) ...

15得票2回答
如何检测iOS应用程序中是否启用了堆栈破坏保护

我希望能够检查在使用Xcode 9构建的iOS 11应用程序中是否启用了栈保护(-fstack-protector-all)。 我已经在“其他 C 标志”中启用了-fstack-protector-all并构建和运行了一个应用程序,但是如何验证是否启用了栈保护呢? 有很多旧的(2013年及...

7得票4回答
如何从“调用”函数中返回一个值?

我希望能够强制执行“双重返回”,即具备一个能够从其调用函数中强制性返回的函数(是的,我知道并不总是存在真正意义上的调用函数等)。很明显,我希望通过操作栈来完成这个过程,并且也认为至少在某些不可移植的机器语言方式下是可行的。问题在于,这是否可以以相对干净和可移植的方式实现。 为了提供一个具体的...