Пример #1
0
def disassembleFile(file_path, base_addr, map_file=False):
    print("now analyzing {}".format(file_path))
    loader = FileLoader(file_path, map_file=map_file)
    file_content = loader.getData()
    disasm = Disassembler(config)
    start = time.clock()
    try:
        disassembly = disasm.disassemble(file_content, base_addr, timeout=config.TIMEOUT)
        report = disasm.getDisassemblyReport(disassembly)
        report["filename"] = os.path.basename(file_path)
        print(disassembly)
    except Exception as exc:
        print("-> an error occured (", str(exc), ").")
        report = {"status":"error", "meta": {"traceback": traceback.format_exc(exc)}, "execution_time": time.clock() - start}
    return report
Пример #2
0
def open(file):
	
	fl  = FileLoader(file, True)
	dis = Disassembler(Config)
	smda._set_eng(fl,dis)

	return smda
Пример #3
0
 def disassembleFile(self, file_path, pdb_path=""):
     loader = FileLoader(file_path, map_file=True)
     base_addr = loader.getBaseAddress()
     file_content = loader.getData()
     start = time.clock()
     try:
         self.disassembler.setFilePath(file_path)
         self.disassembler.addPdbFile(pdb_path, base_addr)
         disassembly = self.disassemble(file_content,
                                        base_addr,
                                        timeout=self.config.TIMEOUT)
         report = self.getDisassemblyReport(disassembly)
         report["filename"] = os.path.basename(file_path)
         print(disassembly)
     except Exception as exc:
         print("-> an error occured (", str(exc), ").")
         report = {
             "status": "error",
             "meta": {
                 "traceback": traceback.format_exc(exc)
             },
             "execution_time": time.clock() - start
         }
     return report
Пример #4
0
 def setUpClass(cls):
     super(SmdaIntegrationTestSuite, cls).setUpClass()
     disasm = Disassembler(config)
     # load encrypted Asprox
     with open(
             os.path.join(config.PROJECT_ROOT, "tests",
                          "asprox_0x008D0000_xored"), "rb") as f_binary:
         binary = f_binary.read()
     decrypted_asprox = bytearray()
     for index, byte in enumerate(binary):
         if isinstance(byte, str):
             byte = ord(byte)
         decrypted_asprox.append(byte ^ (index % 256))
     cls.asprox_binary = decrypted_asprox
     cls.asprox_disassembly = disasm.disassembleBuffer(
         bytes(decrypted_asprox), 0x8D0000)
     # load encrypted Cutwail
     with open(os.path.join(config.PROJECT_ROOT, "tests", "cutwail_xored"),
               "rb") as f_binary:
         binary = f_binary.read()
     decrypted_cutwail = bytearray()
     for index, byte in enumerate(binary):
         if isinstance(byte, str):
             byte = ord(byte)
         decrypted_cutwail.append(byte ^ (index % 256))
     cls.cutwail_binary = decrypted_cutwail
     # run FileLoader and disassemble as file
     loader = FileLoader("/", map_file=True)
     loader._loadFile(decrypted_cutwail)
     file_content = loader.getData()
     binary_info = BinaryInfo(file_content)
     binary_info.raw_data = loader.getRawData()
     binary_info.file_path = ""
     binary_info.base_addr = loader.getBaseAddress()
     binary_info.bitness = loader.getBitness()
     binary_info.code_areas = loader.getCodeAreas()
     cls.cutwail_disassembly = disasm._disassemble(binary_info)
     cls.cutwail_unmapped_disassembly = disasm.disassembleUnmappedBuffer(
         decrypted_cutwail)
Пример #5
0
 def disassembleFile(self, file_path, pdb_path=""):
     loader = FileLoader(file_path, map_file=True)
     file_content = loader.getData()
     binary_info = BinaryInfo(file_content)
     binary_info.raw_data = loader.getRawData()
     binary_info.file_path = file_path
     binary_info.base_addr = loader.getBaseAddress()
     binary_info.bitness = loader.getBitness()
     binary_info.code_areas = loader.getCodeAreas()
     start = datetime.datetime.utcnow()
     try:
         self.disassembler.addPdbFile(binary_info, pdb_path)
         smda_report = self._disassemble(binary_info, timeout=self.config.TIMEOUT)
         if self.config.STORE_BUFFER:
             smda_report.buffer = file_content
     except Exception as exc:
         LOGGER.error("An error occurred while disassembling file.")
         # print("-> an error occured (", str(exc), ").")
         smda_report = self._createErrorReport(start, exc)
     return smda_report