![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуск EXE в контексте моей программы [D7, Win2k, WinXP]
Topepo © (2006-02-26 15:38:00)Вобщем, сабж. объясняю ситуацию:
Есть моя прога, и левый екзешник в той же папке. Прога считывает екзешник в свою память. так вот вопрос: можно ли запустить этот считанный код, не создавая отдельный процесс ?
n0name (2006-02-27 10:08:00) [1]nick denry © (27.02.06 00:17) [18]
> В принципе exe не сильно отличается от Dll
Конечно, только тем что для exe нужно не только промаппировать DLL, но и создать объект типа процесс.
nick denry (2006-02-27 00:17:00) [2][9] Topepo © (26.02.06 16:14)
В принципе exe не сильно отличается от Dll. Можно скорее всего попробовать написать что-то типа своего загрузчика.
сходи на www.wasm.ru, может найдешь чего
n0name (2006-02-26 18:59:00) [3]>>Topepo © (26.02.06 15:38)
нет.
Даже переход в р0.
Даже написание своего PspCreateProcess.
Topepo (2006-02-26 16:31:00) [4]grisme спс за наводку, будем думу думать :)
grisme (2006-02-26 16:26:00) [5]Хотя врядли тебе Дэлфай позволит править IP-она его просто-напросто "не знает" :) Ну, главное, я тебе сказал, куда копать...:) Посмотри в Debug'e там EIP изменяется с ходом программы, а ты его просто изменишь... ах да, если получится, вызови в конце своей "подпрограммы-мутанта" возврат Jmp. А то потеряется софтина...
Topepo (2006-02-26 16:22:00) [6]
> grisme © (26.02.06 16:19) [13]
>
> Ну попробуй теперь, "перейдя в нулЁвое кольцо" :) править
> регистр IP на адрес первого байта той кучи кода, что ты
> "считал в память"...:) <я не врубаюсь, ты чего, его просто
> в дин.массив считал что-ли?>
мм.. попробуем-с =)
как считал ?.. да по-простому. так же, как и в случае с длл. заваривал поинтер, выделял под него память, равную размеру файла, и считывал через функции CreateFile\ReadFile. всё оч просто =)
grisme (2006-02-26 16:19:00) [7]Ну попробуй теперь, "перейдя в нулЁвое кольцо" :) править регистр IP на адрес первого байта той кучи кода, что ты "считал в память"...:) <я не врубаюсь, ты чего, его просто в дин.массив считал что-ли?>
Topepo (2006-02-26 16:17:00) [8]
> grisme © (26.02.06 16:15) [10]
>
>
>
> В досе можно было просто править пару CS:IP и все. А под
> виндой такое НЕ прокатит...:) <если тока не перейти в приор.
> 0-го кольца процессора>:) за этим вопросом - к кулхацкерам.
> .
я умею переходить в нулевое кольцо %)
а теперь конкретнее ? ))
Topepo (2006-02-26 16:16:00) [9]
> Сергей М. © (26.02.06 16:13) [8]
>
>
> Займись делом, а не идиотскими измышлениями.
> Либо изобретай свою ОС.
ты тоже мог бы заняться делом, а не писать всякую чухню в ответ. Причём тут идиотские измышления ? Стоит реальная задача. По ней есть несколько вопросов: решается задача\не решается и если первое, то как. ничего идиотского тут не вижу.
насчёт ОСи - самый вумные чугуний таскать будут, а так же могли бы и промолчать
grisme (2006-02-26 16:15:00) [10]
> возможно ли такое вообще
В досе можно было просто править пару CS:IP и все. А под виндой такое НЕ прокатит...:) <если тока не перейти в приор.0-го кольца процессора>:) за этим вопросом - к кулхацкерам..
Topepo (2006-02-26 16:14:00) [11]
> Сергей М. © (26.02.06 16:11) [7]
>
>
> Ну и ?
что и ? я не собираюсь запускать приложение. мне нужно выполнить его код в своей программе. или ты про что ? :-/
Сергей М. (2006-02-26 16:13:00) [12]
> Topepo © (26.02.06 16:11) [6]
Займись делом, а не идиотскими измышлениями.
Либо изобретай свою ОС.
Сергей М. (2006-02-26 16:11:00) [13]
> Topepo © (26.02.06 16:08) [5]
Ну и?
Topepo (2006-02-26 16:11:00) [14]
> grisme © (26.02.06 16:07) [4]
я же говорю, у меня есть экзешник в папке с моей прогой (да не суть важно где он %) ), я его открыл и считал к себе в память побайтно. Подобную фишку я делал с DLL. считывал длл-ку и подключал её образ к другим процессам. только там сорцы не мои были, я в них не смог ещё разобраться :\
мне интересно просто, возможно литакое вообще. а то не хочется копать впустую. ну исходники\линки\etc тоже бы не помешали %)
Topepo (2006-02-26 16:08:00) [15]
> Сергей М. © (26.02.06 16:01) [3]
Процесс – это запущенное приложение, которое содержит защищенное (принадлежащее только ему) виртуальное адресное пространство, куда загружаются код и данные. Процессу могут принадлежать некоторые ресурсы операционной системы, такие как открытые файлы, pipe-ы, синхронизирующие объекты (мьютексы, семафоры...), окна и т.п. Процесс также содержит один или более потоков исполнения (нитей), которые могут выполнять код, принадлежащий процессу. Процесс обязательно принадлежит некоторому logоn-у и также может быть ассоциирован с некоторой Windows-станцией.
(с) "Защита в DCOM".
Сабж остаётся в силе.
grisme (2006-02-26 16:07:00) [16]
> можно ли запустить этот считанный код, не создавая отдельный
> процесс ?
А как ты собственно "считал" в память код "левой" программы? По идее, можно конечно делать call <точка входа в подпрограмму> , но врядли "считанные данные" -процедура(?) Или я не понял вопроса...=\
Сергей М. (2006-02-26 16:01:00) [17]
> Topepo © (26.02.06 15:43) [2]
> может быть я не так выразился
> ну что есть вообще процесс в винде ?
Да ничерта ты не понимаешь, "что есть вообще процесс в винде".
Бросай все свои плохопахнущие археологческине изыскания и ставь вопрос в лоб - "что есть ПРОЦЕСС в Винде"
Topepo (2006-02-26 15:43:00) [18]
> Можно я спрошу? Что такое "процесс" в вашем понимании этого
> термина?
может быть я не так выразился.. ну что есть вообще процесс в винде ? определённый код, которому дали АП, зарегистрировали в винде и пустили на выполнение. мне вот этой регистрации не надо. а надо, чтобы везде числилось, что этот код выполнен от имени моей проги
Джо (2006-02-26 15:39:00) [19]> Topepo © (26.02.06 15:38)
Можно я спрошу? Что такое "процесс" в вашем понимании этого термина?