Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CsWhispers — Generador de código fuente para añadir métodos D/Invoke y syscalls indirectas a un proyecto de C#. | Kitploit
Herramientas/GitHubGitHub/rasta-mouse/cswhispers
Evasión de IDS/IPSPost-ExplotaciónPruebas de PenetraciónUtilidades y FrameworksRed TeamingDesarrollo de Payloads
GitHubrasta-mouse/cswhispers

CsWhispers

Generador de código fuente para añadir métodos D/Invoke y syscalls indirectas a un proyecto de C#.

Ver Repositorio
19329hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CsWhispers

Generador de código fuente para añadir métodos D/Invoke y syscalls indirectas a un proyecto C#.

Inicio rápido

Añade el paquete NuGet más reciente a tu proyecto y habilita el código no seguro.

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 archivo en tu proyecto llamado CsWhispers.txt y establece sus propiedades de acción de compilación en AdditionalFiles.

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

Añade cada API NT y cualquier estructura/enumeración de soporte que quieras incluir en tu proyecto. Cada una debe estar en su propia línea, por ejemplo:

root@kitploit:~
NtOpenProcess

HANDLE
NTSTATUS
CLIENT_ID
UNICODE_STRING
OBJECT_ATTRIBUTES

PWSTR
PCWSTR

Consulta la Wiki del proyecto para obtener una lista completa de las API admitidas.

Los espacios de nombres globales se añaden automáticamente para permitir un código limpio.

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 incluye una versión reducida de D/Invoke, por lo que también puedes invocar Generic.GetLibraryAddress, Generic.DynamicFunctionInvoke, etc.

Extensión

Todo el código generado se coloca en una clase parcial CsWhispers.Syscalls, que puedes extender para añadir tus propias API. Por ejemplo, crea MyAPIs.cs y añade:

root@kitploit:~
namespace CsWhispers;

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

Luego puedes llamarlo desde tu código principal sin tener que añadir directivas using adicionales.

root@kitploit:~
namespace ConsoleApp1;

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

TODO

  • Añadir soporte para 32 bits.
  • Aleatorizar los hashes de las API en cada compilación.
  • Añadir opciones de configuración adicionales para elegir entre syscalls directas e indirectas.
  • Añadir implícitamente structs/enums para las API sin tener que declararlos en CsWhispers.txt.

Agradecimientos

Este proyecto se inspiró en las versiones anteriores de SysWhipsers y SharpWhispers en particular. Así que nos quitamos el sombrero ante @Jackson_T, @KlezVirus, @d_glenx, y todos los demás que han contribuido con código y/o ideas.

Descargar herramienta