我希望能够直接从可执行格式(而不是在编译时)重写或重组ELF二进制程序。

我知道的唯一库是elfesteem(在Miasm中使用)。但是,必须有其他人。那么,用于静态修改ELF可执行文件的库或框架是什么?

评论

好读;)

也许有点太客气了,我在这个SE子站点中到处都看到了错误和0xC0000022L。 Anw有没有更好的工具(最好是python)atm? ERESI在接受的答案中建议似乎不再得到积极维护。

据我所知,除此页面中引用的库外,我不知道其他任何库...可能还有其他项目,但与此处列出的那些库相比,它们的功能较弱或使用起来比较隐晦。无论如何,如果您证明我错了,我将非常高兴!

是否有关于如何打开Mism的ELF和修改装配的最小教程?

#1 楼

我只是偶然发现了这个ERESI项目。该项目本身看起来非常雄心勃勃,并且主要支持Intel和Sparc处理器,并且对其他处理器也有一定支持。还有很多工具可能会派上用场。它确实有一个特定的工具听起来像是否完全符合要求,还有很多其他相关工具:


Evarista:正在进行的静态二进制程序转换器
完全用ERESI语言实现。


Patchelf可能会方便地修改elf中指定的链接器或rpath:


PatchELF是一个用于修改ELF可执行文件的动态链接器和RPATH的小实用程序。此外,还有关于injectso的演示,它似乎与elf二进制文件的静态和动态修补有关。诚然,静态二进制文件的覆盖范围是有限的,但这是可以预料的,因为它只是作为一个库插入程序会更加复杂。因此,您可能可以将Evarista用作指南,并使用自己的库编写更符合您目标的东西。


libelfsh:ELFsh,Kernsh,
使用的二进制操作库E2dbg和Etrace。

libe2dbg:在
debuggee程序中运行的嵌入式调试器库。

libasm:智能拆卸引擎(x86,sparc,mips, arm)
,它为指令及其操作数提供了语法和语义属性。

libmjollnir:控制流分析和指纹识别库。

librevm:运行时ERESI虚拟机,它包含框架的中央运行时环境实现。

libstderesi:标准ERESI库,包含多个
100个内置分析命令。

libaspect:方面库使用其API来反映ERESI语言中的代码和数据结构。

libedfmt:ERESI调试格式库,可以转换
dwarf和stabs调试格式转换为ERESI调试格式。

libetrace:Etrace所基于的ERESI跟踪器库。

libkernsh:Kernnel shell库是Kernsh所基于的内核可访问性
库。

libgdbwrap:GDB串行协议库,出于兼容性考虑
在ERESI和GDB / VMware / Bochs / Qemu / OpenOCD之间。


#2 楼

我认为您最好的选择是采用低级ELF库并编写一个小程序来完成您想要的事情。我喜欢ELF工具链项目。我发现该团队整理的测试和文档非常好。无论最终使用哪种工具,您都绝对想阅读有关为Linux创建真正的青少年ELF可执行文件的旋风教程,该教程讨论了如何将ELF可执行文件修改得尽可能小(您的目的可能有所不同,但有很多东西一般课程)。

评论


+1可链接到精彩的“ teensy ELF”教程。几年前,我看到了这个,却忘记了。

–st01
4月22日9:58