def main(): if (len(sys.argv) > 2): cfgFile = sys.argv.pop(1) fuzzInst = ADBFuzz(cfgFile) else: print "Missing configuration file!" usage() exit(1) cmd = sys.argv.pop(1) if (cmd == "showdump"): print "Obtaining symbolized trace..." dumpFile = sys.argv[1] libSearchPath = sys.argv[2] minidump = Minidump(dumpFile, libSearchPath) symbolTrace = minidump.getSymbolizedCrashTrace() print "" for frame in symbolTrace: print "#" + frame[0] + "\t" + frame[1] + " at " + frame[2] elif (cmd == "reproduce"): fuzzInst.config.fuzzerFile = sys.argv[1] fuzzInst.config.runTimeout = int(sys.argv[2]) isCrash = True if sys.argv[3] == 'crash': isCrash = True elif sys.argv[3] == 'abort': isCrash = False else: raise Exception("Unknown crash type " + sys.argv[3] + " specified!") if fuzzInst.testCrash(isCrash): exit(0) exit(1) elif (cmd == "run"): fuzzInst.remoteInit() if (len(sys.argv) > 2): fuzzInst.loopFuzz(sys.argv[1]) else: fuzzInst.loopFuzz() elif (cmd == "deploy"): fuzzInst.deploy(sys.argv[1], sys.argv[2]) elif (cmd == "reset"): fuzzInst.reset(sys.argv[1])