Python — Descover IPC интерфейс для недокументированной программы?

У меня есть программа без документации. Мне интересно, есть ли способ узнать, есть ли у него какой-либо интерфейс для межпроцессного взаимодействия. Существуют ли инструменты для поиска в исполняемом файле для обнаружения таких интерфейсов? Мне интересно узнать что-нибудь о такой программе, например, поддерживает ли она какие-либо параметры или аргументы командной строки или что-либо еще, что может быть обнаружено.

Я в основном использую Linux, и некоторые из программ, с которыми я хотел бы взаимодействовать, — это программы Windows, работающие через Wine. Я программирую на C и C ++, и немного Python.

Связанный вопрос; Есть ли способ программно симулировать нажатие кнопки в каком-то другом окне на экране компьютера?

1

Решение

Обнаружение интерфейса IPC / механизмов IPC для недокументированной программы может включать сбор большого количества информации различными способами, сбор ее вместе и отображение информации.

ipcs Команда может быть использована для получения информации обо всех объектах ipc. Он должен предоставлять информацию о текущих активных очередях сообщений, сегментах общей памяти и семафорах. Это доступно как часть util-linux,

Другой вариант — искать shm папка в /proc/ просмотреть список активной в данный момент разделяемой памяти, используемой до и после запуска вашей программы.

FIFO — это специальные файлы, созданные с помощью mkfifo, которые вы можете определить по типу файла. p в ls-l выход. Также вы можете использовать -p возможность проверить, является ли file это труба.

/proc/<pid>/fd может помочь собрать больше информации. lsof это очень удобный инструмент, который может дать вам список открытых файлов и процессов, которые их открыли. Он может перечислить PID, PGID, PPID, владельца процесса, команду, которая выполняется процессом, и файлы, которые используются процессом.

fuser может предоставить вам список PID, которые используют определенные файлы или файловые системы.

top/htop дает вам список процессов, которые выполняются в вашей системе. Это может дать широкий спектр информации, начиная от приоритета процессов в форме NI использование памяти через REM или же MEM,

iotop может предоставить таблицу текущего использования ввода-вывода процессами или потоками в системе, отслеживая вывод информации об использовании ввода-вывода ядром.

mpstat может дать «процент времени, в течение которого центральный процессор или процессоры простаивали, в течение которого система имела невыполненный запрос дискового ввода-вывода» через аргумент «iowait».

strace должен перехватывать / записывать системные вызовы, которые вызываются процессом, а также сигналы, полученные процессом. Strace сможет показывать порядок событий и все пути возврата / возобновления вызовов.

LTTng представляет собой комбинацию функций kprobes, tracepoint и perf, которые могут помочь в отслеживании прерываний и условий гонки.

2

Другие решения

Некоторые программы Windows используют DCOM для межпроцессного взаимодействия. Существует несколько программ для извлечения этого интерфейса из DLL- и EXE-файлов.
В противном случае вам придется разобрать программу и посмотреть на код напрямую, что не является тривалом.
На ваш последний вопрос:
Программы Windows используют систему сообщений для связи с GUI. Ты можешь использовать sendmessage для имитации любого сообщения, например нажатия кнопки.

1

По вопросам рекламы [email protected]