Skip to content

2025

IoM进阶系列(1) PELoader&RDI的TLS之殇

从一个崩溃开始的 PE Loader 救赎之旅

本系列文章虽然叫做IoM进阶系列, 但实际与IoM关系不大,只是在开发IoM的过程中遇到的。进阶系列均为解决前无古人的问题、创新等, 本文将从最常用的技术 PE-Loader开始。

如果读者已经熟知PE加载, 那么本文的内容将不会有非常大的革新, 但各位阅读完本文可能也会看到一些新鲜玩意, 聊以慰籍 :)

今年8月, 我们推出了下一代 C2 计划 -- Internal of Malice , 旨在实现一套 post-exploit 基础设施, 在implant的语言选用中, 我们尝试了这两年最火热的红队语言:Rust, 也因为这个选择,在实现过程中遇到了和解决了非常多有意思的问题。

在推出stager 版本之后, 交流群的一位同学贴出了Writing a PE Loader for the Xbox in 2024 这篇文章, 用一种非常粗暴的方式解决了 Rust在使用MSVC编译时引入了TLS(thread-local storage) , 而只常见的PELoader 简单调用 tls callback 无法正常加载 PE 文件的问题, 遂成文。