Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
hiphone
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
#1

Внедрение DLL в EXE

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

Здравствуйте, хочу написать свой объединитель exe и dll. Подскажите, как это можно сделать так, чтобы можно было при запуске использовать dll без записи на диск
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2016, 13:41
Ответы с готовыми решениями:

Редактировании файла .DLL и .exe
Доброго времени суток дорогие форумчане! Прошу прощение если я ошибся разделом...

Список функций из стандартных dll библиотек (lib.exe MVS)
В общем нужен список функций (желательно и хедеров, в которых они находятся)...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями?
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL...

Внедрение компилятора
Собираюсь создать свой игровой движёк в стиле Quest3D или Uniti3D. На данный...

Внедрение мультиплеера C++
Привет дорогие форумчане. Возникла задача сделать мультиплеер для...

6
Убежденный
Ушел с форума
Эксперт С++
15954 / 7266 / 1178
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
31.07.2016, 13:59 #2
Никак.
Windows работает, опираясь на определенные принципы.
Один из этих принципов - исполняемому файлу для работы нужна секция на диске.
Найдешь способ избавиться от этой секции - получишь другие проблемы.
0
hiphone
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
31.07.2016, 15:12  [ТС] #3
Но ведь есть протекторы, Themida, например, которые это реализуют
0
Убежденный
Ушел с форума
Эксперт С++
15954 / 7266 / 1178
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
31.07.2016, 15:24 #4
Хочешь сказать, что протекторы не используют запись файла на диск?

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

Как по мне, так слишком много "заморочек" ради непонятной выгоды.
1
Avazart
Эксперт С++
7717 / 5626 / 549
Регистрация: 10.12.2010
Сообщений: 25,328
Записей в блоге: 17
04.08.2016, 13:27 #5
Я где-то в блогах видел заметку как грузить DLL из памяти.
(там кажется на Delphi, но там же видел кажется отсыл к коду на C++)
0
gazlan
3139 / 1915 / 311
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
04.08.2016, 15:56 #6
pe-loader

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

Это уже готовая библиотека, которую вполне можно использовать для работы с небольшим dll-файлом.
Я не проверял работу на загрузке системных или каких либо сложных dll, поэтому не могу ручаться за корректность работы кода полностью для всех случаев.
0
jupman
230 / 133 / 19
Регистрация: 10.11.2015
Сообщений: 305
05.08.2016, 11:58 #7
Лучший ответ Сообщение было отмечено HighPredator как решение

Решение

hiphone, это вполне реально, я делал подобное, но как уже сказал Убежденный заморочек много. Действовать нужно примерно так: мэппингуем образ, настраиваем релоки, добавляемся в ldr-list, хучим свою же DllMain (если элоцирование было через VirtualAlloc, не помню уже какие я костыли в хуке возводил) иначе FreeLibrary не сможет корректно выгрузить вашу dll, настройка импорта, аттрибутов секций (VirtualProtect), если требуется то обработка tls (делал на основе вызова Ldrp функций LdrpHandleTlsData etc, они не экспортируются так что придется сигнатуры таскать для каждой версии, от XP до 10), если требуется поддержку оверлеев (перехват API ФС).

Добавлено через 3 минуты
hiphone, но универсальный лоудер все равно не получится сделать
.
1
05.08.2016, 11:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2016, 11:58

При компиляции DLL-проекта не создается DLL-ка
Добрый день. создал в Visual Studio 2010 проект C+= типа DLL. В файл...

Windows I/o без Kernel32.dll и Advapi32.dll
Добрый день. Необходимо в Windows XP SP3 распечатать в стандартный поток...

Создать exe, запускающий exe
Говорю сразу: я ничего не смыслю в програмировании; зачем подался на такой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru