Skip to content

Instantly share code, notes, and snippets.

@mahmoudimus
Forked from scrapbird/r21337patch.py
Created January 6, 2023 21:21
Show Gist options
  • Save mahmoudimus/6434a6fcc6205405d4a31503203f3149 to your computer and use it in GitHub Desktop.
Save mahmoudimus/6434a6fcc6205405d4a31503203f3149 to your computer and use it in GitHub Desktop.
Applies an x64dbg .1337 patch file to a binary in radare2. Call with: #!pipe ./r21337patch.py /path/to/patch.1337
#!/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])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment