Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Выгрузка dll из процесса.  (Прочитано 14691 раз)
0 Пользователей и 1 Гость смотрят эту тему.
nesteras79
Новенький

ru
Offline Offline

« : 24-08-2012 15:53 » 

Подскажите пожалуйста.
Как можно пос ли внедрения dll в процесс выгрузить её и что бы функциональность её осталось в памяти процесса.


Добавлено через 56 секунд:
Да к стати на С++
« Последнее редактирование: 24-08-2012 15:54 от nesteras79 » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 24-08-2012 16:11 » 

nesteras79, нет. Грубо говоря: при загрузке дисковый файл с dll, содержащий код, отображается в адресное пространство процесса; после выгрузки не отображается, и код становится недоступным для исполнения.


А смысл?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #2 : 24-08-2012 16:12 » 

nesteras79, Не понял, если честно. Функциональность обеспечивает библиотека. Выгружаеш ее, теряеш ту функциональность, которую она несет. Можно вообше библиотекой не пользоваться. Всю функциональность написать или позаимствовать в свой код.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zubr
Гость
« Ответ #3 : 24-08-2012 17:05 » 

В принципе можно. Если записать dll в память процесса, после чего ее можно удалить с диска. Это может быть любой код, не только dll.
Записан
nesteras79
Новенький

ru
Offline Offline

« Ответ #4 : 24-08-2012 17:17 » 

Мне нужно загрузить длл в программу и что бы программа не увидела эту длл.
Вариант есть срыть длл, но программа вдет скрытые длл.
Ещё вариант загрузить длл в адресное пространство и выгрузить,при этом образ длл должен остатьса.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 24-08-2012 17:20 » new

nesteras79, Вирусописательством занимаемся Улыбаюсь Если Код программы специально не сканирует свое адресное пространство, то и естественно видеть не будет. Параноей отличаются в основном только антивирусы.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zubr
Гость
« Ответ #6 : 24-08-2012 17:49 » 

Варианты:
1. Загрузить через WriteProcessMemory нужный код и запустить его через удаленный поток.
2. Загрузить через WriteProcessMemory нужный код и запустить его, прописав инструкцию call на него, используя DebugApi.
3. Перехватить в процессе-жертве функции ReadProcessMemory и возможно функции ToolHelpApi, чтобы не дать процессу отследить наличие твоей длл.

Добавлено через 1 минуту и 46 секунд:
Finch, разного рода античиты тоже отличаются подобной паранойей.
« Последнее редактирование: 24-08-2012 17:50 от zubr » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 24-08-2012 19:03 » 

zubr, так тебе и дали куда хочешь писать. Ещё права нужно иметь соответствующие, и отслеживать управление памятью в том процессе, куда пишешь, чтобы что-нибудь не сломать, или процесс сам не затёр.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
zubr
Гость
« Ответ #8 : 24-08-2012 19:25 » 

Dimka, ну в дочерний процесс - практически без проблем пишется (UAC тоже молчит), потому как на одном уровне привилегий. Что касается управления памятью, так для этого есть VirtualAllocEx, позволяющая резервировать нужные регионы памяти. Если только внешняя программа будет отслеживать WriteProcessMemory типа резидентных антивирусов...
« Последнее редактирование: 24-08-2012 19:27 от zubr » Записан
nesteras79
Новенький

ru
Offline Offline

« Ответ #9 : 25-08-2012 08:50 » 

А можно в примере объяснить как сделать это в длл.
Записан
zubr
Гость
« Ответ #10 : 25-08-2012 09:36 » 

nesteras79, приведенные выше технологии я применял в различных читах, античитах, крипторах. Но код коммерческий и по понятным причинам я его здесь выкладывать не буду.
Посмотри на wasm.ru, там есть примеры выполнения своего кода в чужом процессе через удаленный поток, использования DebugApi и т. п.
Вот ссылка интересная: http://rsdn.ru/forum/src/330915.aspx
Записан
nesteras79
Новенький

ru
Offline Offline

« Ответ #11 : 25-08-2012 12:25 » 

Ок всем спасибо.

Добавлено через 7 минут и 20 секунд:
zubr,
Я тебе в личьку написал.
« Последнее редактирование: 25-08-2012 12:33 от nesteras79 » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines