我正在写一些 crackmes.one 挑战,我想写一个挑战,解决方案出现在分段错误上。(而且你必须反汇编代码才能找到段错误的方法。应该很有趣吧?)
我在这里和那里找到了一些难以理解的理论答案,但我找不到实际的解决方案。因为大多数问题是“如何从 sigsegv 中恢复”而大多数答案是“你不能,让你的代码正确,这样它就不会出现段错误”。
什么是最“容易捕获”的段错误?对空函数指针的调用?双免?……?
我可以在我的信号处理程序中做什么?似乎有一些苛刻的条件(可重入,异步信号安全功能等......)。
如果有人可以给我一些安全的指针(双关语)指向某种文档、博客……或者比“只阅读 POSIX 圣经”更有用的解释。这将不胜感激。
我的代码不需要是可移植的。如果它适用于中等标准的 Linux(Debian、Redhat、Ubuntu、CentOS),那就没问题了。