Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск файла из оперативной памяти. 
:(
    Опции темы
Sl@va
Дата 8.9.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Здравствуйте !
Известно, что при помощи функции Win32Api ShellExecute можно например запустить какой либо файл на выполнение, либо открыть файл, если он например является текстовым.
Но как сделать, чтобы можно было запустить файл на выполнение, если он на данный момен находится не на жестком диске, а в оперативной памяти.
Заранее спасибо.
PM MAIL WWW ICQ Skype   Вверх
JoyEx
Дата 9.9.2005, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 4
Всего: 12



Передай управление jmp, call и т.п..


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Romikgy
Дата 9.9.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



В смысле
Цитата(Sl @ 8.9.2005, 17:56)
если он на данный момен находится не на жестком диске, а в оперативной памяти.

? Загружен при запуске или побайтово считан ехе-файл в память?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sl@va
Дата 10.9.2005, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Есть такое понятие, может вы с ним знакомы, как Ресурс Исполняемого файла. Дело в том, что каждый exe файл состоит из нескольких частей, где все разложено по полочкам. Тоесть например иконки хранятся в одном месте, рисунки в другом, диалоговые окна в третьем, сама кодовая часть в четвертом, и т.д. Все это формируется на стадии компановки исполняемого модуля. Это и есть ресурсы. Так же в exe файл можно запрятать и еще например один exe файл. Тоесть программа работает следующим образом:
Запускается программа, она извлекает из самой себя еще один exe файл, который находится в оперативной памяти. Передомной как раз и стоит задача, как запустить этот самый извлеченный exe файл, не записывая его на жесткий диск.
Тоесть тут получается такая вещь, что программа находится в оперативной памяти, но она не запущена, и мне как раз и нужно передать ей управление.
PM MAIL WWW ICQ Skype   Вверх
bilbobagginz
Дата 10.9.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



когда ты загружаешь данные таким образом, они заходят в регион данных. если ты можешь передать контроль программы региону в сегменте данных, то можно это делать и со злым умыслом, как делают в атаках основанных на переполнение буфферов, загоняя в стек данных команды компьютеру, и передавая им контроль в какой-то момент напр. с помощью jmp.
как ни странно, но большинство автоматических взломов компьютеров происходит именно по этому принципу ( см. статью Aleph1)
всё это сейчас пытаются заглушить с помощью специальных защит железом и низко-уровневым софтом - сам CPU в конце концов не позволит относиться к данным как к инструкциям.
не совсем понятно какая именно цель тут тобой преследуется, но ясно что перспективы у неё не очень светлые. т.е. если и напишешь ты программу по этому принципу, в какой то момент оне просто не сможет быть перенесена на новые модели процессоров.
напр. уже сейчас в Windows XP SP2 есть фича DEP - (Data Execution Prevention), которая по идее ( если работает и включена) должна блокировать твою такую програмку.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
dmit10
Дата 10.9.2005, 13:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Дык сущестует же программа Aspack, нарушающая объявленные выше принципы... Как ты это объяснишь?
  Вверх
En_t_end
Дата 10.9.2005, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Sl@va
Я не вижу оснований у обычной программы НЕ извлекать из себя нужный исполняемый файл и если нужно удалять его после его закрытия. По сему я предполагаю, что это либо очередной вирус, либо шпион(в данном контексте вероятно автор хочет загрузить в память резидента, под прикрытием другой программы). Разработка и обсуждение(на данном форуме) и того и другого - противозаконно.

Это сообщение отредактировал(а) En_t_end - 10.9.2005, 14:07
PM MAIL ICQ Skype GTalk Jabber   Вверх
takedo
Дата 12.9.2005, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: -1
Всего: 3



En_t_end А что наоборот не может что-ли быть?? Такая технология вполне приемлема для защиты программы от несанкционированного использования!!! Я вот и сам подумывал об этом, а ты "противопоказано". Вообще очень полезно это уметь, ибо не один хацкер не додумается как взять дамп памяти и посмотреть, что эта программа делает, а если ты запускаешь с диска - вот тут то и пиши пропало... писец всей твоей суперзащите.
Поэтому, предлагаю дообсуди ть эту тему. smile


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
oleg1973
Дата 12.9.2005, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



JoyEx
Цитата
Передай управление jmp, call и т.п..

зависнет 100 процентов
bilbobagginz
а откуда цпу узнает что код - это как бы данные? ) так что уровень железа отпадает
если определять данные как некую информацию которая находится в сегменте данных и имеет атрибут реад/врите то обойти это дело 5 секунд VirtualProtect еще никто не отменял, ставим реад/врите/ехекуте и вперед
ну а если сделать ехе с 1 секцией в которой все понапичкано то еще проще )))

