Created
          November 7, 2017 04:05 
        
      - 
      
- 
        Save scrapbird/f256b19586f57de318d65b18b9839ae9 to your computer and use it in GitHub Desktop. 
Revisions
- 
        scrapbird created this gist Nov 7, 2017 .There are no files selected for viewingThis file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,37 @@ #!/usr/bin/env python import r2pipe import sys r2 = r2pipe.open() # r2 base address delta = 0x400000 def patchByte(addr, oldbyte, newbyte): print "[-] Patching byte at addr: {} {}->{}".format(hex(addr), oldbyte, newbyte) r2.cmd("wx {} @ {}".format(newbyte, hex(addr))) res = r2.cmd("p8 1 @ {}".format(hex(addr))) if res != newbyte: print "[!] Error writing byte at {}".format(hex(addr)) # Check file permissions if r2.cmd("i~mode[1]").find("w") < 0: print "Please open file in write mode (oo+)" quit() # Check args if len(sys.argv) != 2: print "Please run script with path to patch file" quit() with open(sys.argv[1], 'r') as f: for line in f: if not line.startswith(">"): line = line.rstrip("\n") split = line.split(":") addr = int(split[0], 16) + delta bytesplit = split[1].split("->") patchByte(addr, bytesplit[0], bytesplit[1])