如何仅使用python代码在二进制文件中查找地址?
例如,我有二进制文件 1) 如何查找这一系列字节的地址:如何仅使用python代码在二进制文件中查找地址?,python,binary,offset,Python,Binary,Offset,例如,我有二进制文件 1) 如何查找这一系列字节的地址:48 8B 45 A8 48 8D 1C 02 48 8B 45 C8,结果需要是0x6B0C67 2) 如何找出地址中的12个字节0x6B0C67?结果需要是48 8B 45 A8 48 8D 1C 02 48 8B 45 C8 3) 如何找到特定字符串的地址调用?例如i+1==功能[i]。位于0x6FC272中的索引?结果需要是0x4022F6 没有打开的Ida我怎么能找到所有这些?仅使用python/c代码 1)您的文件是否足够小,可
48 8B 45 A8 48 8D 1C 02 48 8B 45 C8
,结果需要是0x6B0C67
2) 如何找出地址中的12个字节0x6B0C67
?结果需要是48 8B 45 A8 48 8D 1C 02 48 8B 45 C8
3) 如何找到特定字符串的地址调用?例如i+1==功能[i]。位于0x6FC272
中的索引?结果需要是0x4022F6
没有打开的Ida我怎么能找到所有这些?仅使用python/c代码
1)您的文件是否足够小,可以加载到内存中?那就简单到
offset = open(file, 'rb').read().find(
bytes.fromhex("48 8B 45 A8 48 8D 1C 02 48 8B 45 C8")
)
# offset will be -1 if not found
如果没有,你需要分块阅读
2)做什么
恐怕我不理解3)中的问题。这个问题似乎是关于linux可执行文件的问题,该文件应该足够小,可以加载到内存中。@ChristophBurschka 1+2不工作,您可以从偏移量0x0开始创建二进制文件,这不正确,Ida从另一个偏移量加载它,您能否详细介绍一下lda的功能以及文件偏移量和“地址”之间的关系?听起来除了读取文件的原始字节之外,您还需要一些更高级的反汇编工具?
with open(file, 'rb') as stream:
stream.seek(0x6b0c67)
data = stream.read(12)