![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| sax0n |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.10.2006 Репутация: нет Всего: нет |
Привет всем.
Прошу не отправлять сразу на поиск. я там был. найденные варианты не катят ( нужно реализовать сабж, совместимый для !всех! Вин версий (98 - Виста). есть такой вариант - пример Гарри Неббетта, но он не работает для х64 систем. Если кто знает какие-то другие способы или варианты загрузки, прошу поделиться. Есть программа MoleBox, которая умеет выполнять нужные функции (правда не знаю, как дела обстоят с платформами). Вот бы ее исходники. П.С. код не должен использовать компонент (без исходников). Заранее всем спасибо. |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
Создавай темп файл. В винде не существуют сопособа запускать из памяти процессы. Это подтверждают все примеры
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
а откуда, по-твоему, UPX их запускает?..
sax0n, смотри исходники UPX'а. насчет висты не уверен, но под остальными осями он точно работает... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| sax0n |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.10.2006 Репутация: нет Всего: нет |
Спасибо за ответы. Нашел исходники upx, копаю.
2Tectoder: я привел пример программы, которая делает это в вопросе. при чем я проверил ) просто вариант с upx немного настораживает в виду того, что его действия можно назвать заражением. мне больше по душе какой-нибудь вариант с ресурсами - боюсь, что из-за ничего в конце долгой работы над программой может оказаться, что антивирус не будет давать ей работать ( |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
для предотвращения этой проблемы достаточно отправить .exe-шник разработчикам антивиря: они внесут его в базу "ложных срабатываний"
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
UPX их запускает внутри своего процесса. Т.е. не запускает чужой процесс. Гораздо интереснее запуск программы по сети и с флешки, там действительно происходит запуск из ОЗУ, но в этих случаях создается как бы виртуальный путь к файлу. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| sax0n |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.10.2006 Репутация: нет Всего: нет |
2Alexeis: напишите пожалуйста более конкретнее эти способы. Особенно второй (с виртуальными путями).
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
Это не второй, оба по сути одинаковы. sax0n, чего ни разу по сетке проги не запускал?
"\\Vasea Pupkin\Papka\My.exe" Файл не расположен на твоем диске, но запуск производиться в винде того кто запустил экзешник, т.е. исполняемый файл копируется по сети и запускается. Еще пример, виртуальный CD-ROM, никакого привода нет, все обслуживает драйвер виртуального устройства. Винда сопоставляет драйверу путь, все запросы чтение-запись происходят через него, потому по этому пути можно запустить экзешник. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| _hunter |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
так никто, кажется, и не говорил о создании нового процесса...
с такой точки зрения любой запуск происходит из ОЗУ: программа сначала туда грузится а потом получает управление... -------------------- Tempora mutantur, et nos mutamur in illis... |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
Правильно, но это делает винда, а винда для запуска процесса должна иметь путь к экзешнику, а не его адрес в памяти. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Есть у меня пример, который должен работать и в 98(на NT системах протестировано), но он на ВБ. Пойдёт?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
для загрузчика это все совершенно безразлично - "прозрачность" обеспечивается средствами поддержки файловых систем. так что никакого "запуска из ОЗУ"(в том смысле, в каком он упоминается автором топика) в данном случае нет. sax0n, для 64-битных надо реализовывать отдельный кусок - универсального никак не получится(возможно и для 9x линейки надо будет рихтовать). если же речь о wow64, то, по идее, принцип должен остаться тем же - остановка загрузки в определенный момент и подмена образа в памяти. если что-то не работает в этой схеме под wow64, то, возможно, поможет отладка - выяснить какие именно функции не работают... что-то конкретное в данном случае сказать не могу, т.к. в глаза не видел 64-битных виндуз |
|||
|
||||
| sax0n |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.10.2006 Репутация: нет Всего: нет |
Спасибо за ответы всем.
2Alexeis: немного не то с сетевыми адресами. Нужно сделать так, чтобы моя программа зашифровала ЕХЕ, но он не потерял свою работоспособность. при запуске загрузчик некий записывает расшифрованный ЕХЕ в память и запускает его. внешние средства хранения информации не подходят - сохранять в файл нельзя. только ОЗУ... 2_hunter: про ОЗУ я понимаю 2W4FhLF: был бы очень признателен за пример. ([email protected])
Вот. мы ближе подходим к нужной теме. В этом скорее всего и будет заключаться вся работа. нужно проделать путь заполнения разных там таблиц дескрипторов и всего прочего до передачи управления непосредственно коду программы. Где-то проскакивал пример, когда запускают "cmd.exe", ставят на паузу процесс, а потом подменяют все там на нужный ЕХЕ. но только вариант создает еще один процесс и насколько я помню платформозависимый (в разных Вин). 2dumb: для начала хочется сделать хоть как-то и для просто 32-битных, например. это все будет зависить от реализации алгоритма. Вот есть такой вариант, но он не проработан пока полностью: через внедрение потоков через createremotethread. но здесь очень много вопросов остается с передачей управления и таблицей импорта. Видел пример дырки в Винде(жаль, что его давно исправили): через WM_COPYDATA (точно не скажу, может и не так) записывают какой-то код в адресное пространство приложения и меняют вроде как регистр инструкций на выполнение на начало этого записанного участка. может кто знает что-то такого типа... |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Я тебе его хотел предложить Глянь - http://wasm.ru/article.php?article=memfile Добавлено через 1 минуту и 30 секунд Хм... А что ты вообще пишешь? Тебе что нужно выполнение кода в АП чужого процесса? Тогда код должен быть базонезависимым. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
![]()
|
| Правила форума "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. |