コード例 #1
0
def load(dumpname, cpu=None, os_name=None):
    """Loads a process memory dump."""
    dumpname = os.path.abspath(dumpname)
    mapper = None
    if os.path.isdir(dumpname):
        mapper = VeryLazyProcessMemoryDumpLoader(dumpname, cpu=cpu, os_name=os_name)
    elif os.path.isfile(dumpname):
        # try minidump
        from haystack.mappings import minidump
        mapper = minidump.MDMP_Mapper(dumpname, cpu=cpu, os_name=os_name)
    else:
        raise IOError('couldnt load %s' % dumpname)
    memory_handler = mapper.make_memory_handler()
    log.debug('%d dump file loaded' % len(memory_handler))
    # excep mmap.error - to much openfile - increase ulimit
    return memory_handler
コード例 #2
0
def get_memory_handler(opts):
    if opts.dumptype == DUMPTYPE_BASE:
        loader = dump_loader.ProcessMemoryDumpLoader(opts.dump_folder_name)
        memory_handler = loader.make_memory_handler()
    elif opts.dumptype == DUMPTYPE_VOLATILITY:
        mapper = vol.VolatilityProcessMapper(opts.dump_filename, "WinXPSP2x86", opts.pid)
        memory_handler = mapper.make_memory_handler()
    elif opts.dumptype == DUMPTYPE_REKALL:
        mapper = rek.RekallProcessMapper(opts.dump_filename, opts.pid)
        memory_handler = mapper.make_memory_handler()
    elif opts.dumptype == DUMPTYPE_LIVE:
        memory_handler = dbg.make_local_process_memory_handler(pid=opts.pid, use_mmap=opts.mmap)
    elif opts.dumptype == DUMPTYPE_MINIDUMP:
        from haystack.mappings import minidump
        loader = minidump.MDMP_Mapper(opts.dump_filename)
        memory_handler = loader.make_memory_handler()
    else:
        raise RuntimeError('dump type has no case support. %s', opts.dumptype)
    return memory_handler