Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CsWhispers — C# 프로젝트에 D/Invoke 및 간접 syscall 메서드를 추가하는 소스 생성기. | Kitploit
도구/GitHubGitHub/rasta-mouse/cswhispers
IDS/IPS EvasionPost-ExploitationPenetration TestingUtilities & FrameworksRed TeamingPayload Development
GitHubrasta-mouse/cswhispers

CsWhispers

C# 프로젝트에 D/Invoke 및 간접 syscall 메서드를 추가하는 소스 생성기.

저장소 보기
193292년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CsWhispers

C# 프로젝트에 D/Invoke 및 간접 syscall 메서드를 추가하는 소스 생성기입니다.

빠른 시작

최신 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 및 지원 구조체/열거형을 추가하세요. 각 항목은 한 줄에 하나씩이어야 합니다. 예를 들면:

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 등을 호출할 수도 있습니다.

확장

생성된 모든 코드는 partial 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과 간접 syscall 중에서 선택할 수 있는 추가 구성 옵션을 추가합니다.
  • CsWhispers.txt에 선언하지 않고도 API에 대한 구조체/열거형을 암시적으로 추가합니다.

감사의 말

이 프로젝트는 특히 이전 버전의 SysWhipsers와 SharpWhispers에서 영감을 받았습니다. @Jackson_T, @KlezVirus, @d_glenx, 그리고 코드와 아이디어를 기여한 모든 분들께 감사를 표합니다.

도구 다운로드