Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как запустить чужой exe


Автор: DIMONSOFT 25.5.2005, 21:13
сабж

Автор: Quadr0 25.5.2005, 21:27
...

Автор: Snowy 26.5.2005, 08:55
Цитата
Как запустить чужой exe, как поток к своей программе

Никак. Если только эта программа не предоставляет функций, которые можно из нее запустить.
Но это все же не запуск ехешника.
Могу предложить только запуск программы в скрытом режиме.
Запускаешь и прячешь, чтобы не дай бог кто-нить увидел smile

Автор: DIMONSOFT 26.5.2005, 20:20
А присоединить свой поток к чужой тоже нельзя?

Автор: Quadr0 26.5.2005, 23:37
...

Автор: Snowy 27.5.2005, 09:15
Цитата(DIMONSOFT @ 26.5.2005, 20:20)
А присоединить свой поток к чужой тоже нельзя?

В NT нельзя. В 9х может и можно как-то обойти, но не думаю.
Приклеить свой поток к другой программе можно, если твоя программа это dll. smile
Внедряй ее в чужой процесс (хоть в explorer.exe) и будет она в нем жить поживать и наживать в зависимости от целей...
Добавлено @ 09:18
Цитата(Quadr0 @ 26.5.2005, 23:37)
Говорю же. Windows каждое приложение запускает изолированно от другого в своём потоке.

Ну не так уж и изолировано. Винда просто разграничивает доступ к объектам.
Хотя в 9х у нее это не особо получается...
И кроме того не приложение запускается в потоке, а наоборот.
Добавлено @ 09:22
Вот цитата: Крис Касперский "Коментарии к книге Джефри Рихтера":
Цитата

"Объекты ядра защищены, и процесс, прежде чем оперировать с ними, должен запрашивать разрешение на доступ к ним. Процесс - создатель объекта может предотвратить несанкционированный доступ к этому объекту со стороны другого процесса" стр. 12
Насчет защиты Рихтер немного загнул - она есть только под Windows NT, но даже там (за исключением серверных приложений) обычно не используется. Поэтому, кто угодно может получить доступ к объектам ядра чужого процесса (за исключением системного) вызвав DuplicateHandle или обратившись к набору функций TOOLHELP32 - процесс и знать не будет, что дублируют его дескриптор!
И даже под NT, и даже с установленными атрибутами защиты в адресном пространстве процесса можно исполнить свой код, обращаясь к защищенному дескриптору от имени этого процесса. Делов-то!
Правильнее было бы говорить о защите от непреднамеренного доступа к дескрипторам чужого процесса.

Это так - для общей информации, на тему "фиг винда позволит"

Автор: Quadr0 27.5.2005, 10:05
...

Автор: Snowy 27.5.2005, 10:19
Цитата(Quadr0 @ 27.5.2005, 10:05)
Верно, но примет ли она его?

А куда она денется.
Почитай про внедрение dll в чужой процесс.

Автор: Rouse_ 27.5.2005, 14:45
А зачем DLL? CreateRemoteThread и указатель на потоковую функцию. Никаких библиотек не нужно...

Автор: Snowy 27.5.2005, 14:57
Цитата(Rouse_ @ 27.5.2005, 14:45)
А зачем DLL? CreateRemoteThread и указатель на потоковую функцию. Никаких библиотек не нужно...

Можно. Но жить-то она где будет?
Вопрос-то был в том, чтобы нам наш поток вставить в другое приложение.
Но при этом должен остаться только один smile
Нужно из двух процессов сделать один, но содержащи потоки обоих.
А при такой конструкции у нас так и останется 2 процесса.
А для того, чтобы процесс был один, вторую программу и нужно делать в dll.
Хотя можно и так, а наш поток просто спрятать.
Но диспетчер его так увидит. А внедренную dllку нет.

Автор: p0s0l 28.5.2005, 11:04
Цитата
Можно. Но жить-то она где будет?
Жить будет изначально в нашем процессе, потом в созданном новом удаленном потоке, мы ж её туда в начале пихаем например через WriteProcessMemory, потом ExitProcess, и остается только 1 процесс (чужой) + наш поток в нем...
Или... о чем ты ?...

Автор: DIMONSOFT 29.5.2005, 20:52
Цитата(Snowy @ 27.5.2005, 10:19)
внедрение dll в чужой

А поподробней...

Автор: Rouse_ 30.5.2005, 10:07
Цитата(DIMONSOFT @ 29.5.2005, 21:52)
А поподробней...

Вот тебе демка внедрения через CreateRemoteThread
http://rouse.front.ru/injectlib.zip

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)