Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CsWhispers — Générateur de source pour ajouter les méthodes D/Invoke et les syscalls indirects à un projet C#. | Kitploit
Outils/GitHubGitHub/rasta-mouse/cswhispers
Évasion IDS/IPSPost-ExploitationTests d'IntrusionUtilitaires et FrameworksRed TeamingDéveloppement de Charges Utiles
GitHubrasta-mouse/cswhispers

CsWhispers

Générateur de source pour ajouter les méthodes D/Invoke et les syscalls indirects à un projet C#.

Voir le dépôt
19329il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CsWhispers

Générateur de source pour ajouter des méthodes D/Invoke et d'appels système indirects à un projet C#.

Démarrage rapide

Ajoutez le dernier package NuGet à votre projet et autorisez le code non sécurisé.

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>

Créez un fichier nommé CsWhispers.txt dans votre projet et définissez ses propriétés d'action de build sur AdditionalFiles.

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

Ajoutez chaque API NT et toute structure/énumération associée que vous souhaitez inclure dans votre projet. Chacune doit être sur sa propre ligne, par exemple :

root@kitploit:~
NtOpenProcess

HANDLE
NTSTATUS
CLIENT_ID
UNICODE_STRING
OBJECT_ATTRIBUTES

PWSTR
PCWSTR

Consultez le wiki du projet pour une liste complète des API prises en charge.

Les espaces de noms globaux sont automatiquement ajoutés pour permettre un code propre.

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 inclut une version minimaliste de D/Invoke, vous pouvez donc également appeler Generic.GetLibraryAddress, Generic.DynamicFunctionInvoke, etc.

Extension

Tout le code généré va dans une classe partielle CsWhispers.Syscalls, que vous pouvez étendre pour ajouter vos propres API. Par exemple, créez MyAPIs.cs et ajoutez :

root@kitploit:~
namespace CsWhispers;

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

Cela peut ensuite être appelé dans votre code principal sans avoir à ajouter de directives using supplémentaires.

root@kitploit:~
namespace ConsoleApp1;

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

À faire

  • Ajouter la prise en charge 32 bits.
  • Randomiser les hachages d'API à chaque build.
  • Ajouter des options de configuration supplémentaires pour choisir entre les appels système directs et indirects.
  • Ajouter implicitement les structures/énumérations pour les API sans avoir à les déclarer dans CsWhispers.txt.

Remerciements

Ce projet s'est inspiré des versions précédentes de SysWhispers et SharpWhispers en particulier. Donc chapeau à @Jackson_T, @KlezVirus, @d_glenx, et à tous ceux qui ont contribué du code et/ou des idées.

Télécharger l’outil