tinyelf是用于 生成amd64 Linux下最小elf可执行文件 的程序(通过简单修改代码,你还可以生成更小的i386可执行文件)。全C实现,代码量不超过60行(包括空行及注释)。
(代码中给了三个示例:死循环,正常退出,输出字符串)
首先需要知道 生成程序 的机器码。替换代码中的code数组。如果有全局常量数据,将code替换为 二进制数据+机器码,并将E_INCODE宏替换为数据段长度。编译代码,生成的output文件即最小elf可执行文件。
本程序假设可执行文件只需要一个代码段(需要数据段按前述步骤加入代码之前)。因此生成的elf文件只有一个elf头(64字节),一个segment(52字节)和代码数据(大小任意)。