![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Sl@va |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 22.11.2004 Где: Нижний Новгород Репутация: нет Всего: нет |
Здравствуйте !
Известно, что при помощи функции Win32Api ShellExecute можно например запустить какой либо файл на выполнение, либо открыть файл, если он например является текстовым. Но как сделать, чтобы можно было запустить файл на выполнение, если он на данный момен находится не на жестком диске, а в оперативной памяти. Заранее спасибо. |
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 4 Всего: 12 |
Передай управление jmp, call и т.п..
-------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
В смысле
? Загружен при запуске или побайтово считан ехе-файл в память? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Sl@va |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 22.11.2004 Где: Нижний Новгород Репутация: нет Всего: нет |
Есть такое понятие, может вы с ним знакомы, как Ресурс Исполняемого файла. Дело в том, что каждый exe файл состоит из нескольких частей, где все разложено по полочкам. Тоесть например иконки хранятся в одном месте, рисунки в другом, диалоговые окна в третьем, сама кодовая часть в четвертом, и т.д. Все это формируется на стадии компановки исполняемого модуля. Это и есть ресурсы. Так же в exe файл можно запрятать и еще например один exe файл. Тоесть программа работает следующим образом:
Запускается программа, она извлекает из самой себя еще один exe файл, который находится в оперативной памяти. Передомной как раз и стоит задача, как запустить этот самый извлеченный exe файл, не записывая его на жесткий диск. Тоесть тут получается такая вещь, что программа находится в оперативной памяти, но она не запущена, и мне как раз и нужно передать ей управление. |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
когда ты загружаешь данные таким образом, они заходят в регион данных. если ты можешь передать контроль программы региону в сегменте данных, то можно это делать и со злым умыслом, как делают в атаках основанных на переполнение буфферов, загоняя в стек данных команды компьютеру, и передавая им контроль в какой-то момент напр. с помощью jmp.
как ни странно, но большинство автоматических взломов компьютеров происходит именно по этому принципу ( см. статью Aleph1) всё это сейчас пытаются заглушить с помощью специальных защит железом и низко-уровневым софтом - сам CPU в конце концов не позволит относиться к данным как к инструкциям. не совсем понятно какая именно цель тут тобой преследуется, но ясно что перспективы у неё не очень светлые. т.е. если и напишешь ты программу по этому принципу, в какой то момент оне просто не сможет быть перенесена на новые модели процессоров. напр. уже сейчас в Windows XP SP2 есть фича DEP - (Data Execution Prevention), которая по идее ( если работает и включена) должна блокировать твою такую програмку. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| dmit10 |
|
|||
|
Unregistered |
Дык сущестует же программа Aspack, нарушающая объявленные выше принципы... Как ты это объяснишь?
|
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
Sl@va
Я не вижу оснований у обычной программы НЕ извлекать из себя нужный исполняемый файл и если нужно удалять его после его закрытия. По сему я предполагаю, что это либо очередной вирус, либо шпион(в данном контексте вероятно автор хочет загрузить в память резидента, под прикрытием другой программы). Разработка и обсуждение(на данном форуме) и того и другого - противозаконно. Это сообщение отредактировал(а) En_t_end - 10.9.2005, 14:07 |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
En_t_end А что наоборот не может что-ли быть?? Такая технология вполне приемлема для защиты программы от несанкционированного использования!!! Я вот и сам подумывал об этом, а ты "противопоказано". Вообще очень полезно это уметь, ибо не один хацкер не додумается как взять дамп памяти и посмотреть, что эта программа делает, а если ты запускаешь с диска - вот тут то и пиши пропало... писец всей твоей суперзащите.
Поэтому, предлагаю дообсуди ть эту тему. -------------------- я не гольфист - я хоккеист |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
JoyEx
зависнет 100 процентов bilbobagginz а откуда цпу узнает что код - это как бы данные? ) так что уровень железа отпадает если определять данные как некую информацию которая находится в сегменте данных и имеет атрибут реад/врите то обойти это дело 5 секунд VirtualProtect еще никто не отменял, ставим реад/врите/ехекуте и вперед ну а если сделать ехе с 1 секцией в которой все понапичкано то еще проще ))) ну а чтоб запустить ехе из тела своей проги нада делать так (назовем ехе для запуска ехе1) 1) получить место в памяти с адреса указаного в image base exe1 2) перенести туда ехе1 с учетом смещений секций (RVA) тоесть разложить его там 3) заполнить таблицу импорта ехе1 4) передать на него управление -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
oleg1973
Вот я не столь крут и понял, что ничего не понял. Если есть несколько минуток свободных, может можно кусочек текста или пояснения или ссылочки??? PS.: Я и сам знаюя, что все есть в MSDN, но когда мне говорят читайте MSDN - я понимаю это как предложение в мою сторону о проведении путешествия с эротическим уклоном (а пошёл ты на ...). И сам уже иногда начинаю людям предлагать почитать MSDN, но неприятно это. -------------------- я не гольфист - я хоккеист |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
как раз в МСДН и нет ничего в данном случае )))
на оффсайте UPX есть исходники http://upx.sourceforge.net/ но без понимания структуры РЕ/ЕХЕ там делать нечего -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
В данной теме, на мой взгляд, есть два решения (я сам такого не делал, так что это чистая теория
1. искать в нете статьи , типа: " Как запускается ехе-файлы?" и что при этом куда пишется в памяти, 2. создать в памяти виртуальный диск, скинуть на него побайтно весь требуемый ехе-шник, и с оттуда запустить, после работы удалить и прогу и диск. -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
Romikgy
Тут то и писец... Добавлено @ 13:51 oleg1973 За ссылку спасибо -------------------- я не гольфист - я хоккеист |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Помоему в нете куча исодников и объяснений как это сделать -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 3 Всего: 112 |
Вот неплохой простой пример для старта, правда на Delphi...
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=391622 -------------------- С уважением, г-н Посол. |
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 4 Всего: 12 |
Так, да не так. Если в коде нету команд с абсолютными адресами, то не надо делать п.1-2, если нету импорта, то не нужен п.3.. Остается тока п.4 о чём я и говорил Без импорта можно обойтись - вызывать API по общеизвестным адресам или через шлюз ловушки. А вооще, программа должна иметь свое адресное пр-во и т.д... -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| oleg1973 |
|
||||||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
а как ты это определиш?
ну дык может та прога которую мы запускамем имеет импорт ) или ты ее переделвать будеш? да и адреса разные на разных версиях винды
не обязательно, посматри как упаковшики ехешников работают -------------------- SST 465555 icq 200-512-712 |
||||||
|
|||||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 4 Всего: 12 |
oleg1973 , с праздником!
1) Мне вааще это не надо 2) Аналогично 3) Аналогично -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 3 Всего: 112 |
JoyEx, таких программ которые ты описал, мало, и в природе встречаются в основном в виде вирей...
А если нужно запустить прогу, которая написана на HLL ?
Правда не всё запускается таким способом, но при желании можно и доработать... По крайней мере это намного лучше того, чем накладывать огромные ограничения на запускаемую программу... Имхо -------------------- С уважением, г-н Посол. |
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 4 Всего: 12 |
Ни разу не делал, но ... p0s0l, и тебя тоже с праздником! -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| Helicopterr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 20.8.2005 Где: Stavropol Репутация: нет Всего: 3 |
Насколько я понял, автор темы интересовался аналогом ф-ции ShellExecute для файла в оперативной памяти. Вместо этого наиболее существенное что он получил - параноидальные обвинения в вирмейкерстве.
Я считаю очень важным умение работать с содержимым оперативки. В стандартной инфе по С++ не встречал функции для этого. Есть утилита разработчика MoleBox. Она пакует к основной экзехе всё что требуется. Может и другую экзеху, используемую основной. При этом она работает только с оперативной и найти в папке Temp unzip нереально. -------------------- people can fly |
|||
|
||||
| gki |
|
|||
|
Unregistered |
Как организовать из оперативной память Windows XP виртуальный диск
|
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
На сколько помню современные процы бьют память на страницы, каждая страница имеет аттрибуты. В страницу помеченную как "код" нельзя писать, из страницы "даные" нельзя исполнять код. По моему только ось (из режима супервизора) может изменить аттрибуты страницы.
Просто мысли... по идее что бы запустить прогу нужно загрузить её в память(создать имейдж процесса), убить себя, т.к. прога в виртуальном пространстве хочет быть одна обычно. Как то сервисами оси указать что страницы с инфой вообще то страницы с кодом, у оси права менять аттрибуты страниц есть. Раз паковщики exe'шников существуют, значит это всё возможно сделать... -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 3 Всего: 112 |
Это сообщение отредактировал(а) p0s0l - 21.12.2005, 09:13 -------------------- С уважением, г-н Посол. |
|||
|
||||
| Helicopterr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 20.8.2005 Где: Stavropol Репутация: нет Всего: 3 |
А есть пример как юзать эту функцию? -------------------- people can fly |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |