Python3-查找并写入exe地址

Python3-查找并写入exe地址,python,python-3.x,binary,exe,patch,Python,Python 3.x,Binary,Exe,Patch,我有一个使用OllyDbg编辑的文件(original.exe),但我想学习如何使用Python进行编辑 在OllyDbg中,我找到地址: 0045B82C 然后我会改变: JNZ SHORT 0045B89F 致: 因此,在使用readtest.py的python中: offset = 0x0045B82C with open('original.exe', 'r+b') as victim: victim.seek(offset) line = victim.readline() pr

我有一个使用OllyDbg编辑的文件(original.exe),但我想学习如何使用Python进行编辑

在OllyDbg中,我找到地址:

0045B82C
然后我会改变:

JNZ SHORT 0045B89F 
致:

因此,在使用readtest.py的python中:

offset = 0x0045B82C
with open('original.exe', 'r+b') as victim:
victim.seek(offset)
line = victim.readline()
print(line)
我得到:

b'Wf93\x8b\xe9\x89t$\x10u\x05\xe8\x83\'\x00\x00f\x81{\x02\xd3\x07sP\xa1\xe4\xf2\x9c\x00\x8b\x15\xa8#\xae\x00\x8d\x0c\xc0\xc1\xe1\x04\x03\xc8\x8d\x84J\x80\x00\x00\x00\x8b\x8cJ\x80\x00\x00\x00;\xcet+\x8b\t\x89\r\xa45\xa8\x00\x890\xa1\xe4\xf2\x9c\x00\x8d\x14\xc0\xc1\xe2\x04\x03\xd0\xa1\xa8#\xae\x00\x8d\x0cPQ\xe8A\xfb\xcd\xff\x83\xc4\x04\x89pij\xffh\xd3\x07\x00\x00j\x06j\x01\x8dL$,\xe8\xc7\xe6\xce\xff\x8b\x08\x8bP\x04\x89L$\x14f\x8bD$\x16f;C\x02\x89T$\x18\x0f\x85\xa4\x00\x00\x00f;\x0b\x0f\x85\x9b\x00\x00\x00\xa1\xa45\xa8\x00\x83\xf8\xff\x0f\x84\x8d\x00\x00\x00\x8b\x15\xb0#\xae\x00\x8d\x0c\x80\xc1\xe1\x03+\xc8\xa1\xe4\xf2\x9c\x00\x8d\x0cJ\x8d\x14\xc0\xc1\xe2\x04\x03\xd0\xa1\xa8#\xae\x00\x89\x8cP\x80\x00\x00\x00\xa1\xe4\xf2\x9c\x00\x8b\x15\xa8#\xae\x00\x8d\x0c\xc0\xc1\xe1\x04\x03\xc8\x8d4JV\xe8\xae\xfa\xcd\xff\x8b\x8e\x80\x00\x00\x00\x83\xc4\x04\x89Hi\xa1\xa45\xa8\x00\xb9\x90_\x01\x00\x8d\x14\x80\xc1\xe2\x03+\xd0\xa1\xb0#\xae\x00\x89LP<\xa1\xa45\xa8\x00\x8d\x14\x80\xc1\xe2\x03+\xd0\xa1\xb0#\xae\x00\x89LP@\xc7\x05\xa45\xa8\x00\xff\xff\xff\xff\x0f\xbf\x03\x99\xb9\x1e\x00\x00\x00\xf7\xf9\x85\xd2\x0f\x85\xb2\x00\x00\x00\x8b}\x00\x85\xff\x0f\x84\xa7\x00\x00\x00\x8bE\x043\xf6\x85\xc0\x0f\x8e\x9a\x00\x00\x00\x8b\x13\x8bC\x04\x89T$\x14f\x8bT$\x16\x89D$\x183\xc0\x8d\x0c@\x8dD\x8f\x04f\x8bL\x8f\x06f;\xd1w\x15r\'f\x8b\\$\x143\xc9f;\x18\x0f\x9f\xc1\x8b\xc1\x85\xc0t\x14\x8bD$\x10\x8bM\x04@F\x89D$\x10\x0f\xbf\xc6;\xc1|\xc6\x8bD$\x10f\x85\xc0tC\x0f\xbf\xd0\x8bE\x04;\xd0}\x1d\x8d\x0cR+\xc2\xc1\xe1\x02H\x8d\x04@\x8d4\x87\x8b\xc1\xc1\xe9\x02\xf3\xa5\x8b\xc8\x83\xe1\x03\xf3\xa4\x8bE\x04\x8bM\x00+\xc2h\x80\xe3\x85\x00j\x0cPQ\x89E\x04\xe8\x08\x99\x0e\x00\x83\xc4\x10_^][\x83\xc4\x14\xc2\x04\x00\x90\x90\x90\x90\x90\x90\x90\x90\x81\xec\x04\x02\x00\x00SUVWh(\xf9\x98\x00h\xe05\xa8\x00\x8b\xf9h\xa0}\x98\x00\xe8\x80\x03\x0b\x00\x83\xc4\x08P\xe8\x97\xa0\x0e\x00\x8b\xf0\x83\xc4\x08\x85\xf6\x0f\x84"\x03\x00\x00V\x8do\x08j\x01j\x04U\xe8z\xa1\x0e\x00\x83\xc4\x10\x83\xf8\x01tv\x8dD$\x14\x8d\x8c$\x14\x01\x00\x00PQj\x00j\x00h\xb05\xa8\x00\xe8X\x92\x0e\x00\x83\xc4\x14\x8dT$\x14\x8d\x84$\x14\x01\x00\x00h\xf2\x00\x00\x00RP\xe8o\x16\x0b\x00Ph\xe8p\x98\x00h\xd0$\xae\x00\xe8\xce\x91\x0e\x00j\x00h\xd0$\xae\x00h\xe0p\x98\x00\xe8\xae\xc7\xd8\xffV\xc7\x054z\xb6\x00\x00\x00\x00\x00\xe8\x17\x9f\x0e\x00\x83\xc4(3\xc0_^][\x81\xc4\x04\x02\x00\x00\xc3V\x8d_\x04j\x01j\x04S\xe8\xee\xa0\x0e\x00\x83\xc4\x10\x83\xf8\x01t5\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14QRj\x00j\x00h\xb05\xa8\x00\xe8\xcc\x91\x0e\x00\x83\xc4\x14\x8d\x84$\x14\x01\x00\x00\x8dL$\x14h\xf9\x00\x00\x00PQ\xe9o\xff\xff\xff\x8bE\x003\xed;\xc5tG\x8d\x14@\xc1\xe2\x02R\xe8\xe4\x92\x0e\x00\x83\xc4\x04;\xc5\x89\x07u2\x8d\x84$\x14\x01\x00\x00\x8dL$\x14PQUUh\xb05\xa8\x00\xe8{\x91\x0e\x00\x83\xc4\x14\x8d\x94$\x14\x01\x00\x00\x8dD$\x14h\x05\x01\x00\x00R\xe9\xc6\x01\x00\x00\x8b\x03;\xc5tH\x8b\x0fVPj\x0cQ\xe8O\xa0\x0e\x00\x8b\x0b\x83\xc4\x10;\xc1t3\x8d\x94$\x14\x01\x00\x00\x8dD$\x14RPUUh\xb05\xa8\x00\xe8.\x91\x0e\x00\x83\xc4\x14\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14h\x13\x01\x00\x00QR\xe9y\x01\x00\x00V\x8do\x14j\x01j\x04U\xe8\x05\xa0\x0e\x00\x83\xc4\x10\x83\xf8\x01t4\x8d\x84$\x14\x01\x00\x00\x8dL$\x14PQj\x00j\x00h\xb05\xa8\x00\xe8\xe3\x90\x0e\x00\x83\xc4\x14\x8d\x94$\x14\x01\x00\x00\x8dD$\x14h\x1d\x01\x00\x00R\xe9\x86\xfe\xff\xffV\x8d_\x10j\x01j\x04S\xe8\xbb\x9f\x0e\x00\x83\xc4\x10\x83\xf8\x01t5\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14QRj\x00j\x00h\xb05\xa8\x00\xe8\x99\x90\x0e\x00\x83\xc4\x14\x8d\x84$\x14\x01\x00\x00\x8dL$\x14h$\x01\x00\x00PQ\xe9<\xfe\xff\xffVj\x01\x8dW\x18j\x01R\xe8p\x9f\x0e\x00\x83\xc4\x10\x83\xf8\x01t4\x8d\x84$\x14\x01\x00\x00\x8dL$\x14PQj\x00j\x00h\xb05\xa8\x00\xe8N\x90\x0e\x00\x83\xc4\x14\x8d\x94$\x14\x01\x00\x00\x8dD$\x14h+\x01\x00\x00R\xe9\xf1\xfd\xff\xff\x8bE\x003\xed;\xc5tC\xc1\xe0\x04P\xe8j\x91\x0e\x00\x83\xc4\x04;\xc5\x89G\x0cu0\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14QRUUh\xb05\xa8\x00\xe8\x00\x90\x0e\x00\x83\xc4\x14\x8d\x84$\x14\x01\x00\x00\x8dL$\x14h7\x01\x00\x00PQ\xebN\x8b\x03;\xc5\x0f\x84\xc9\x00\x00\x00\x8bW\x0cVPj\x10R\xe8\xd1\x9e\x0e\x00\x8b\x0b\x83\xc4\x10;\xc1to\x8d\x84$\x14\x01\x00\x00\x8dL$\x14PQUUh\xb05\xa8\x00\xe8\xb0\x8f\x0e\x00\x83\xc4\x14\x8d\x94$\x14\x01\x00\x00\x8dD$\x14hE\x01\x00\x00RP\xe8\xc7\x13\x0b\x00Ph\xe8p\x98\x00h\xd0$\xae\x00\xe8&\x8f\x0e\x00Uh\xd0$\xae\x00h\xe0p\x98\x00\xe8\x07\xc5\xd8\xffV\x89-4z\xb6\x00\xe8t\x9c\x0e\x00\x83\xc4(_^]3\xc0[\x81\xc4\x04\x02\x00\x00\xc3;\xcd\x89l$\x10~<3\xd2\x8bO\x0c\x8bD\x11\x0c\x8dL\x11\x0c\x83\xf8\xfft\x16\x8d,\x80\xc1\xe5\x03+\xe8\xa1\xb0#\xae\x00\x8d\x04h3\xed\x89\x01\xeb\x02\x89)\x8bD$\x10\x8b\x0b@\x83\xc2\x10;\xc1\x89D$\x10|\xc6\xa1\x10q\xdd\x00\x993\xc2+\xc2=)\xe0\x03\x00\x0f\x8c\x80\x00\x00\x00Vj\x01j\x04h\xa45\xa8\x00\xe8\xf1\x9d\x0e\x00\x83\xc4\x10\x83\xf8\x01ti\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14QRUUh\xb05\xa8\x00\xe8\xd1\x8e\x0e\x00\x83\xc4\x14\x8d\x84$\x14\x01\x00\x00\x8dL$\x14h\\\x01\x00\x00PQ\xe8\xe8\x12\x0b\x00Ph\xe8p\x98\x00h\xd0$\xae\x00\xe8G\x8e\x0e\x00Uh\xd0$\xae\x00h\xe0p\x98\x00\xe8(\xc4\xd8\xff\x83\xc4$\x89-4z\xb6\x003\xc0_^][\x81\xc4\x04\x02\x00\x00\xc3V\xe8\x85\x9b\x0e\x00\x83\xc4\x04\xb8\x01\x00\x00\x00_^][\x81\xc4\x04\x02\x00\x00\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x81\xec\x04\x02\x00\x00SUVWh(\x7f\x9a\x00h\xe05\xa8\x00\x8b\xf1h\xa0}\x98\x00\xe8 \xff\n'

