def patch_bytes(addr, bytes): for i,b in enumerate(bytes): patch_byte(addr+i, b) addr = 0x400430 bin_str = "EB FF" while True: addr = ida_search.find_binary(addr, ida_idaapi.BADADDR, bin_str, 16, ida_search.SEARCH_NEXT|ida_search.SEARCH_DOWN) if addr == ida_idaapi.BADADDR: break #patch_byte(addr, 0x90) print('ebfe',hex(addr)) addr = 0x400430 bin_str = "B8 ? ? ? ? 35 ? ? ? ? 79 ?" while True: addr = ida_search.find_binary(addr, ida_idaapi.BADADDR, bin_str, 16, ida_search.SEARCH_NEXT|ida_search.SEARCH_DOWN) if addr == ida_idaapi.BADADDR: break patch_bytes(addr, [ 0x90 for i in range(12) ]) print 'mov,xor,jns',hex(int(addr)) addr = 0x400430 bin_str = "B8 ? ? ? ? 05 ? ? ? ? 75 ?" while True: addr = ida_search.find_binary(addr, ida_idaapi.BADADDR, bin_str, 16, ida_search.SEARCH_NEXT|ida_search.SEARCH_DOWN) if addr == ida_idaapi.BADADDR: break patch_bytes(addr, [ 0x90 for i in range(12) ]) print 'mov,add,jnz',hex(int(addr)) addr = 0x400430 bin_str = "B8 ? ? ? ? 05 ? ? ? ? FF C0 73 ?" while True: addr = ida_search.find_binary(addr, ida_idaapi.BADADDR, bin_str, 16, ida_search.SEARCH_NEXT|ida_search.SEARCH_DOWN) if addr == ida_idaapi.BADADDR: break patch_bytes(addr, [ 0x90 for i in range(14) ]) print 'mov,add,inc,jnb',hex(int(addr)) addr = 0x400430 bin_str = "B8 ? ? ? ? 35 ? ? ? ? 78 ?" while True: addr = ida_search.find_binary(addr, ida_idaapi.BADADDR, bin_str, 16, ida_search.SEARCH_NEXT|ida_search.SEARCH_DOWN) if addr == ida_idaapi.BADADDR: break patch_bytes(addr, [ 0x90 for i in range(12) ]) print 'mov,xor,js',hex(int(addr))