尝试使用python脚本调试程序(缓冲区溢出),我需要恢复程序可能发送的所有消息。
在Linux上,终端上的普通呼叫为 ./ a.out AAA 回应
您的论点是:AAA
具有溢出输入:。/a.out AAAAAAA 回应
您的论点是:AAAAAAA
分段错误
我按如下所示构建python代码
import sys, string, os
from subprocess import Popen, PIPE
processName = os.getcwd() + "/a.out"
argument = "AAAAAAAAA"
p = Popen([processName, argument], stdout=PIPE, stderr=PIPE)
output, error = p.communicate()
print(":: %d %s %s" % (p.returncode, output, error))
但我无法收到分段错误消息
据我搜索没有找到所需的参数
答案 0 :(得分:0)
该过程实际上并未打印Segmentation fault
。当您从外壳运行a.out
时,它实际上是由外壳本身产生的。因此,这不是您的程序产生的消息。
请参见What actually prints "Segmentation fault"?
但是,您可以通过比较p.returncode
模块中的-signal.SIGSEGV
和signal
来检查过程的返回码以查看是否由于分段错误而停止,请参见所链接的问题到下面了解详情。