Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запуск .exe 
:(
    Опции темы
BumSoft
Дата 9.12.2002, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот такой вопрос:

есть файл:
xxxxxxxxxxxyyyyyyyyyyyyyyyxxxxxxxxxxxx
              |<- exe-файл ->|
внутри этого файла содержится exe-ник.
Как запустить этот exe-ник из какой-либо проги,через темп-файл не
устраивает :)
PM MAIL   Вверх
Step
Дата 9.12.2002, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



попробуй shellexecutiv


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
BumSoft
Дата 9.12.2002, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что - то не нашел я описание shellexecutiv в MSDN-е
PM MAIL   Вверх
AntonSaburov
Дата 9.12.2002, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата(BumSoft @ 09.12.2002, 13:33)
Что - то не нашел я описание shellexecutiv в MSDN-е

Здесь ошибочка вышла - ShellExecute. Хотя можно было бы и догадаться.
К тому же есть такая штука - CreateProcess. Самое то. Если MSDN есть - то смотри и "да прибудет с тобой шворц" :)
PM MAIL WWW ICQ   Вверх
Step
Дата 9.12.2002, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ShellExecute


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
AntonSaburov
Дата 9.12.2002, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Прочитал еще раз самое первое сообщение - и задумался.
Если ты имеешь в виду, что у тебя внутри файла есть поток байт, который будучи отдельно выделенным представляет из себя фактически EXE-файл, то я таких способов не знаю.
Думаю, что никак не получится - ты не можешь выполнять код, который является данными. А то, что ты считаешь - это данные.

А зачем такое сложное надо ? Для секретности ?
PM MAIL WWW ICQ   Вверх
BumSoft
Дата 9.12.2002, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
Если ты имеешь в виду, что у тебя внутри файла есть поток байт, который будучи отдельно выделенным представляет из себя фактически EXE-файл


Совершенно верно!  Причем я знаю смещение его и длину.
Конечно можно выделить его и записать(например в темп-файл) и запустить
через ShellExecute, потом удалить (тоже проблематично) - но мне это не очень
подходит( а если комп перезагрузили в это время - то темп-файл останется!).
PM MAIL   Вверх
AntonSaburov
Дата 9.12.2002, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата(BumSoft @ 09.12.2002, 15:08)
Цитата
Если ты имеешь в виду, что у тебя внутри файла есть поток байт, который будучи отдельно выделенным представляет из себя фактически EXE-файл


Совершенно верно!  Причем я знаю смещение его и длину.
Конечно можно выделить его и записать(например в темп-файл) и запустить
через ShellExecute, потом удалить (тоже проблематично) - но мне это не очень
подходит( а если комп перезагрузили в это время - то темп-файл останется!).

В том виде, в котором ты хочешь это сделать - никак. Вообще. Механизм защиты у Виндов тебе не позволит такое вытворять.
Может ты опишешь для чего тебе такое ? Может быть получится придумать альтернативу на более высоком уровне.
PM MAIL WWW ICQ   Вверх
BumSoft
Дата 9.12.2002, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Надо сделать обертку над ехе-ком и запускать его при выполнении
каких-либо условий(типа пароля что -ли ).
PM MAIL   Вверх
neutrino
Дата 10.12.2002, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Единственное, что можно - это оставить данные после ЕХЕ файла. Он все равно выйдет до них и вернет точку входа. А вот с началом... Это я не знаю.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Grey
Дата 10.12.2002, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Мне стало интересно вот что: если этого нельзя сделать то как же работают всякие запаковщики экзешников?
PM MAIL   Вверх
AntonSaburov
Дата 10.12.2002, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата(Grey @ 09.12.2002, 16:17)
Мне стало интересно вот что: если этого нельзя сделать то как же работают всякие запаковщики экзешников?

Они работают в свое досовской виртуальной машине - тормоза жуткие. Зато можно много чего.
PM MAIL WWW ICQ   Вверх
Fantasist
Дата 10.12.2002, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


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

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



Ха. Такой же вопрос я поднимал в этом форуме года полтора назад. Пришли к тому, что стандартно это сделать нельзя. Можно ли это сделать как-то не стандартно выяснено не было, но подозреваю, что нельзя(имеется ввиду без переписывания приличной части ядра Windows)


--------------------
Волны гасят ветер...
PM MAIL   Вверх
HexoGenus
Дата 11.12.2002, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

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



