Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 544
#1

Внедрение DLL в EXE - C++

31.07.2016, 13:41. Просмотров 436. Ответов 6
Метки нет (Все метки)

Здравствуйте, хочу написать свой объединитель exe и dll. Подскажите, как это можно сделать так, чтобы можно было при запуске использовать dll без записи на диск
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
15098 / 6793 / 1073
Регистрация: 02.05.2013
Сообщений: 11,104
Завершенные тесты: 1
31.07.2016, 13:59     Внедрение DLL в EXE #2
Никак.
Windows работает, опираясь на определенные принципы.
Один из этих принципов - исполняемому файлу для работы нужна секция на диске.
Найдешь способ избавиться от этой секции - получишь другие проблемы.
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 544
31.07.2016, 15:12  [ТС]     Внедрение DLL в EXE #3
Но ведь есть протекторы, Themida, например, которые это реализуют
Убежденный
Системный программист
Эксперт С++
15098 / 6793 / 1073
Регистрация: 02.05.2013
Сообщений: 11,104
Завершенные тесты: 1
31.07.2016, 15:24     Внедрение DLL в EXE #4
Хочешь сказать, что протекторы не используют запись файла на диск?

... и в итоге все так или иначе сведется к ручной загрузке dll из памяти.
У dll не будет объекта-секции на диске, поэтому возможны различные
неприятности.

Как по мне, так слишком много "заморочек" ради непонятной выгоды.
Avazart
7062 / 5239 / 261
Регистрация: 10.12.2010
Сообщений: 23,037
Записей в блоге: 17
04.08.2016, 13:27     Внедрение DLL в EXE #5
Я где-то в блогах видел заметку как грузить DLL из памяти.
(там кажется на Delphi, но там же видел кажется отсыл к коду на C++)
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
04.08.2016, 15:56     Внедрение DLL в EXE #6
pe-loader

library, which help to describe or load and execute PE files.
Задуматься над такой библиотекой меня сподвигла статья : http://www.rsdn.ru/?article/baseserv/peloader.xml
А источники, которые я изучал для написания, и вспомнить уже не удастся, их было очень много.

Это уже готовая библиотека, которую вполне можно использовать для работы с небольшим dll-файлом.
Я не проверял работу на загрузке системных или каких либо сложных dll, поэтому не могу ручаться за корректность работы кода полностью для всех случаев.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2016, 11:58     Внедрение DLL в EXE
Еще ссылки по теме:

C++ Встроить dll в exe
C++ Редактировании файла .DLL и .exe
Dll и exe в одном файле C++
C++ WinAPI Внедрение DLL через реестр
Внедрение кода и слияние exe с dll C++ WinAPI

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
jupman
182 / 85 / 13
Регистрация: 10.11.2015
Сообщений: 232
05.08.2016, 11:58     Внедрение DLL в EXE #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
hiphone, это вполне реально, я делал подобное, но как уже сказал Убежденный заморочек много. Действовать нужно примерно так: мэппингуем образ, настраиваем релоки, добавляемся в ldr-list, хучим свою же DllMain (если элоцирование было через VirtualAlloc, не помню уже какие я костыли в хуке возводил) иначе FreeLibrary не сможет корректно выгрузить вашу dll, настройка импорта, аттрибутов секций (VirtualProtect), если требуется то обработка tls (делал на основе вызова Ldrp функций LdrpHandleTlsData etc, они не экспортируются так что придется сигнатуры таскать для каждой версии, от XP до 10), если требуется поддержку оверлеев (перехват API ФС).

Добавлено через 3 минуты
hiphone, но универсальный лоудер все равно не получится сделать
.
Yandex
Объявления
05.08.2016, 11:58     Внедрение DLL в EXE
Ответ Создать тему
Опции темы

Текущее время: 17:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru