2010-06-25 2 views
5

Может ли кто-нибудь объяснить, как одна программа подключается и изменяет поведение других программ в Windows?Как подключиться к другим программам в Windows?

Как это возможно? Не защищают ли окна программы от других программ, входящих в их память и т. Д.? (Я не знаю, как это работает, поэтому я просто сказал «в свою память»), я уверен, что это сложнее, чем это.)

Также разрешают ли современные Windows, подобные Windows 7?

Спасибо, Бода Cydo

ответ

5

Существует несколько способов подключения и изменения поведения других программ.

Например, вы можете напрямую писать в память другой программы (WriteProcessMemory), или вы можете вставлять поток в память другой программы (CreateRemoteThread). Это предполагает, что у вас есть некоторые права контролировать эту другую программу.

Вы также можете ввести крючок окна через SetWindowsHookEx. Это предполагает, что вы работаете в сеансе пользователя на том же или более высоком уровне целостности программы, в которую вы вводите.

Это по-прежнему допускается по нескольким причинам. Без способа изменить поведение других программ вы не сможете реализовать отладчик. Крюки Windows используются при тестировании программ, программ доступности, программ, которые изменяют внешний вид Windows и т. Д.

+0

Можете ли вы сделать это в Linux? Я думаю, что в Linux вы не можете манипулировать памятью другой программы? – bodacydo

+0

Я не Linux-разработчик. Как бы пользовательский режим отладчика linux вставлял точку останова в процесс или читал стек потока? – Michael

+0

Обычно вы запускаете программу через 'gdb'. Затем, поскольку gdb создает дочерний процесс, он каким-то образом имеет доступ к этой программе, но я не уверен, что я новичок во всем этом. – bodacydo

0

Представьте себе приложение, которое сохраняет данные в файл X.txt вы можете получить содержимое x.txt, и попытаться найти разницу в сохраненном x.txt против текущего х. txt, как только он изменится, вы можете запустить огонь событий, зная, что программа X изменила файл x.txt.

Вы можете сделать это на более низком уровне, но концепция остается той же, (что-то для изменения).

+0

Разве это не просто манипуляции с памятью? Та же самая концепция, используемая для создания игровых тренеров? Я думал, что OP говорит о физических крючках для выполнения кода (может быть, это одно и то же ...), как то, как Steam захватывает ваши 3D-игры, чтобы внедрить его наложение. – Aren

Смежные вопросы