Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
RustChain — 使用ROP和硬件断点隐藏内存痕迹。 | Kitploit
工具/GitHubGitHub/kudaes/rustchain
内存取证漏洞利用红队Payload 开发
GitHubkudaes/rustchain

RustChain

使用ROP和硬件断点隐藏内存痕迹。

查看仓库
1512032年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

描述

该工具是一个简单的概念验证,演示如何利用ROP链结合硬件断点隐藏内存工件。ROP链会在休眠(即调用Sleep函数时)将主模块内存页的保护属性更改为N/A。有关此内存扫描逃避技术的更详细信息,请查看原始项目 Gargoyle。仅限 x64。

其思路是在 kernel32!Sleep 上设置一个硬件断点,并设置一个新的顶层异常过滤器来处理异常。当 Sleep 被调用时,之前设置的异常过滤器函数被触发,使我们能够在无需使用经典函数钩子的情况下调用 ROP 链。这样,我们就避免了在与已知 DLL 相关的进程中留下奇怪且不寻常的私有内存区域。

ROP 链仅需调用 VirtualProtect() 将当前内存页设置为 N/A,然后调用 SleepEx,最后恢复 RX 内存保护。

过程概述如下:

  • 我们使用 SetUnhandledExceptionFilter 设置一个新的异常过滤器函数。
  • 使用 SetThreadContext 在 kernel32!Sleep 上设置硬件断点。
  • 调用 Sleep,触发硬件断点,将执行流引导至我们的异常过滤器函数。
  • 从异常过滤器函数中调用 ROP 链,将当前内存页保护更改为 N/A。然后调用 SleepEx。最后,ROP 链恢复 RX 内存保护,正常执行继续。

该过程无限重复。

如图所示,主模块的内存保护在休眠期间更改为 N/A,这避免了内存扫描寻找具有执行权限的内存页面。

N/A内存保护在休眠期间设置

编译

由于我们使用 LITCRYPT 插件来混淆字符串字面量,因此需要在编译代码前设置环境变量 LITCRYPT_ENCRYPT_KEY:

root@kitploit:~
C:\Users\User\Desktop\RustChain> set LITCRYPT_ENCRYPT_KEY="yoursupersecretkey"

之后,只需编译代码并运行工具:

root@kitploit:~
C:\Users\User\Desktop\RustChain> cargo build
C:\Users\User\Desktop\RustChain\target\debug> rustchain.exe

限制

该工具只是一个概念验证,需要实现一些额外功能才能完全实用。该项目的主要目的是学习如何实现 ROP 链并将其集成到 Rust 中。因此,该工具仅在你按原样使用时才能正常工作,如果尝试其他方式(例如,编译为 DLL 并尝试反射加载和执行),则可能出现故障。

致谢

  • @thefLinkk 及其 DeepSleep 项目启发了我创建此工具。
下载工具