欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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去查看可以找到一些规律:
python3对.net二进制文件进行资源替换

把找到的资源进行预处理下,最终结果如下:

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()
相关标签: python3 python