#dll #injector #dll-injection #no-std #windows

no-std inject-lib

使用 Rust 编写,依赖最少,用于 Windows DLL 注入的库

10 个不稳定版本 (3 个破坏性更新)

0.3.3 2022年12月23日
0.3.2 2022年9月2日
0.3.1 2022年8月21日
0.3.0 2022年7月26日
0.0.4 2022年3月29日

#267 in Windows APIs

每月下载量 33 次

LGPL-2.1-only OR MIT

135KB
2.5K SLoC

此crate提供将DLL注入其他进程的功能。crate的大部分功能目前可通过[Injector]类访问。

您需要提供pid和一个要注入的dll。此crate将为您完成剩余的工作。

主要关注点始终是可靠地执行注入。如果您需要在32位下编译此库的同时将64位应用程序注入,请启用“x86tox64”功能。请注意,该功能使用位于ntdll.dll中的“非官方”API。Windows不保证技术兼容性。

如果您有任何关于改进此crate对外API的建议,请创建问题或PR。我还没有确定是否喜欢这种设计。

可能不会提供Linux支持。这非常困难且与平台相关,因为

  1. 我们需要将原始机器代码/shellcode写入目标进程。
  2. 然后它有必要的代码来加载.so文件
  3. 我们需要以某种方式重定向目标程序的执行,以执行我们的代码
  4. 我们需要这样做,而不破坏程序代码的任何部分
  5. 我们需要返回操作之前的确切状态,因为其他程序可能需要它

如果这个库应该是有用的,我希望不需要以root权限运行它。不幸的是,某些步骤涉及调用ptrace。如果这不是您要跟踪的进程的父进程,则对命令的访问受限。这些要求意味着我们只能将so文件注入到由这个库本身创建的进程。

依赖

~0.6–1.1MB
~17K SLoC