python3对.net二进制文件进行资源替换
程序员文章站
2022-05-28 11:53:23
...
需求:
需要对 .net 编译的二进制文件中的资源中字符串进行替换。
环境:python3.6.5
核心代码:
f = open("C:\Program Files (x86)\xxx\xxx.exe","r+b")
s=f.read()
s=s.replace(b'hello', b'test1')
# 中文
s=s.replace('原来'.encode(), '目标'.encode())
f.write(s)
f.close()
如果直接使用上面替换可以发现,替换后的文件是无法启动的,因为被替换的字符串有可能说路径。
使用dnSpy去查看可以找到一些规律:
把找到的资源进行预处理下,最终结果如下:
f = open("C:\Program Files (x86)\xxx\xxx.exe","r+b")
s = f.read()
src = '中文三'.encode()
dst = '我测试'.encode()
print(type(s))
postions = []
for i in nextIndex(src, s):
pre1_value = s[i-1]
print('pre=>', pre1_value)
# if pre1_value != 76 or pre1_value != 0 or pre1_value != 24:
if pre1_value == 21 or pre1_value == 24 or pre1_value == 0:
postions.append(i)
# exit()
for i in postions:
f.seek(i)
f.write(dst)
print('result==>', (s[i-1]))
f.close()