2009-05-01 32 views
2

我有一個應用程序調用另一個控制檯應用程序,並傳遞給它一些參數(控制檯應用程序是一個視頻/音頻逆變器應用程序).​​..有沒有一種方法來編程「間諜」或捕捉除了掛鉤/監視shellexecute/CreateThread等?如何在win32pipe/console上「窺探」?

回答

2

是的,有 - 當你寫程序瀏覽器能夠做到這一點,你可以使用相同的技術。但是AFAIK沒有將Delphi平臺上的winternl.h文件進行Delphi轉換,所以它更加繁瑣和困難。這也是特別針對特定版本的,並且有機會與下一個Windows版本打破。也不清楚這是否適用於64位進程(來自32位進程)。

如果你真的想這樣做,你會在this blog posting by Matt Pietrek和CodeProject文章「Read Environment Strings of Remote process」中找到必要的信息。

如果您不打算將其用於閉源商業程序,那麼查看ReactOS項目中的(GPL許可的)annotated version of the winternl.h文件也可能有所幫助。

4

自己創建一個可執行文件,它只是調用原件並將所有參數傳遞給它。然後移動原來的其他地方,並用你的exe替換它。然後,您的程序可以記錄所有呼叫,包括所有參數。

+0

好吧,那真是個不錯的伎倆;)我會試試它。但是,我只是嘗試了sysinternals的proceess explorer,在進程屬性中有一個選項卡,它可以告訴進程環境信息,其中包括傳遞給被調用應用程序的參數。 我在啓動了目標應用程序後啓動了進程資源管理器,因此進程資源管理器從某處(進程內存?)讀取這些信息,不會掛鉤某些API,我想知道如何執行此操作。 再次感謝。 – avar 2009-05-01 09:04:23

0

這是自1992年以來的Win32常見問題解答:只需閱讀PEB。
請參閱Win32 experts group