全文字符数:1987

简介

最近在微博上看到一位大 V 介绍 tmp.0ut 网站:这是一本由信息安全和逆向工程圈子的社区玩家无偿撰写的电子杂志(ezine)。我进去翻了翻,觉得非常有意思,于是决定把第五期完整地编译成中文,方便感兴趣的同学阅读。

说明一下这组文章的约定:

  • 每篇都按原文完整内容编译整理(非逐字翻译),尽量保留原作者的叙述、观点归属、代码与技术细节;
  • 所有译文依原站 CC BY-NC-SA 4.0 许可作为改编内容发布,仅供学习交流;
  • 涉及恶意代码、漏洞利用与内核修改的文章仅作安全研究讨论,请勿用于非法用途。

原刊导言译文

原文:Introduction,tmp.0ut Staff(tmp.0ut Volume 5

欢迎来到 tmp.0ut 第五卷!这一期装满了大家“因为觉得好玩”而做出来的酷东西。

保持探索——永远不要停止提问——不要丢掉你的想象力!

Rootkit 竞赛的结果将在近期公布,敬请期待!

本期编辑部成员

原页以 tmpout5-crew.txt 的形式列出了本期成员及其分工:

成员 分工
bane 磁带转录与发行(tape dubber & distributor)
blotter 常驻 DJ 与氛围担当(resident dj & vibe setter)
busescanfly 纸质爱好者(paper enjoyer)
cmex ANSI 艺术家
elfmaster 链接器与加载器爱好者
matheuz rootkit 鉴赏家
netspooky 过时目标文件观察者
qkumba 巫师
rqu 纸质爱好者(paper enthusiast)
sblip 访谈达人(interview extraordinaire)
TMZ 部分加载守护骑士(partial loading paladin)

本期目录(5/2–5/21)

第一篇导读见本页。以下是本卷全部 20 篇文章的目录,点击标题即可阅读:

  1. Doug McIlroy 访谈:Unix、管道与组合式设计:对计算机先驱 Doug McIlroy 的完整访谈,从 echo、sort 与管道,到 Whirlwind、Multics、ELF 与贝尔实验室文化。
  2. 57 字节 x86-64 Linux ELF 的内与外:ELF/程序头字段裁剪、头部重叠,以及用可打印文件名在栈上执行代码的 60 字节构造。
  3. 一个 440 字节的变形 ELF-64 病毒:块内置换思路、4 字节指令约束、免条件跳转的循环与完整汇编清单。
  4. Perl 杂谈:一段会改变自身形态的代码:代码页全文保留与中文注释,展示关键字置换与自改写机制。
  5. 有 XLAT 就够了:数据驱动的解码实验:用 xlatb 替代 XOR 的解码器设计、表变异与 79 字节实现。
  6. 不存在的控制流:用标志、时序与重叠执行承载状态:进位标志存状态、rdtsc 取熵,同一段字节因入口偏移产生不同指令流。
  7. 把 Brainfuck 当作 ROP 编译器:Brainfuck 到 ROP 的执行模型、编译器与运行时完整源码。
  8. 深入理解 Linux 内核如何加载可执行文件:binfmt 处理器顺序、x32 加载谜题与缺失的字节序检查。
  9. 为了乐趣与反取证构造多格式 ELF:ELF32+ELF64 polyglot 的尺寸约束与工具实测。
  10. 用侧信道检测系统调用挂钩:L1 指令缓存指纹、GhostCache 与 l1thography 工具。
  11. 代码虚拟化概览:VM 架构、handler 逆向、污点分析与 LLVM IR 去虚拟化。
  12. halfexec:汇编实现的 x64 ELF Linux 加载器:用户态重建 execve,处理段映射、PT_INTERP、重定位、TLS 与辅助向量。
  13. halfshelf:ELF 头消失后仍然加载:SHELF 静态 PIE、两种元数据编码与头部重建。
  14. phork:把 SHELF 重新打包成单一 ELF:SPACK01!/SHELFBN1 双层格式与自加载存根。
  15. 借助可达性分析实现自解压:用 Java Class-File API 做可达性分析并在返回指令前注入调用。
  16. RDOFF 病毒:重访一种冷门目标文件格式:文本段前置感染与目录遍历逻辑的改编。
  17. BGGP6 回顾:用最少字节呈现数字 6:六项挑战统计、特殊文件类型与最小/最高分榜单。
  18. x86-64 Linux ELF 的细粒度加载时 ASLR:Shiva 模块加载时逐个函数随机化与重链接。
  19. 静态内核补丁再探:bzImage 磁盘级修改与 UEFI/BIOS 双启动路径挂钩。
  20. tmp.0ut 第五期混音带:blotter 制作的混音带与收听入口。

阅读顺序建议

目录中与 ELF 结构相关的几篇可以连起来读:第 2 篇(57 字节 ELF)、第 3 篇(440 字节病毒)与第 8、9 篇(内核如何加载 ELF、polyglot ELF)之间存在明显的关联——57 字节 ELF 和 polyglot ELF 都建立在“内核如何解析 ELF”之上;第 12–14 篇是 TMZ 的三篇连载(halfexec → halfshelf → phork)。其余文章相互独立,可以按兴趣随意阅读。

下一篇(本卷第一篇文章):Doug McIlroy 访谈:Unix、管道与组合式设计