import disass e = elf.ELFFile("/home/paszoste/cp/tests/files/test_elf") for section in e.iter_sections(): print section.name print section.header for function in e.iter_functions(): print function for symbol in e.iter_symbols(): print symbol.name, symbol.entry fav_num_text = e.get_symbol_text('_ZN6Person14favoriteNumberEv') fav_num_inst = disass.disassemble_x64(fav_num_text) # slices, indexing print fav_num_inst[0] print type(fav_num_inst[0:5]) print len(fav_num_inst) print fav_num_inst[-1] # various mnemonics, instruction class, category inst = fav_num_inst[0] inst.get_mnemonic() inst.get_mnemonic_intel() inst.get_mnemonic_att() inst.get_iclass() inst.get_category()
import xed import disass from fun_list import get_text text = get_text("/home/paszoste/cp/testG4Box") inst_list = disass.disassemble_x64(text) # il1 = inst_list[:5] # il2 = inst_list[5:10] for inst in inst_list: print inst print "unsigned imm:", inst.get_unsigned_immediate() print "signed imm:", inst.get_signed_immediate() print "number of operands:", inst.get_number_of_operands() for idx in xrange(0, inst.get_number_of_operands()): print inst.get_operand_length(idx) print "branch displacement: ", inst.get_branch_displacement() print "bytes:", disass.bytes_to_string(inst.get_bytes()) print "" # if xed.terminates_bb(inst): # print ">>",\ # inst.get_mnemonic_intel(),\ # xed.xed_operand_values_get_branch_displacement_int32(xed.xed_decoded_inst_operands_const(inst)) # else: # print inst.get_mnemonic_intel()