【发布时间】:2016-04-30 19:15:08
【问题描述】:
我有一个大学项目,我必须在其中反汇编二进制文件。因此,我尝试了 Capstone。我用 Java 尝试了几个星期,但它没有用,所以从昨天开始我自学了一点 Python。要阅读我尝试过的二进制文件:
file = open('binary_file')
content = file.readlines()
从此链接:Reading Binary File (.out) in Python and disassemble with Capstone 以及从 capstone http://www.capstone-engine.org/lang_python.html 进行反汇编的说明
我有来自在线反汇编程序的解决方案,结果超过 13000 行。当我开始我的时候,我只得到一个(0x1000:sc 0x2b)。我找不到错误,因为在我看来没问题,但我没有任何 Python 或 Capstone 计划。
顺便说一下,Capstone 页面中的测试代码工作正常,所以我认为安装没有问题。
代码:
from capstone import *
file = open('C:/...sth', 'rb')
content = file.read()
ergebnism = open("C:/.../ergebnis.txt", "w")
mi = Cs(CS_ARCH_MIPS, CS_MODE_MIPS32)
for i in mi.disasm(content, 0x1000):
print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
#for (address, size, mnemonic, op_str) in mi.disasm_lite(content,0x1000):
# print("0x%x:\t%s\t%s" %(address, mnemonic, op_str))
ergebnism.write("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
ergebnism.write("\n")
ergebnism.close()
file2 = open('C:/...erdb', 'rb')
content2 = file2.read()
ergebnisp = open("C:/.../ergebnisp.txt", "w")
pp = Cs(CS_ARCH_PPC, CS_MODE_64)
for i in pp.disasm(content, 0x1000):
print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
#for (address, size, mnemonic, op_str) in pp.disasm_lite(content2, 0x1000):
#print("0x%x:\t%s\t%s" %(address, mnemonic, op_str))
ergebnisp.write("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
ergebnisp.write("\n")
ergebnisp.close()
【问题讨论】:
-
是的,真的很棒。谢谢你两次更正我的文字,但我仍然没有回答这个问题,明天我必须发送它。而且我不知道如何接受更正,但这目前真的不符合我的兴趣
标签: python file binary disassembly capstone