首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有任何方法只使用python库生成ELF二进制文件?

是否有任何方法只使用python库生成ELF二进制文件?
EN

Stack Overflow用户
提问于 2018-08-11 11:06:03
回答 2查看 2K关注 0票数 2

是否有任何方法只使用python库生成ELF binary

我想使用python库组装下面的文件。

a.s

代码语言:javascript
复制
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库keystonepwntool

但是,它们只支持与程序集命令对应的机器代码字节发射。

(它没有生成由精灵头、节头、.等)

另外,它不支持对外部库信息的处理。(如line 5)

问:我想用python库生成一个完整的ELF二进制a.out

有什么办法可以做到吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-12 07:07:08

我想组装下面的文件

请注意,您的程序定义不明确:

  • 调用printf,但不允许初始化C运行时。(如果您想调用任何libc函数,您应该让_startcrt0.o中定义,您的程序应该从main而不是_start开始)。
  • 您没有正确地终止程序(不要调用exit_exit或执行SYS_exit syscall)。您可以从main返回(libc-提供的_start将为您执行SYS_exit ),但是您不能从_start返回,当然也不能从它的末尾掉到后面的任何代码或数据。

回到你最初的问题:“手工组装”ELF文件是可能的--数据就是数据。

然而,这是大量的工作(而且非常没有意义),所以您最好只调用外部汇编程序和链接器。

票数 3
EN

Stack Overflow用户

发布于 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。我还没有测试,但我认为它可以帮助你处理精灵的双星。但是总的来说,你想要做的事情可能需要大量的体力劳动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51799030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档