现调用 open 与指定的参数启动应用程序的目标进程。
open 是一个很好启动进程的方式,因为,例如,它可以让你指定一个 Safari 的 URL 作为命令行参数。
如果你只需启动 Safari 浏览器应用程序,输入一个文件名即可。
最后,在挂起的数秒后返回,并打印出崩溃报告。
这里有两个使用它的例子: ./crash Safari http://192.168.1.182/good.html 10 ./crash Safari http://192.168.1.182/bad.html 10Process: Safari 57528Path: /Applications/Safari.app/Contents/MacOS/SafariIdentifier: com.apple.SafariVersion: 5.1.1 7534.51.22Build Info: WebBrowser-75340510220000003Code Type: X86-64 NativeParent Process: launchd 334Date/Time: 2011-12-05 09:15:27.988 -0600OS Version: Mac OS X 10.7.2 11C74Report Version: 9Crashed Thread: 10Exception Type: EXC_BAD_
ACCESS SIGBUSException Codes: KERN_PROTECTION_FAILURE at 0x000000010aad5fe8...Thread 0:: Dispatch queue: com.apple.main-thread0 libsystem_kernel.dylib 0x00007fff917b567amach_msg_trap 101 libsystem_kernel.dylib 0x00007fff917b4d71 mach_msg 73...有了这个方便的小脚本, 如果有一个崩溃的过程,你可以轻松地自动启动应用程序和检测通过分析它的标准输出。
其他的好处是,它适用于各种应用,而不仅仅是 Safari 浏览器。
像这些工作的例子一样好: ./crash TextEdit toc.txt 3 ./crash quotQuickTime Playerquot good.mp3 3So you have a way to generate inputs and a way to launch a program for testing and to monitor it.All that remains is to tie it all together:import randomimport mathimport subprocessimport osimport sysdef fuzz_bufferbuffer FuzzFactor: buf listbuffer numwritesrandom.randrangemath.ceilfloatlenbuf /FuzzFactor1 for j in rangenumwrites: rbyte random.randrange256 rn random.randrangelenbuf bufrn quotcquotrbyte return quotquot.joinbufdef fuzzbuf test_case_number extension timeout app_name: fuzzed fuzz_bufferbuf 10 fname strtest_case_numberquot-testquotextension out openfname quotwbquot out.writefuzzed out.close command quot./crashquot app_name fname strtimeout output subprocess.Popencommand stdoutsubprocess.PIPE.communicate0 if lenoutput gt 0: print quotCrash in quotfname print output else: os.unlinkfnameiflensys.argvlt5: print quotfuzz ltapp_namegt lttime-secondsgt ltexemplargt ltnum_iterationsgtquot sys.exit0else: f opensys.argv3 quotrquot inbuf f.read f.close ext sys.argv3sys.argv3.rfind‘.’: for j in rangeintsys.argv4: fuzzinbuf j ext sys.argv2 sys.argv1PDF 模糊测试历险记如果您旧版本的 Mac OS X 上运行了 PDF 文件的挖掘你可能会再次发现早在 2009 年的 JBIG的漏洞(http://secunia.com/secunia_research/2009-24/) 。
此漏洞是在 Mac OS X 和 iOS2.2.1及更早版本。
这种特定的错误在 iOS 崩溃报告看起来像这样:ltxml versionquot1.0quot encodingquotUTF-8quotgtltDOCTYPE plist PUBLIC quot-//Apple//DTD PLIST 1.0//ENquotquothttp://www.apple.com/DTDs/PropertyList-1.0.dtdquotgtltplist versionquot1.0quotgtltdictgt ltkeygtAutoSubmittedlt/keygt lttrue/gt ltkeygtSysInfoCrashReporterKeylt/keygt ltstringgtc81dedd724872cf57fb6a432aa482098265fa401lt/stringgt ltkeygtbug_typelt/keygt ltstringgt109lt/stringgt ltkeygtdescriptionlt/keygt ltstringgtIncident Identifier: E38AB756-D3E6-43D0-9FFA-427433986549CrashReporter Key: c81dedd724872cf57fb6a432aa482098265fa401Process: MobileSafari 20999Path: /Applications/MobileSafari.app/MobileSafariIdentifier: MobileSafariVersion: Code Type: ARM NativeParent Process: launchd 1Date/Time: 2009-06-15 12:57:07.013 -0500OS Version: iOS OS 2.2 5G77Report Version: 103Excepti.
上一篇:
楼宇对讲系统方案 (新)
下一篇:
多年来只想说一句,我不怪你