Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование логгера для отслеживания параметров в консольных приложениях на Delphi

Delphi , ОС и Железо , DOS и Консоль

Вопрос, поднятый пользователем, заключается в необходимости "шпионить" за параметрами, которые передаются в консольное приложение из другого приложения, написанного на Delphi. В частности, речь идет о видео/аудио конвертере, который запускается как отдельный процесс. Рассмотрим, как можно решить эту задачу, не прибегая к хукингу или мониторингу функций, таких как ShellExecute или CreateThread.

Альтернативный подход

Один из способов решения проблемы - создать собственный исполняемый файл, который будет просто вызывать оригинальное приложение, передавая ему все параметры. Затем оригинальное приложение можно переместить в другое место и заменить его созданным исполняемым файлом. Такой подход позволит логировать все вызовы и передаваемые параметры.

Подробности реализации

Для реализации такого подхода можно использовать простой скрипт, который будет запускать оригинальное приложение, передавая ему все аргументы командной строки. Вот пример кода на Object Pascal, который демонстрирует, как это можно сделать:

program LoggerExecutor;
{$APPTYPE CONSOLE}
uses
  System.SysUtils;

var
  Args: TArray<string>;
  i: Integer;
begin
  // Получаем аргументы командной строки
  Args := ParamStr(1).Split([' ']);
  // Логируем аргументы
  for i := 0 to High(Args) do
    Writeln(Args[i]);
  // Запускаем оригинальное приложение с передачей аргументов
  ShellExecute(0, nil, Args[0], nil, nil, SW_SHOW);
  Readln;
end.

Этот скрипт сначала получает аргументы командной строки, затем логирует их в консоль, после чего запускает оригинальное приложение, передавая ему полученные аргументы.

Использование Process Explorer

Процесс Эксплорер из набора инструментов Sysinternals позволяет отслеживать информацию о процессах, включая параметры, передаваемые в приложение. Это можно сделать, не используя хукingi API, а анализируя информацию из памяти процесса.

Подтвержденный ответ

Для реализации подобного функционала можно использовать методы, аналогичные тем, что использует Process Explorer. Однако, для работы с низкоуровневыми структурами Windows, такими как PEB (Process Environment Block), может потребоваться доступ к определениям из файла _winternl.h из Platform SDK. К сожалению, для Delphi такой перевод отсутствует, что делает задачу более сложной и версии-зависимой.

Для получения необходимой информации можно обратиться к блогу Мата Пиетрека и статье на CodeProject, посвященной чтению строк окружения удаленного процесса. Если лицензия GPL не является проблемой, то также можно использовать аннотированную версию файла _winternl.h из проекта ReactOS.

Заключение

Использование логгера - это эффективный способ отслеживания параметров, передаваемых в консольные приложения. Создание собственного исполняемого файла, который будет выполнять логирование и передачу параметров, является одним из возможных решений. При необходимости можно также использовать методы, аналогичные тем, что реализованы в Process Explorer, для анализа информации из памяти процесса.

Создано по материалам из источника по ссылке.

Вопрос связан с необходимостью отслеживания параметров, передаваемых в консольное приложение на Delphi, используя логгер для мониторинга вызовов и передаваемых данных без применения хукинга или мониторинга системных в


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: DOS и Консоль ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:26:09/0.005012035369873/1