6

OSR OnlineNtInternalsなどのさまざまなページを見た後、 NtCreateProcess(そしてZwCreateProcess) メモリ セクションへのハンドルの指定はオプションであると思われます。

これは、実行可能イメージによってサポートされていないプロセスを使用できるということですか? もしそうなら、それらは潜在的に何に使用される可能性がありますか(または使用されますか)? これは、実行可能ファイルを完全にメモリにコピーし、その後ディスクからファイルを削除して、プロセスを実行し続けることができるということですか?? それは本当に便利な機能のように思えます。

4

2 に答える 2

5

セクション(win32ランドのファイルマッピング)がNULLの場合、親プロセスのセクションを使用します。NULLを使用して新しいメモリを割り当て、それにEIPを指定する(またはページファイルマッピングを使用する)ことは可能かもしれませんが、NtCreateProcessの使用には問題があり、文書化されておらず、CreateProcessのようにwin32サブシステムに登録されません。(ntdllからのエクスポートのみを使用する場合は、これで問題ない可能性があります)

Win9x、NT4、および2000では、ここにリストされているダーティトリックを使用して、実行中にディスクから自分自身を削除できます。

別のオプション:

  • ドライバーを使用します。ロード後に削除できます(sysinternalツールがこれを行います)
  • ホストプロセスを使用します。explorer.exe、cmd.exe、またはrundll32.exeを一時停止して起動し、CreateRemoteThread +注入されたコードを使用します(これはもちろん、ディスク上にexeファイルがありますが、コードが含まれていないことを意味します)
于 2011-03-18T02:26:47.593 に答える
2

イメージをサポートしていない Section オブジェクトを使用してプロセスを自分で作成しようとしました。:)

結果?

NtCreateProcess戻ってきた:

STATUS_SECTION_NOT_IMAGE
// An attempt was made to query image information on a section which
// does not map an image.

したがって、どうやらすべてのプロセスはイメージに裏打ちされている必要があるようです (カーネルをハックしないと仮定して)。

于 2011-05-30T20:07:45.303 に答える