Вопрос

у меня есть приложение, которое вызывает другое консольное приложение и передает ему некоторые параметры (консольное приложение - это приложение для конвертации видео/аудио)...Есть ли способ программно «шпионить» или перехватывать переданные параметры, кроме перехвата/мониторинга shellexecute/CreateThread и т. д.?

Это было полезно?

Решение

Да, есть - как вы пишете, Process Explorer может это сделать, и вы можете использовать ту же технику.Но AFAIK нет перевода Delphi зимал.ч файл из Platform SDK, поэтому это еще более утомительно и сложно.Кроме того, это сильно зависит от версии, и есть вероятность, что в следующей версии Windows она сломается.Также не совсем ясно, работает ли это для 64-битных процессов (из 32-битного процесса).

Если вы действительно хотите это сделать, то всю необходимую информацию вы найдете в эта запись в блоге Мэтта Питрека, и в статье CodeProject "Чтение строк среды удаленного процесса".

Если вы не планируете использовать его для коммерческих программ с закрытым исходным кодом, обратите внимание на (лицензию GPL) аннотированная версия зимал.ч файл из проекта ReactOS, вероятно, также поможет.

Другие советы

Создайте самостоятельно исполняемый файл, который просто вызывает оригинал и передает ему все параметры.Затем переместите оригинал в другое место и замените его своим exe.Затем ваша программа сможет регистрировать все вызовы к ней, включая все параметры.

Это FAQ по Win32 с 1992 года:просто прочитайте PEB.
Смотрите дальше Группа экспертов Win32.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top