是否有任何方法只使用python库生成ELF binary?
我想使用python库组装下面的文件。
a.s:
line 1 : .global _start
line 2 : _start:
line 3 : push _STRING1
line 4 : push _STRING2
line 5 : call printf
line 6 : _STRING1:
line 7 : .string "gogo"
line 8 : _STRING2:
line 9 : .string "%s"我尝试使用两个python库keystone和pwntool。
但是,它们只支持与程序集命令对应的机器代码字节发射。
(它没有生成由精灵头、节头、.等)
另外,它不支持对外部库信息的处理。(如line 5)
问:我想用python库生成一个完整的ELF二进制a.out。
有什么办法可以做到吗?
发布于 2018-08-12 07:07:08
我想组装下面的文件
请注意,您的程序定义不明确:
printf,但不允许初始化C运行时。(如果您想调用任何libc函数,您应该让_start在crt0.o中定义,您的程序应该从main而不是_start开始)。exit、_exit或执行SYS_exit syscall)。您可以从main返回(libc-提供的_start将为您执行SYS_exit ),但是您不能从_start返回,当然也不能从它的末尾掉到后面的任何代码或数据。回到你最初的问题:“手工组装”ELF文件是可能的--数据就是数据。
然而,这是大量的工作(而且非常没有意义),所以您最好只调用外部汇编程序和链接器。
发布于 2018-08-12 07:27:52
我知道有一个叫做radare2 https://github.com/radare/radare2的强大工具。它还支持python绑定https://github.com/radare/radare2-bindings。
Radare可以用作汇编程序https://radare.gitbooks.io/radare2book/content/tools/rasm2/assemble.html。我还没有测试,但我认为它可以帮助你处理精灵的双星。但是总的来说,你想要做的事情可能需要大量的体力劳动。
https://stackoverflow.com/questions/51799030
复制相似问题