Цитата(Fantasist @ 09.12.2002, 23:01)
Ха. Такой же вопрос я поднимал в этом форуме года полтора назад. Пришли к тому, что стандартно это сделать нельзя. Можно ли это сделать как-то не стандартно выяснено не было, но подозреваю, что нельзя(имеется ввиду без переписывания приличной части ядра Windows)

А нельзя как нибудь сделать что бы программа могла еще раз запустить сама себя но уже с другой точкой входа в программу и что бы при втором запуске она сама вычищала из себя часть кода исходной программы так что-бы оставался только вложенный exe... ????
(т.е. программа оригинал находится как бы не до а после вложенного exe...
а в начале стоит команда перехода, при втором же запуске эта команда заменяется на то что и должно стоять во вложенном exe и уменьшается блок памяти отведенный под программу таким образом что бы отрезать вложенную программу)
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
XpyDi
Дата 13.12.2002, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Во-первых: привет Fantasist.
А во-вторых предлагаю способ, который предлагал пол года тому назад:
Итак берем наш подопытный exe-шник и начиная с точки входа выдираем оттуда около 1000 байт, соответсвено если его запустить ничего толкового не получиться. Сохраняем у себя эти 1000 байт и сохраняем у себя этот exe. Потом когда нужно запустить этого подопытного кролика запускаем его с помошью ф-ции CreateProcess с установленным флагом СREATE_SUSPENDED, при помощи функций WriteProcessMemory дописываем на свое место "похищенные" байты и вызываем ResumeThread для запуска основного потока процесса.
Плюсы: при перезагрузке компьютера получаем неработоспособный exe.
Можно, конечно сделать дапм всего процесса, но тогда прийдеться восстанавливать таблицу импорта, да и вообще дамп прийдеться сделать сразу после того, как ваша программа вернут все на место, но до исполнения подопытной.
Минусы: Это как и все существующие на сегодняшний день защиты несовершена. Это как всегда дамп процесса.
Аналоги: StarForce

Способ 2: если коротко то смотри исходник upx.
Плюсы: обертка стоит, программа для запуска не сохраняеться во внешний файл.
Минусы: посмотри как часто снимают одного из лучших представителей пакеров-протекторов для Shareware программ ASProtect.
Аналоги: ASProtect, VBOX, да практически все покеры-протекторы.
PM MAIL WWW ICQ   Вверх
Fantasist
Дата 14.12.2002, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


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

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



Цитата(XpyDi @ 13.12.2002, 15:04)

Привет.
Что-то я не помню такого предложенного тобой способа. :) Ну правда давно это было. А ты сам это пробывал? Теоретически выглядит все здорово.

Кстати, недавно прошло обсуждение(не здесь) в ходе которого было данно утверждение, что запущенный екзешник удалить можно. Для этого надо только закрыть FileMapping который windows открывает для запущенного екзешника. Правда, как я понял, надо рассчитывать, что далее екзешник не будет использован системой для подкачки (то есть лучше чтобы этот екзешник сразу бы и завершал работу). Сам не эксперементировал.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
XpyDi
Дата 14.12.2002, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Первый способ был предложен полгода назад, правда тогда я сам не очень сильно представлял, как, что и куда пихать.
По-поводу пробывал ли сам, честно скажу - нет. Сегодня попробую, завтра скажу какие были результаты. А так StarForce уже существует достаточно долго и вот не помню с какой или в какой версии было реализовано нечто похожее, точнее, там загрузчик прежде, чем запустить программу загружал все dll, а StarForce'вская dll'ка в ф-ии WinMain, как раз и дописывала похищенные байты на место.

А ссылку на это обсуждение не дашь?
PM MAIL WWW ICQ   Вверх
Fantasist
Дата 14.12.2002, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


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

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



Ну, это не сама та ветка (ту вроде найти не удалось), однако в ней это утверждение было повторенно по моей просбе. Мне это в принципе не очень интересно, но если тебе интересно, там и поспрашивай. Хотя, как я понял, надо идти на http://sysinternals.com и там можно все это, и не только, прочитать.

http://delphi.mastak.ru/cgi-bin....523&n=5


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


Шустрый
*


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

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



