![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Доброго времени суток всем.
Имеем мы на руках следующее. Есть некий файл "file1.exe", в конец которого дописан другой файл "file2.exe". До етого всё работало так: После запуска программы file1.exe Она читает собственный "хвост", затем записывает его под именем, например "file2.exe" после чего - в нужный момент запускает его. Появилась необходимость модифицировать программу так, что бы вторая программа запускалась не копируясь куда-либо! Т.е. возникла необходимость передать управление другой программе исключая её появление на жёстком (либо другом) диске. Постараюсь ещё точнее сформулировать вопрос: Можно ли каким-то образом "перекинуть" управление на (или проще говоря "запустить") какую-либо часть exe-файла? Если не ошибаюсь - в ассемблере это выглядит примерно как "jp" или "jmp"... Спасибо всем! -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: нет Всего: 25 |
думаю, в стандартном C++ именно такой возможности не предусмотрено
хотя можно просто сделать
оффтоп что, вирус пишешь, а антивирь его определяет? |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Я конечно всё понимаю, но видимо забыл указать один очень важный факт: исходников программы №2 - у меня нет. Программа №1 - скомпилированная мной, программа №2 (file2.exe) - .exe-файл неизвестного происхождения (и назначения тоже
Может быть можно сделать какой-нибудь "диск"в ОЗУ или где-нибудь ещё так, что бы туда юзверь - при всём желании не залез? --- По поводу вирусов - 90% антивирусников (даже преславутый "Avast") - реагируют на то, что в .exe-файле 2 заголовка для запуска программы и шуриком это блокуриют. Избежать этого можно только ооочень хорошо зная ассемблер - "отрезав" заголовок .exe-приложения и перекинуть управление в другую программу как в продолжение машинного кода... К сожалению данными знаниями я не обладаю. Так-что с вирусами - ОБЛОМ! -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
WolfAlone, WinRar в помощь:
silent тип распаковки в Temp каталог и запуск 2 файлов из архива. |
|||
|
||||
| Alek86 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: нет Всего: 25 |
вроде ж низя
думаю, нужно как-то спроецировать файл в память в винде это ф-ии CreateFileMapping а потом MapViewOfFile начиная с требуемого байта хотя как извратиться, чтобы эту проекцию запустить, не знаю лучше спроси в разделе по winapi хотя интересно, с чего это вдруг ты не можешь создать файл на диске? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
вот тут есть вроде немного по теме )
|
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
О_о вот это лес... Архив ето конечно очень хорошо, но это не выход! Можно ведь и в "самого себя" (в программу) дописать другую программу, а затем её оттуда скопировать на жесткий диск (куда-нибудь), а потом запустить... Но опять же, это тоже не выход! Нужно как-то засунуть в EXE-файл, другой EXE-файл, и запустить его оттуда, не даруя возможности конечному пользователю - найти файл на жеском диске! Так как файл №2 должен быть надежно защищен от глаз, рук и прочих негативных влияний конечного пользователя, во избежание его отделения от основного exe-файла...
Всем спасибо за внимание, пойду рыть под CreateFileMapping ... Если что-нибудь выйдет - я сразу отпишусь! -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| Juice |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 13.1.2007 Репутация: нет Всего: нет |
В принципе проще можно. Если у тебя сейчас твоя прожка перед передачей управления второй программе скидывает её на диск для запуска, то можно сделать склеивание 2-х екзешников. В своей проге напрочь удалить функционал по запуску второй прогулины, оставить лишь видимый/полезный функционал. А в интрнетах поискать склеиватели исполняемых файлов - их до одного места, т.е. очень много. И потом свой exe и второй, исходников которго нет, слепить в один.
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
1) можно и просто дописать второй файл к первому (оверлей), и зачитать его (перенеся в TEMP) и запустив...
2) можно написать свой загрузчик EXE (сложно, но примеры есть вроде на wasm.ru) 3) можно засунуть второй файл в рессурсы первого и т.д. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Правила форума "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. |