Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
WTSRM2 — 回避型Windows開発のためのヘッダオンリーC++17ライブラリ:コンパイル時APIハッシュ化、DLLアンフック、ハードウェアブレークポイントのクリア、VEHの削除、およびEDRフックを回避するためのDLL通知コールバックの抑制。 | Kitploit
ツール/GitHubGitHub/rad9800/wtsrm2
IDS/IPS回避レッドチーミングペイロード開発
GitHubrad9800/wtsrm2

WTSRM2

回避型Windows開発のためのヘッダオンリーC++17ライブラリ:コンパイル時APIハッシュ化、DLLアンフック、ハードウェアブレークポイントのクリア、VEHの削除、およびEDRフックを回避するためのDLL通知コールバックの抑制。

リポジトリを見る
164323年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

WTSRM2

これは私の元のプロジェクト WTSRM と対応する トーク の続きです。

このプロジェクトは、C++17 を利用して、必要な機能をコンパイル時に簡単に変更できるテンプレートを作成するために書き直されました! これはヘッダーのみのファイルとして実装されているため、自分のプロジェクトに簡単に追加できます。

現在実装されている機能には以下があります:

  • CRT 依存なし (10KB バイナリ)
  • \KnownDlls\ または \System32\ を使用した '.text' パッチにより、すべての Windows DLL のフックを解除
  • パッチには VirtualProtect または WriteProcessMemory を使用
  • コンパイル時の API ハッシュ化
  • Vectored Exception Handlers の削除と復元
  • Ldr DLL 通知コールバックの削除
  • ハードウェアブレークポイントのクリア
  • ワークアイテムを使用したライブラリのロード

この動作は次のように設定できます

root@kitploit:~
#define HASHING_ALGORITHM hash_string_fnv1a	// constexpr algorithm

namespace config
{
	...

	//
	// configure behaviour
	//
	inline constexpr unsigned unhooking = system32 | write_process_memory;
	inline constexpr auto work_item_load_library = true; // use a work item for LL

	//
	// configure evasive features
	//
	inline constexpr auto clear_and_restore_veh = true; // clear and restore veh
	inline constexpr auto unregister_dll_notifs = true; // LdrRegisterDllNotification
	inline constexpr auto clear_thread_hwbps = true; // clear the hwbps
}

constexpr を利用しているため、使用しない機能はデッドコードとしてプログラムから最適化され、コストがかかりません。

このヘッダーの使用

DLL をインポートするには、まず DLL_HASH マクロを使用してハッシュを作成します

root@kitploit:~
DLL_HASH(DBGHELP, L"DBGHELP.DLL")

次に、内部 IAT として機能する module_address_table にそれを追加する必要があります。 hash_ 定数は DLL_HASH マクロによって作成されます。常にロードされるとは限らない一般的でない DLL については、ロードできるように名前を指定する必要があります。

root@kitploit:~
inline addr_struct<decltype(HASHING_ALGORITHM(TOKENIZEA(T))), wchar_t> module_address_table[] =
{
	{hash_NTDLL, nullptr,},
	{hash_KERNEL32, nullptr,},
	{hash_DBGHELP, nullptr, L"DBGHELP.DLL"}
};

関数をインポートするには、まず HASH_FUNC マクロを使用して関数名ハッシュと typedef を作成します

root@kitploit:~
HASH_FUNC(NtUnmapViewOfSection, NTSTATUS, HANDLE, PVOID)

最初のパラメータは関数名、次は戻り値の型、そして関数への引数です。次に、それを現在の関数アドレスで埋められる api_address_table に追加する必要があります

root@kitploit:~
inline addr_struct<decltype(HASHING_ALGORITHM(TOKENIZEA(T))), void> api_address_table[] =
{
	{hash_GetProcAddress, nullptr},		
	{hash_NtUnmapViewOfSection, nullptr},

この関数をこのテーブルに追加しなかった場合、プログラムはクラッシュしませんが、安定性を高めるために -1 を返します。

API を使用するには、示されているように API()() マクロを使用します

root@kitploit:~
API(NtWaitForSingleObject)(NtCurrentProcess(), FALSE, &timeout);

独自の API ハッシュ関数を追加するには、必要な型で動作するようにこのテンプレートを使用する必要があります。

root@kitploit:~
template <typename T>
constexpr auto hash_string_(const T* buffer)
{
	TRIVIAL_TYPE_CHECK()

}

アイデアと貢献に対して、順不同で以下の方々に感謝します @peterwintrsmith @modexpblog @jonaslyk @JustasMasiulis

ツールをダウンロード