Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CsWhispers — C# プロジェクトに D/Invoke と間接システムコールメソッドを追加するためのソースジェネレーター。 | Kitploit
ツール/GitHubGitHub/rasta-mouse/cswhispers
IDS/IPS回避ポストエクスプロイトペネトレーションテストユーティリティとフレームワークレッドチーミングペイロード開発
GitHubrasta-mouse/cswhispers

CsWhispers

C# プロジェクトに D/Invoke と間接システムコールメソッドを追加するためのソースジェネレーター。

リポジトリを見る
193292年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CsWhispers

C# プロジェクトに D/Invoke と間接システムコールのメソッドを追加するソース ジェネレーター。

クイックスタート

最新の NuGet パッケージをプロジェクトに追加し、unsafe コードを許可します。

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 と、それを補完する構造体/列挙型を追加します。それぞれを 1 行ずつ記述する必要があります。例:

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();
    }
}

TODO

  • 32 ビット サポートを追加する。
  • ビルドごとに API ハッシュをランダム化する。
  • 直接および間接 syscall を選択できる追加の構成オプションを追加する。
  • CsWhispers.txt で宣言しなくても API の構造体/列挙型を暗黙的に追加する。

謝辞

このプロジェクトは、特に SysWhipsers と SharpWhispers の以前のバージョンに触発されています。@Jackson_T、@KlezVirus、@d_glenx、そしてコードやアイデアを提供してくれたすべての人々に敬意を表します。

ツールをダウンロード