ну а чтоб запустить ехе из тела своей проги нада делать так (назовем ехе для запуска ехе1)
1) получить место в памяти с адреса указаного в image base exe1
2) перенести туда ехе1 с учетом смещений секций (RVA) тоесть разложить его там
3) заполнить таблицу импорта ехе1
4) передать на него управление


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
takedo
Дата 12.9.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: -1
Всего: 3



oleg1973
Вот я не столь крут и понял, что ничего не понял. Если есть несколько минуток свободных, может можно кусочек текста или пояснения или ссылочки???
PS.: Я и сам знаюя, что все есть в MSDN, но когда мне говорят читайте MSDN - я понимаю это как предложение в мою сторону о проведении путешествия с эротическим уклоном (а пошёл ты на ...). И сам уже иногда начинаю людям предлагать почитать MSDN, но неприятно это. smile


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
oleg1973
Дата 12.9.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



как раз в МСДН и нет ничего в данном случае )))
на оффсайте UPX есть исходники http://upx.sourceforge.net/
но без понимания структуры РЕ/ЕХЕ там делать нечего


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 12.9.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



В данной теме, на мой взгляд, есть два решения (я сам такого не делал, так что это чистая теория smile ):
1. искать в нете статьи , типа: " Как запускается ехе-файлы?" и что при этом куда пишется в памяти,
2. создать в памяти виртуальный диск, скинуть на него побайтно весь требуемый ехе-шник, и с оттуда запустить, после работы удалить и прогу и диск.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
takedo
Дата 12.9.2005, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: -1
Всего: 3



Romikgy
Цитата
2. создать в памяти виртуальный диск,

Тут то и писец... smile
Добавлено @ 13:51
oleg1973
За ссылку спасибо


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Romikgy
Дата 12.9.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(takedo @ 12.9.2005, 13:51)
Тут то и писец...

Помоему в нете куча исодников и объяснений как это сделать smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
p0s0l
Дата 12.9.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 3
Всего: 112



Вот неплохой простой пример для старта, правда на Delphi...
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=391622



--------------------
С уважением, г-н Посол.
PM   Вверх
JoyEx
Дата 14.9.2005, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 4
Всего: 12



Цитата(oleg1973 @ 12.9.2005, 10:20)
ну а чтоб запустить ехе из тела своей проги нада делать так (назовем ехе для запуска ехе1)
1) получить место в памяти с адреса указаного в image base exe1
2) перенести туда ехе1 с учетом смещений секций (RVA) тоесть разложить его там
3) заполнить таблицу импорта ехе1
4) передать на него управление


Так, да не так.
Если в коде нету команд с абсолютными адресами, то не надо делать п.1-2, если нету импорта, то не нужен п.3.. Остается тока п.4 о чём я и говорил smile

Без импорта можно обойтись - вызывать API по общеизвестным адресам или через шлюз ловушки.

А вооще, программа должна иметь свое адресное пр-во и т.д...


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
oleg1973
Дата 14.9.2005, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



Цитата
Если в коде нету команд с абсолютными адресами

