Nim implementation of sRDI

最近笔者因为项目原因需要使用sRDI反射dll注入技术,互联网上搜索了一下发现只有c和golang的相关实现。由于笔者项目使用的nim开发,并不适配我的项目,所以笔者花了点时间将sRDI用nim语言重新实现了一下.

sRDI

sRDI是一个(Shellcode Reflective DLL Injection),它可以将DLL文件转换为位置无关的shellcode。它具有完整的PE加载器功能,支持正确的节权限、TLS回调和健全性检查。可以将其视为一个绑定了打包的DLL的Shellcode PE加载器.

关于sRDI shellcode执行流程大致如下

image-20231019102314985

更多信息请参考sRDI — Shellcode反射式DLL注入技术

nim实现

笔者共实现了两个功能,一是将dll转换为sRDI-shellcode的转换工具,二是一个shellcode的加载器

效果如下

首先需要使用sRDI将dll转换为shellcode bin文件

image-20231018112925920

image-20231018112630021

随后使用loader加载输出的bin文件即可

image-20231018112753881

项目代码已上传到Github

本项目只供研究,学习,交流使用,请勿用于非法用途.