有什么方法可以仅使用python库生成ELF BINARY吗?

时间:2018-08-11 11:06:03

标签: python assembly binary elf

有什么方法可以仅使用python库生成 $db = ConnectionManager::get('default'); $stmt = $db->execute("call mydatasp($paramlist)"); $result = array(); try{ do { $rowset = $stmt->fetchAll('assoc'); $result[]=$rowset; } while($stmt->nextRowset()); } catch(Exception $e){} 吗?

我想使用python库汇编以下文件。

ELF binary

a.s

我试图使用两个python库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" keystone
但是,它们仅支持与汇编命令相对应的机器代码字节发射。
(它没有生成由精灵标题,节标题等组成的pwntool

此外,它不支持处理外部库信息。 (例如ELF binary


问:我想使用python库生成完整的ELF BINARY line 5
有什么可行的方法吗?

2 个答案:

答案 0 :(得分:3)

  

我要汇编以下文件

请注意,您的程序是 ill 定义的:

  • 您调用了printf,但是您不允许初始化C运行时。 (如果要调用任何libc函数,则应让_startcrt0.o中定义,并且程序应从main而不是_start开始)。 / p>

  • 您没有正确终止程序(不要调用exit_exit或执行SYS_exit syscall)。您可以从main返回(libc提供的_start然后为您执行SYS_exit),但是您必须_start返回,并且当然,它不会从结尾处落到紧随其后的任何代码或数据上。

回到您的原始问题:可以“手工组装” ELF文件-数据就是数据。

但是,这是一项很多的工作(而且是毫无意义的工作),因此,只需调用外部汇编器和链接器,您就会变得更好。

答案 1 :(得分:0)

我知道一个称为radare2 https://github.com/radare/radare2的强大工具。 它还支持python绑定https://github.com/radare/radare2-bindings

Radare可用作汇编器https://radare.gitbooks.io/radare2book/content/tools/rasm2/assemble.html。我尚未测试,但我认为它可以帮助您使用elf二进制文件。 但总的来说,您要尝试执行的操作可能需要大量的体力劳动。