а как ты это определиш?
Цитата
Без импорта можно обойтись - вызывать API по общеизвестным адресам или через шлюз ловушки.

ну дык может та прога которую мы запускамем имеет импорт ) или ты ее переделвать будеш? да и адреса разные на разных версиях винды
Цитата
А вооще, программа должна иметь свое адресное пр-во и т.д...

не обязательно, посматри как упаковшики ехешников работают



--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
JoyEx
Дата 14.9.2005, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 4
Всего: 12



oleg1973 , с праздником!


smile водочка-водочка меняешь ты походочку! smile

1) Мне вааще это не надо
2) Аналогично
3) Аналогично




--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
p0s0l
Дата 14.9.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 3
Всего: 112



JoyEx, таких программ которые ты описал, мало, и в природе встречаются в основном в виде вирей...
А если нужно запустить прогу, которая написана на HLL ? smile

Цитата(JoyEx @ 14.9.2005, 16:34)
А вооще, программа должна иметь свое адресное пр-во и т.д...
Посмотри пример по ссылке что я дал, там хорошая идея, заключающаяся в запуске cmd.exe. После запуска имейдж cmd.exe унмаппится, и туда по нужным адресам рассовываются секции ресурсного EXE-шника... А дальше управление передаётся ОС, которая старательно сама заполняет импорт и начинает работу проги...
Правда не всё запускается таким способом, но при желании можно и доработать... По крайней мере это намного лучше того, чем накладывать огромные ограничения на запускаемую программу... Имхо smile



--------------------
С уважением, г-н Посол.
PM   Вверх
JoyEx
Дата 14.9.2005, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 4
Всего: 12



Цитата(p0s0l @ 14.9.2005, 20:00)
Цитата (JoyEx @ 14.9.2005, 16:34)
А вооще, программа должна иметь свое адресное пр-во и т.д...

Посмотри пример по ссылке что я дал, там хорошая идея,


Ни разу не делал, но ... smile "ход мыслей мне нравится" (- © Мел Брукс <Всемирная История>)

p0s0l, и тебя тоже с праздником!


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Helicopterr
Дата 9.11.2005, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: нет
Всего: 3



Насколько я понял, автор темы интересовался аналогом ф-ции ShellExecute для файла в оперативной памяти. Вместо этого наиболее существенное что он получил - параноидальные обвинения в вирмейкерстве.
Я считаю очень важным умение работать с содержимым оперативки. В стандартной инфе по С++ не встречал функции для этого.
Есть утилита разработчика MoleBox. Она пакует к основной экзехе всё что требуется. Может и другую экзеху, используемую основной. При этом она работает только с оперативной и найти в папке Temp unzip нереально.


--------------------
people can fly
PM MAIL   Вверх
gki
Дата 20.12.2005, 20:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как организовать из оперативной память Windows XP виртуальный диск
  Вверх
Sardar
Дата 20.12.2005, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



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

Просто мысли... по идее что бы запустить прогу нужно загрузить её в память(создать имейдж процесса), убить себя, т.к. прога в виртуальном пространстве хочет быть одна обычно. Как то сервисами оси указать что страницы с инфой вообще то страницы с кодом, у оси права менять аттрибуты страниц есть. Раз паковщики exe'шников существуют, значит это всё возможно сделать... smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
p0s0l
Дата 21.12.2005, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 3
Всего: 112



Цитата(Sardar @ 20.12.2005, 23:18)
Раз паковщики exe'шников существуют, значит это всё возможно сделать..
Это делается через VirtualProtect(Ex)

Это сообщение отредактировал(а) p0s0l - 21.12.2005, 09:13


--------------------
С уважением, г-н Посол.
PM   Вверх
Helicopterr
Дата 11.1.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: нет
Всего: 3



Цитата(p0s0l @ 21.12.2005, 09:11)
Это делается через VirtualProtect(Ex)

А есть пример как юзать эту функцию?


--------------------
people can fly
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.