如何捕获本机 Windows .exe 文件中的所有字符串,并稍后使用 C# 将它们替换为其他字符串?
背景:我想创建一个 C# 工具来从简单的 .exe 文件中提取和替换字符串。
这有可能吗?
您需要启动一个 PE/COFF 解析器。如果你的字符串存储在 PE 的资源部分中,那么这很容易。例如,您可以将 exe 作为资源文件加载到 Visual Studio 中,并使用其资源编辑器更改 exe 中的图标和字符串等。另一方面,如果字符串存储在数据部分中或直接存在于机器代码中,则会遇到更复杂的问题。按原样覆盖字符串,使它们保持相同的长度可能会起作用,但是使它们更长会开始移动事物,弄乱重定位和偏移。重写exe确实不是达到你想要的效果的方法。
从我的评论中移出:PE/COFF 是 Windows 程序的 exe 格式。如果您只想编辑资源,则不需要解析器。您可以首先使用带有标志 LOAD_LIBRARY_AS_IMAGE_RESOURCE|LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE 的 LoadLibraryEx() 来加载 exe 以仅使用该资源并使其可写。然后开始查看LoadString()。这些都是本机 API 调用。我真的不知道你在 C# 中是如何做到的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)