Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CsWhispers — Генератор исходного кода для добавления методов D/Invoke и непрямых системных вызовов в проект C#. | Kitploit
Инструменты/GitHubGitHub/rasta-mouse/cswhispers
Обход IDS/IPSПост-эксплуатацияТестирование на ПроникновениеУтилиты и фреймворкиRed TeamingРазработка Полезной Нагрузки
GitHubrasta-mouse/cswhispers

CsWhispers

Генератор исходного кода для добавления методов D/Invoke и непрямых системных вызовов в проект C#.

Репозиторий
193292 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CsWhispers

Генератор исходного кода для добавления методов D/Invoke и косвенных системных вызовов в проект C#.

Быстрый старт

Добавьте последний пакет 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 и любые вспомогательные структуры/перечисления, которые вы хотите включить в свой проект. Каждый элемент должен находиться на отдельной строке, например:

root@kitploit:~
NtOpenProcess

HANDLE
NTSTATUS
CLIENT_ID
UNICODE_STRING
OBJECT_ATTRIBUTES

PWSTR
PCWSTR

Полный список поддерживаемых API см. в вики-разделе проекта.

Глобальные пространства имён добавляются автоматически, чтобы код оставался чистым.

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 при каждой сборке.
  • Добавить дополнительные параметры конфигурации для выбора между прямыми и косвенными системными вызовами.
  • Неявно добавлять структуры/перечисления для API без необходимости объявлять их в CsWhispers.txt.

Благодарности

Этот проект был вдохновлён предыдущими версиями SysWhipsers и особенно SharpWhispers. Так что снимаем шляпу перед @Jackson_T, @KlezVirus, @d_glenx и всеми остальными, кто внёс вклад в виде кода и/или идей.

Скачать инструмент