プロセスは、VBSでcalc.exeを起動する例の下で、WMI COMを使用して生成できます。親はWscript.exeではなくWMI COMサーバーであるWmiPrvSE.exeです。タスクは、プロセス作成の要求の下にフックすることです。WMIを使用して作成されたプロセスのソースおよび宛先PIDを取得する方法は?
str = "calc.exe"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set objProcess = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
objProcess.Create str, Null, objConfig, intProcessID
非同期プロセスの作成使用してWMIを使用して監視することができるクエリ:
"SELECT * FROM MSFT_WmiProvider_ExecMethodAsyncEvent_Post WHERE ObjectPath=\"Win32_Process\" AND MethodName=\"Create\"";
イベントは上記のVBSスクリプトはManagementEventWatcherが役に立つ情報のみのコマンドラインを与えるイベントを受信executed.Butされたときにトリガーされます。
void OnEventArrived(object sender, System.Management.EventArrivedEventArgs e)
{
string cmdline = e.NewEvent["InputParameters"]["ProcessStartupInformation"]["CommandLine"]
}
VBSがspawning calc.exeを発信したことを知ることは不可能です。 "wscript.exe sample.vbs"というソースと宛先のPIDが必要です。PID = 666はWMIを使用して "calc.exe" PID = 667を作成しました。これを行う方法? また、MSFT_WmiProvider_ExecMethodAsyncEvent_Preイベントのプロセス作成を防止する可能性はありますか?
より具体的なプロパティを使用できるように、回答を更新しましたが、残念ながらあなたが探しているものが正確ではありません。 – Svek
最初の投稿のクエリは、CreateProcessを使用して作成されただけでなく、WMI COMを使用して作成されたプロセスを検出します。親はリクエスタではなく、WmiPrvSE.exeです。これを行うVBSのコードは、ルート投稿に追加されました。 – user3874158