python - 使用 Python 在 PE 文件中搜索字符串
问题描述
我正在使用 Python 3.7 覆盖 PE 文件的资源部分中的一些数据。资源部分字符串表有一个包含 1024 个 A 的字符串。当我在十六进制编辑器中打开它时,我看到所有的 A..
00 00 28 08 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00 41 00
我用它来查找文件中的 A。
if b'\x00A'*1024 in file:
s=file.replace(b'\x00A'*1024, message)
然而,这最终失败了。如果我将 1024 更改为 1023,它可以工作,但最终会在字符串表的开头留下一个“A”。因此,如果我想用 B 覆盖所有 A,它最终会变成..
ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...
我确定这是因为我只搜索 1023 并且它留下了 A。但我只是不确定为什么它找不到它。我复制了 A 的十六进制,它包含 1024 41 和 1024 00,所以它就在那里。
更新:将 if 语句更改为:
if b'A' + b'\x00A'*2087 in file:
似乎它找到了第一个 A。感谢@Kevin
解决方案
PE 文件中的字节序列以 开头A\x00
,但您正在搜索\x00A
,因此第一个 A 不匹配。将您的测试字符串更改为b'A\x00'*1024
.
推荐阅读
- avplayerview - 自定义 AVPlayerVIew:你知道默认使用哪个初始化器吗?
- r - 从字符串中删除初始(匹配)模式
- php - Laravel Eloquent - 忽略子句的地方
- ios - 发送推送以唤醒带有警报横幅(和声音)的应用程序的正确方法
- python - 当我明确定义它时,为什么我的程序返回“NoneType”对象不可下标错误?
- jquery - 具有动态值的 Jquery 选择器
- c# - 无法导航到 .Net Core 3.1 应用程序中的页面
- c++ - 模板类的非模板友元是否被实例化?
- php - 未定义索引 - 奇怪的行为
- azure - 在 Azure 搜索同义词映射中创建多个规则不起作用