Twitter: @AzizWho
NoArgsは、検出されずにプロセス引数を動的に偽装・隠蔽するために設計されたツールです。これを実現するために、Windows APIにフックし、Windows内部を動的にその場で操作します。これにより、NoArgsはプロセス引数を目立たないように変更できます。




このツールは主に、Windows API関数 CreateProcessW によって行われるプロセス作成呼び出しをインターセプトすることで動作します。プロセスが開始されると、この関数は新しいプロセスと、指定されたコマンドライン引数を生成します。このツールはプロセス作成フローに介入し、新しいプロセスが起動される前に引数が隠蔽または操作されるようにします。
CreateProcessW へのフッキングは、Win32 API関数をインターセプト・リダイレクトするための一般的なライブラリであるDetoursを通じて実現されます。Detoursは、関数呼び出しをカスタム実装にリダイレクトしつつ、元の機能を保持することを可能にします。CreateProcessW にフックを仕掛けることで、このツールはプロセス作成要求をインターセプトし、プロセスが生成される前に独自のロジックを実行できます。
プロセス環境ブロック (PEB) は、Windowsがプロセスの環境と実行状態に関する情報を保存するために使用するデータ構造です。このツールはPEBを利用して、新しく作成されたプロセスのコマンドライン引数を操作します。PEB内に保存されているコマンドライン情報を変更することで、ツールはプロセスに渡された引数を変更または隠蔽できます。
Process Hacker 表示:

Process Monitor 表示:

コマンドプロンプト (cmd) へのインジェクション: このツールは自身のコードをコマンドプロンプトプロセスに注入し、位置独立コード (PIC) として埋め込みます。これにより、cmdのメモリ空間にシームレスに統合され、特定のメモリアドレスに依存せずに隠密な動作を保証します。(リリースページの難読化された実行ファイルのみ)
Windows APIフッキング: Detoursを利用して CreateProcessW 関数への呼び出しをインターセプトします。実行フローをカスタム実装にリダイレクトすることで、ツールは元のWindows API関数の前に独自のロジックを実行できます。
カスタムプロセス作成関数: CreateProcessW 呼び出しをインターセプトすると、カスタム関数が実行され、新しいプロセスを作成し、必要に応じてその引数を操作します。
PEBの変更: カスタムプロセス作成関数内で、新しく作成されたプロセスのプロセス環境ブロック (PEB) にアクセスし、プロセス引数の操作または隠蔽という目標を達成するために変更します。
実行のリダイレクト: 操作が完了すると、実行は中断なくシームレスにコマンドプロンプト (cmd) に戻ります。この動的なリダイレクトにより、後続のコマンドは検出やログ記録メカニズムを回避しながら、気付かれずに操作されます。これらのメカニズムはプロセス詳細をPEBから取得することに依存しています。
オプション 1: NoArgs DLLをコンパイル:
Microsoft Detours がインストールされている必要があります。
DLLをコンパイルします。
コンパイルしたDLLを任意のcmdインスタンスに注入すると、新しく作成されたプロセスの引数を動的に操作できます。
オプション 2: リリースページ からコンパイル済みの実行ファイル(すぐに使えるもの)をダウンロードします。