微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Nim 在特定地址位置编辑二进制文件?

如何解决如何使用 Nim 在特定地址位置编辑二进制文件?

我试图了解如何使用 Nim 修改 Windows 可执行文件以在文件的特定位置写入 nop。在 Python 中,我按如下方式执行此操作:

    with open('file.exe','r+b') as f:
        f.seek(0x0014bc0f)
        f.write(binascii.unhexlify('9090'))
        f.seek(0x0014bc18)
        f.write(binascii.unhexlify('9090'))

但是在 Nim 中我找不到必要的方法来完成对特定地址的查找以及如何正确输入这些操作码。我对 Nim 很陌生,不同的文件操作可能性有点令人困惑。

解决方法

io 的 docs 非常好,但要让您开始:

  • 打开文件进行读写(相当于'r+')是:
let f = open("file.exe",fmReadWriteExisting)
  • 此处相当于 with,以确保在出现任何错误时关闭文件:
defer: f.close
  • 寻找偏移量(默认为相对于开始的字节):
f.setFilePos(0x014bc0f)
  • 在那个位置写入两个字节 (nop nop)
f.write("\x90\x90")

查看每个 proc 的文档以获取更多选项

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。