Вообщем так первый способ я проверил работает стабильно(по крайней мере у меня).
Если хочешь сам проверить вот:
Подопытная
Загрузчик
Подопытная не запускаеться самостоятельно, а только при помощи загрузчика. Из неё я наглым образом из RVE взял 31 байт(может можно было и меньше, но я хотел сразу получить ошибку при запуске).
Едиснственное предупреждаю, что подопытная начинает перемещать иконки по рабочему столу, чтобы это небыло для вас сюрпризом.

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

Жаль конечно, что ту самую ветку найти не удалось. Я если честно не совсем понял, все что там написано про размапивание файла это проверено практикой или просто очень похоже на действительность.

Вообщем если можно размапить, то тогда у меня есть такая идея. Как вариант можно пройтись по всему файлу в памяти считывая и записывая код, но не изменяя его, таким образом ОС будет думать, что кусок изменился не будет свопить его из первоначального exe, а скинет в отдельный файл, таким образом первоначальный exe уже не нужен. Вот только тут одна проблемка, если размапить файл не выгрузит ли ОС сразу программу из памяти?
PM MAIL WWW ICQ   Вверх
Fantasist
Дата 15.12.2002, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


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

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



Цитата
Вообщем так первый способ я проверил работает стабильно(по крайней мере у меня).
Если хочешь сам проверить вот:


Да ладно, я тебе верю.  :) Спасибо, что проверил. Можно объеденить с самоудалением, и получиться в принципе ниче. Правда все равно, пока екзешник запущен его можно скопировать. Разве что, если загрузчик удалить, то восстановить его будет практически невозможно. Правда неизвестно насколько трудно будет достать загрузчик, но это уже проблема из другой области. Да и это все-таки обходное решение, запустить ехе так, чтобы сам его файл не был бы доступен не получиться.

Цитата
Вообщем если можно размапить, то тогда у меня есть такая идея. Как вариант можно пройтись по всему файлу в памяти считывая и записывая код, но не изменяя его, таким образом ОС будет думать, что кусок изменился не будет свопить его из первоначального exe


Что-то сомнительно. Мне не думается что ОС будет себя так вести. Хотя говорю, на системном уровне я практически 0.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
BumSoft
Дата 16.12.2002, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2XpyDi

У меня не запускается ни подопытная, ни с помощью загрузчика,
причем в обоих случаях вываливаются по разным адресам.
PM MAIL   Вверх
XpyDi
Дата 17.12.2002, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2BumSoft:
Если честно, то был очень удивлен твоим сообщением, т.к. специально после его прочтения скачал заново в отдельную папку запустил и все работает.
Тогда у меня к тебе пару вопросов:
1 В какой ОС ты проверял?
Дело в том, что сама подопытная писалась для себя и проверялась только на моем компьютере, да и для себя, так что ничего не могу гарантировать.
2 А сам загрузчик запускаеться?
3 Можно белее полные сообщения об ошибках?
2Fantasist:
1 Я предложил вариант, который хоть и не универсальный, но его можно развить во что-нибудь более-менее нормальное.
2 Сама идея, заставить ОС думать, что кусок кода изменился, чтобы его теперь не свопить из первоначального exe основывалась только на документацию и на то что написано в книге Джефри Рихтера о памяти и о процессе работы ОС с ней. Никаких практических тестов не проводилось.
PM MAIL WWW ICQ   Вверх
BumSoft
Дата 20.12.2002, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2XpyDi

Не мог быстро ответить-был в командировке.
У меня WIN98(SE).
При запуске WorkTable.exe вываливается по адресу 017f:00403b1c.
Загрузчик сам запускается, при нажатии на кнопку
WorkTable.exe вываливается по адресу 017f:00403b3e.
PM MAIL   Вверх
XpyDi
Дата 22.12.2002, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2BumSoft
Посмотрел я на ошибки и если честно был крайне удивлен, т.е. первая срабатывает там где нужно, а вот вторая происходит:
1) уже после тех байт которые я записывал, т.е. я записывал в начало 31 байт, а исключение показывает на 34 байт от начала.
2) исключение указывает на середину интсрукции процессора.
У меня, к несчастью, не стоит Win98(SE), поэтому тут есть 3 выхода:
1) ты повторишь этот эксперимент на своем компьютере и посмотришь на результаты.
2) После исключения сделаешь дамп памяти и отошлешь мне, а я уже буду смотреть.
3) Я перепишу эти программу на асм, т.к. тогда я буду уверен в каждом байте программы, а не только в логике её работы.
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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