![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
BumSoft |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.12.2002 Репутация: нет Всего: нет |
Вот такой вопрос:
есть файл: xxxxxxxxxxxyyyyyyyyyyyyyyyxxxxxxxxxxxx |<- exe-файл ->| внутри этого файла содержится exe-ник. Как запустить этот exe-ник из какой-либо проги,через темп-файл не устраивает ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
попробуй shellexecutiv
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
BumSoft |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.12.2002 Репутация: нет Всего: нет |
Что - то не нашел я описание shellexecutiv в MSDN-е
|
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Здесь ошибочка вышла - ShellExecute. Хотя можно было бы и догадаться. К тому же есть такая штука - CreateProcess. Самое то. Если MSDN есть - то смотри и "да прибудет с тобой шворц" ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
ShellExecute
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Прочитал еще раз самое первое сообщение - и задумался.
Если ты имеешь в виду, что у тебя внутри файла есть поток байт, который будучи отдельно выделенным представляет из себя фактически EXE-файл, то я таких способов не знаю. Думаю, что никак не получится - ты не можешь выполнять код, который является данными. А то, что ты считаешь - это данные. А зачем такое сложное надо ? Для секретности ? |
|||
|
||||
BumSoft |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.12.2002 Репутация: нет Всего: нет |
Совершенно верно! Причем я знаю смещение его и длину. Конечно можно выделить его и записать(например в темп-файл) и запустить через ShellExecute, потом удалить (тоже проблематично) - но мне это не очень подходит( а если комп перезагрузили в это время - то темп-файл останется!). |
|||
|
||||
AntonSaburov |
|
||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
В том виде, в котором ты хочешь это сделать - никак. Вообще. Механизм защиты у Виндов тебе не позволит такое вытворять. Может ты опишешь для чего тебе такое ? Может быть получится придумать альтернативу на более высоком уровне. |
||||
|
|||||
BumSoft |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.12.2002 Репутация: нет Всего: нет |
Надо сделать обертку над ехе-ком и запускать его при выполнении
каких-либо условий(типа пароля что -ли ). |
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Единственное, что можно - это оставить данные после ЕХЕ файла. Он все равно выйдет до них и вернет точку входа. А вот с началом... Это я не знаю.
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
Grey |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 25.3.2002 Репутация: нет Всего: нет |
Мне стало интересно вот что: если этого нельзя сделать то как же работают всякие запаковщики экзешников?
|
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Они работают в свое досовской виртуальной машине - тормоза жуткие. Зато можно много чего. |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Ха. Такой же вопрос я поднимал в этом форуме года полтора назад. Пришли к тому, что стандартно это сделать нельзя. Можно ли это сделать как-то не стандартно выяснено не было, но подозреваю, что нельзя(имеется ввиду без переписывания приличной части ядра Windows)
-------------------- Волны гасят ветер... |
|||
|
||||
HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
А нельзя как нибудь сделать что бы программа могла еще раз запустить сама себя но уже с другой точкой входа в программу и что бы при втором запуске она сама вычищала из себя часть кода исходной программы так что-бы оставался только вложенный exe... ![]() (т.е. программа оригинал находится как бы не до а после вложенного exe... а в начале стоит команда перехода, при втором же запуске эта команда заменяется на то что и должно стоять во вложенном exe и уменьшается блок памяти отведенный под программу таким образом что бы отрезать вложенную программу) --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
XpyDi |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 25.11.2002 Где: USSR Репутация: нет Всего: 2 |
Во-первых: привет Fantasist.
А во-вторых предлагаю способ, который предлагал пол года тому назад: Итак берем наш подопытный exe-шник и начиная с точки входа выдираем оттуда около 1000 байт, соответсвено если его запустить ничего толкового не получиться. Сохраняем у себя эти 1000 байт и сохраняем у себя этот exe. Потом когда нужно запустить этого подопытного кролика запускаем его с помошью ф-ции CreateProcess с установленным флагом СREATE_SUSPENDED, при помощи функций WriteProcessMemory дописываем на свое место "похищенные" байты и вызываем ResumeThread для запуска основного потока процесса. Плюсы: при перезагрузке компьютера получаем неработоспособный exe. Можно, конечно сделать дапм всего процесса, но тогда прийдеться восстанавливать таблицу импорта, да и вообще дамп прийдеться сделать сразу после того, как ваша программа вернут все на место, но до исполнения подопытной. Минусы: Это как и все существующие на сегодняшний день защиты несовершена. Это как всегда дамп процесса. Аналоги: StarForce Способ 2: если коротко то смотри исходник upx. Плюсы: обертка стоит, программа для запуска не сохраняеться во внешний файл. Минусы: посмотри как часто снимают одного из лучших представителей пакеров-протекторов для Shareware программ ASProtect. Аналоги: ASProtect, VBOX, да практически все покеры-протекторы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |