Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CsWhispers — Generatore di origine per aggiungere metodi D/Invoke e syscall indirette a un progetto C#. | Kitploit
Strumenti/GitHubGitHub/rasta-mouse/cswhispers
Evasione IDS/IPSPost-ExploitPenetration TestingUtilità e FrameworkRed TeamingSviluppo Payload
GitHubrasta-mouse/cswhispers

CsWhispers

Generatore di origine per aggiungere metodi D/Invoke e syscall indirette a un progetto C#.

Vedi Repository
1932932 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CsWhispers

Source generator to add D/Invoke and indirect syscall methods to a C# project.

Avvio rapido

Aggiungi il pacchetto NuGet più recente al tuo progetto e abilita il codice 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>

Crea un file nel tuo progetto chiamato CsWhispers.txt e imposta le sue proprietà di azione di compilazione su AdditionalFiles.

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

Aggiungi ogni API NT e le eventuali struct/enum di supporto che vuoi includere nel tuo progetto. Ciascuna deve essere sulla propria riga, ad esempio:

root@kitploit:~
NtOpenProcess

HANDLE
NTSTATUS
CLIENT_ID
UNICODE_STRING
OBJECT_ATTRIBUTES

PWSTR
PCWSTR

Consulta la Wiki del progetto per un elenco completo delle API supportate.

Gli spazi dei nomi globali vengono aggiunti automaticamente per consentire un codice pulito.

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 include una versione minimizzata di D/Invoke, quindi puoi anche chiamare Generic.GetLibraryAddress, Generic.DynamicFunctionInvoke, ecc.

Estensione

Tutto il codice generato finisce in una classe parziale CsWhispers.Syscalls, che puoi estendere per aggiungere le tue API. Ad esempio, crea MyAPIs.cs e aggiungi:

root@kitploit:~
namespace CsWhispers;

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

Questo può quindi essere chiamato nel tuo codice principale senza dover aggiungere ulteriori istruzioni using.

root@kitploit:~
namespace ConsoleApp1;

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

TODO

  • Aggiungere il supporto a 32 bit.
  • Randomizzare gli hash delle API a ogni build.
  • Aggiungere ulteriori opzioni di configurazione per scegliere tra syscall dirette e indirette.
  • Aggiungere implicitamente struct/enum per le API senza doverle dichiarare in CsWhispers.txt.

Riconoscimenti

Questo progetto è stato ispirato dalle versioni precedenti di SysWhispers e SharpWhispers in particolare. Quindi tanto di cappello a @Jackson_T, @KlezVirus, @d_glenx, e a tutti gli altri che hanno contribuito con codice e/o idee.

Scarica lo strumento