最难的部分不是更改文件,而是要知道代码是什么:

NOP = ???
OFFSET = 0x0045b82c

with open('some.exe', 'r+b') as victim:
    victim.seek(OFFSET)
    victim.write(NOP * 2)

我记得有一本书涵盖了这些topics@AlexWei我找到了那本书。非常感谢。数字
0x7d
b'\x7d'
的字节相同。如果有多个字节,则可能需要考虑字节的顺序。@ethan我如何转换?我走得太远了。如果我有0x0,我会使用
b'\x\\\'
null
字节(
0x00
)指定为
b'\x00'
。当我尝试使用不同的偏移量
offset=0xcba67 new=0x7d\0xcba67 0x75 0x7d并将open('test3.exe',r+b')指定为牺牲品:牺牲品。seek(offset)牺牲品。write(new)
我得到了
回溯(最近一次调用):文件“readtest.py”,第8行,在受害者中。write(new)TypeError:“int”不支持缓冲区接口
@José:您需要将这些十六进制数转换为字节。另外,阅读注释中的代码非常困难,请将代码片段添加到您的问题中。我已经更新了我的问题。我想我只需要转换要写入的值就可以了?@José:正如我在回答中所说的,困难的部分不在于进行更改,而在于知道要进行什么更改:确切地说是哪个偏移量,确切地说是哪个字节要写入;这样很容易把文件搞得一团糟。
b'Wf93\x8b\xe9\x89t$\x10u\x05\xe8\x83\'\x00\x00f\x81{\x02\xd3\x07sP\xa1\xe4\xf2\x9c\x00\x8b\x15\xa8#\xae\x00\x8d\x0c\xc0\xc1\xe1\x04\x03\xc8\x8d\x84J\x80\x00\x00\x00\x8b\x8cJ\x80\x00\x00\x00;\xcet+\x8b\t\x89\r\xa45\xa8\x00\x890\xa1\xe4\xf2\x9c\x00\x8d\x14\xc0\xc1\xe2\x04\x03\xd0\xa1\xa8#\xae\x00\x8d\x0cPQ\xe8A\xfb\xcd\xff\x83\xc4\x04\x89pij\xffh\xd3\x07\x00\x00j\x06j\x01\x8dL$,\xe8\xc7\xe6\xce\xff\x8b\x08\x8bP\x04\x89L$\x14f\x8bD$\x16f;C\x02\x89T$\x18\x0f\x85\xa4\x00\x00\x00f;\x0b\x0f\x85\x9b\x00\x00\x00\xa1\xa45\xa8\x00\x83\xf8\xff\x0f\x84\x8d\x00\x00\x00\x8b\x15\xb0#\xae\x00\x8d\x0c\x80\xc1\xe1\x03+\xc8\xa1\xe4\xf2\x9c\x00\x8d\x0cJ\x8d\x14\xc0\xc1\xe2\x04\x03\xd0\xa1\xa8#\xae\x00\x89\x8cP\x80\x00\x00\x00\xa1\xe4\xf2\x9c\x00\x8b\x15\xa8#\xae\x00\x8d\x0c\xc0\xc1\xe1\x04\x03\xc8\x8d4JV\xe8\xae\xfa\xcd\xff\x8b\x8e\x80\x00\x00\x00\x83\xc4\x04\x89Hi\xa1\xa45\xa8\x00\xb9\x90_\x01\x00\x8d\x14\x80\xc1\xe2\x03+\xd0\xa1\xb0#\xae\x00\x89LP<\xa1\xa45\xa8\x00\x8d\x14\x80\xc1\xe2\x03+\xd0\xa1\xb0#\xae\x00\x89LP@\xc7\x05\xa45\xa8\x00\xff\xff\xff\xff\x0f\xbf\x03\x99\xb9\x1e\x00\x00\x00\xf7\xf9\x85\xd2\x0f\x85\xb2\x00\x00\x00\x8b}\x00\x85\xff\x0f\x84\xa7\x00\x00\x00\x8bE\x043\xf6\x85\xc0\x0f\x8e\x9a\x00\x00\x00\x8b\x13\x8bC\x04\x89T$\x14f\x8bT$\x16\x89D$\x183\xc0\x8d\x0c@\x8dD\x8f\x04f\x8bL\x8f\x06f;\xd1w\x15r\'f\x8b\\$\x143\xc9f;\x18\x0f\x9f\xc1\x8b\xc1\x85\xc0t\x14\x8bD$\x10\x8bM\x04@F\x89D$\x10\x0f\xbf\xc6;\xc1|\xc6\x8bD$\x10f\x85\xc0tC\x0f\xbf\xd0\x8bE\x04;\xd0}\x1d\x8d\x0cR+\xc2\xc1\xe1\x02H\x8d\x04@\x8d4\x87\x8b\xc1\xc1\xe9\x02\xf3\xa5\x8b\xc8\x83\xe1\x03\xf3\xa4\x8bE\x04\x8bM\x00+\xc2h\x80\xe3\x85\x00j\x0cPQ\x89E\x04\xe8\x08\x99\x0e\x00\x83\xc4\x10_^][\x83\xc4\x14\xc2\x04\x00\x90\x90\x90\x90\x90\x90\x90\x90\x81\xec\x04\x02\x00\x00SUVWh(\xf9\x98\x00h\xe05\xa8\x00\x8b\xf9h\xa0}\x98\x00\xe8\x80\x03\x0b\x00\x83\xc4\x08P\xe8\x97\xa0\x0e\x00\x8b\xf0\x83\xc4\x08\x85\xf6\x0f\x84"\x03\x00\x00V\x8do\x08j\x01j\x04U\xe8z\xa1\x0e\x00\x83\xc4\x10\x83\xf8\x01tv\x8dD$\x14\x8d\x8c$\x14\x01\x00\x00PQj\x00j\x00h\xb05\xa8\x00\xe8X\x92\x0e\x00\x83\xc4\x14\x8dT$\x14\x8d\x84$\x14\x01\x00\x00h\xf2\x00\x00\x00RP\xe8o\x16\x0b\x00Ph\xe8p\x98\x00h\xd0$\xae\x00\xe8\xce\x91\x0e\x00j\x00h\xd0$\xae\x00h\xe0p\x98\x00\xe8\xae\xc7\xd8\xffV\xc7\x054z\xb6\x00\x00\x00\x00\x00\xe8\x17\x9f\x0e\x00\x83\xc4(3\xc0_^][\x81\xc4\x04\x02\x00\x00\xc3V\x8d_\x04j\x01j\x04S\xe8\xee\xa0\x0e\x00\x83\xc4\x10\x83\xf8\x01t5\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14QRj\x00j\x00h\xb05\xa8\x00\xe8\xcc\x91\x0e\x00\x83\xc4\x14\x8d\x84$\x14\x01\x00\x00\x8dL$\x14h\xf9\x00\x00\x00PQ\xe9o\xff\xff\xff\x8bE\x003\xed;\xc5tG\x8d\x14@\xc1\xe2\x02R\xe8\xe4\x92\x0e\x00\x83\xc4\x04;\xc5\x89\x07u2\x8d\x84$\x14\x01\x00\x00\x8dL$\x14PQUUh\xb05\xa8\x00\xe8{\x91\x0e\x00\x83\xc4\x14\x8d\x94$\x14\x01\x00\x00\x8dD$\x14h\x05\x01\x00\x00R\xe9\xc6\x01\x00\x00\x8b\x03;\xc5tH\x8b\x0fVPj\x0cQ\xe8O\xa0\x0e\x00\x8b\x0b\x83\xc4\x10;\xc1t3\x8d\x94$\x14\x01\x00\x00\x8dD$\x14RPUUh\xb05\xa8\x00\xe8.\x91\x0e\x00\x83\xc4\x14\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14h\x13\x01\x00\x00QR\xe9y\x01\x00\x00V\x8do\x14j\x01j\x04U\xe8\x05\xa0\x0e\x00\x83\xc4\x10\x83\xf8\x01t4\x8d\x84$\x14\x01\x00\x00\x8dL$\x14PQj\x00j\x00h\xb05\xa8\x00\xe8\xe3\x90\x0e\x00\x83\xc4\x14\x8d\x94$\x14\x01\x00\x00\x8dD$\x14h\x1d\x01\x00\x00R\xe9\x86\xfe\xff\xffV\x8d_\x10j\x01j\x04S\xe8\xbb\x9f\x0e\x00\x83\xc4\x10\x83\xf8\x01t5\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14QRj\x00j\x00h\xb05\xa8\x00\xe8\x99\x90\x0e\x00\x83\xc4\x14\x8d\x84$\x14\x01\x00\x00\x8dL$\x14h$\x01\x00\x00PQ\xe9<\xfe\xff\xffVj\x01\x8dW\x18j\x01R\xe8p\x9f\x0e\x00\x83\xc4\x10\x83\xf8\x01t4\x8d\x84$\x14\x01\x00\x00\x8dL$\x14PQj\x00j\x00h\xb05\xa8\x00\xe8N\x90\x0e\x00\x83\xc4\x14\x8d\x94$\x14\x01\x00\x00\x8dD$\x14h+\x01\x00\x00R\xe9\xf1\xfd\xff\xff\x8bE\x003\xed;\xc5tC\xc1\xe0\x04P\xe8j\x91\x0e\x00\x83\xc4\x04;\xc5\x89G\x0cu0\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14QRUUh\xb05\xa8\x00\xe8\x00\x90\x0e\x00\x83\xc4\x14\x8d\x84$\x14\x01\x00\x00\x8dL$\x14h7\x01\x00\x00PQ\xebN\x8b\x03;\xc5\x0f\x84\xc9\x00\x00\x00\x8bW\x0cVPj\x10R\xe8\xd1\x9e\x0e\x00\x8b\x0b\x83\xc4\x10;\xc1to\x8d\x84$\x14\x01\x00\x00\x8dL$\x14PQUUh\xb05\xa8\x00\xe8\xb0\x8f\x0e\x00\x83\xc4\x14\x8d\x94$\x14\x01\x00\x00\x8dD$\x14hE\x01\x00\x00RP\xe8\xc7\x13\x0b\x00Ph\xe8p\x98\x00h\xd0$\xae\x00\xe8&\x8f\x0e\x00Uh\xd0$\xae\x00h\xe0p\x98\x00\xe8\x07\xc5\xd8\xffV\x89-4z\xb6\x00\xe8t\x9c\x0e\x00\x83\xc4(_^]3\xc0[\x81\xc4\x04\x02\x00\x00\xc3;\xcd\x89l$\x10~<3\xd2\x8bO\x0c\x8bD\x11\x0c\x8dL\x11\x0c\x83\xf8\xfft\x16\x8d,\x80\xc1\xe5\x03+\xe8\xa1\xb0#\xae\x00\x8d\x04h3\xed\x89\x01\xeb\x02\x89)\x8bD$\x10\x8b\x0b@\x83\xc2\x10;\xc1\x89D$\x10|\xc6\xa1\x10q\xdd\x00\x993\xc2+\xc2=)\xe0\x03\x00\x0f\x8c\x80\x00\x00\x00Vj\x01j\x04h\xa45\xa8\x00\xe8\xf1\x9d\x0e\x00\x83\xc4\x10\x83\xf8\x01ti\x8d\x8c$\x14\x01\x00\x00\x8dT$\x14QRUUh\xb05\xa8\x00\xe8\xd1\x8e\x0e\x00\x83\xc4\x14\x8d\x84$\x14\x01\x00\x00\x8dL$\x14h\\\x01\x00\x00PQ\xe8\xe8\x12\x0b\x00Ph\xe8p\x98\x00h\xd0$\xae\x00\xe8G\x8e\x0e\x00Uh\xd0$\xae\x00h\xe0p\x98\x00\xe8(\xc4\xd8\xff\x83\xc4$\x89-4z\xb6\x003\xc0_^][\x81\xc4\x04\x02\x00\x00\xc3V\xe8\x85\x9b\x0e\x00\x83\xc4\x04\xb8\x01\x00\x00\x00_^][\x81\xc4\x04\x02\x00\x00\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x81\xec\x04\x02\x00\x00SUVWh(\x7f\x9a\x00h\xe05\xa8\x00\x8b\xf1h\xa0}\x98\x00\xe8 \xff\n'
offset1 = 0x472077
offset2 = 0x472078
offset3 = 0x472079
offset4 = 0x47208a
offset5 = 0x47208b
offset6 = 0x47208c

newvalue1 = b'\xe9'
newvalue2 = b'\xe9'
newvalue3 = b'\x00'
newvalue4 = b'\x00'
newvalue5 = b'\x00'
newvalue6 = b'\x90'

#originals
#offset old new
#0x472077 0xf 0xe9 
#0x472078 0x85 0xe9 
#0x472079 0xe8 0x0 
#0x47208a 0x0 0x0 
#0x47208b 0x0 0x0 
#0x47208c 0x0 0x90

with open('test.exe', 'r+b') as victim:
    victim.seek(offset1)
    victim.write(newvalue1)
    victim.seek(offset2)
    victim.write(newvalue2)
    victim.seek(offset3)
    victim.write(newvalue3)
    victim.seek(offset4)
    victim.write(newvalue4)
    victim.seek(offset5)
    victim.write(newvalue5)
    victim.seek(offset6)
    victim.write(newvalue6)
NOP = ???
OFFSET = 0x0045b82c

with open('some.exe', 'r+b') as victim:
    victim.seek(OFFSET)
    victim.write(NOP * 2)