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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CsWhispers — 源生成器,用于向 C# 项目添加 D/Invoke 和间接系统调用方法。 | Kitploit
工具/GitHubGitHub/rasta-mouse/cswhispers
IDS/IPS规避后渗透利用渗透测试实用工具与框架红队Payload 开发
GitHubrasta-mouse/cswhispers

CsWhispers

源生成器,用于向 C# 项目添加 D/Invoke 和间接系统调用方法。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CsWhispers

用于向 C# 项目添加 D/Invoke 和间接系统调用方法的源生成器。

快速开始

将最新的 NuGet 包添加到你的项目,并允许不安全代码。

root@kitploit:~
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net481</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <LangVersion>12</LangVersion>
    </PropertyGroup>

    <!-- CsWhispers package -->
    <ItemGroup>
      <PackageReference Include="CsWhispers" Version="0.0.3" />
    </ItemGroup>

    <!-- Allow unsafe code -->
    <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
      <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    </PropertyGroup>

    <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
      <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    </PropertyGroup>

</Project>

在你的项目中创建一个名为 CsWhispers.txt 的文件,并将其生成操作属性设置为 AdditionalFiles。

root@kitploit:~
<ItemGroup>
  <None Remove="CsWhispers.txt" />
  <AdditionalFiles Include="CsWhispers.txt" />
</ItemGroup>

添加每个要包含在项目中的 NT API 以及任何支持的 struct/enum。每一项必须单独占一行,例如:

root@kitploit:~
NtOpenProcess

HANDLE
NTSTATUS
CLIENT_ID
UNICODE_STRING
OBJECT_ATTRIBUTES

PWSTR
PCWSTR

有关受支持 API 的完整列表,请参阅项目 Wiki。

自动添加全局命名空间,以使代码整洁。

root@kitploit:~
public static unsafe void Main()
{
    // use self as example
    using var self = Process.GetCurrentProcess();
        
    HANDLE hProcess;
    OBJECT_ATTRIBUTES oa;
    CLIENT_ID cid = new()
    {
        UniqueProcess = new HANDLE((IntPtr)self.Id)
    };

    var status = NtOpenProcess(
        &hProcess,
        PROCESS_ALL_ACCESS,
        &oa,
        &cid);

    Console.WriteLine("Status: {0}", status.SeverityCode);
    Console.WriteLine("HANDLE: 0x{0:X}", hProcess.Value.ToInt64());
}

D/Invoke

CsWhispers 包含一个精简版的 D/Invoke,因此你也可以调用 Generic.GetLibraryAddress、Generic.DynamicFunctionInvoke 等。

扩展

所有生成的代码都会进入一个分部类 CsWhispers.Syscalls,你可以扩展该类来添加自己的 API。例如,创建 MyAPIs.cs 并添加:

root@kitploit:~
namespace CsWhispers;

public static partial class Syscalls
{
    public static NTSTATUS NtCreateThreadEx()
    {
        // whatever
        return new NTSTATUS(0);
    }
}

这样就可以在主代码中直接调用,而无需添加任何额外的 using 语句。

root@kitploit:~
namespace ConsoleApp1;

internal static class Program
{
    public static void Main()
    {
        var status = NtCreateThreadEx();
    }
}

待办事项

  • 添加 32 位支持。
  • 在每次构建时随机化 API 哈希。
  • 添加额外的配置选项,以便在直接和间接系统调用之间进行选择。
  • 隐式添加 API 所需的 struct/enum,而无需在 CsWhispers.txt 中声明它们。

致谢

本项目尤其受到 SysWhipsers 和 SharpWhispers 早期版本的启发。在此向 @Jackson_T、@KlezVirus、@d_glenx 以及所有贡献代码和/或想法的人致敬。

下载工具