Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

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

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

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

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

Редактировании файла .DLL и .exe - C++
Доброго времени суток дорогие форумчане! Прошу прощение если я ошибся разделом (перенесите пож.) :sorry: В общем нужно отредактировать...

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

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

Внедрение мультиплеера C++ - C++
Привет дорогие форумчане. Возникла задача сделать мультиплеер для игры(исходных кодов которой я не имею) . Разбил на задачки и вот одна...

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

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

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

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

Как по мне, так слишком много "заморочек" ради непонятной выгоды.
1
Avazart
Эксперт С++
7585 / 5570 / 330
Регистрация: 10.12.2010
Сообщений: 24,990
Записей в блоге: 17
04.08.2016, 13:27 #5
Я где-то в блогах видел заметку как грузить DLL из памяти.
(там кажется на Delphi, но там же видел кажется отсыл к коду на C++)
0
gazlan
3139 / 1915 / 285
Регистрация: 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
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Привет! Вот еще темы с ответами:

Windows I/o без Kernel32.dll и Advapi32.dll - C++
Добрый день. Необходимо в Windows XP SP3 распечатать в стандартный поток "some text here" без прямого или косвенного использования...

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

Внедрение dll - C++ Builder
HANDLE aaa; LPVOID vi; HINSTANCE dll; void __fastcall TForm1::Button1Click(TObject *Sender) { aaa = FindWindow(0,"Form11"); ...

DLL библиотеке в конечный EXE - C++ Builder
Подскажите как вшить DLLки в EXEшник? Если через ProjectManager, то как? borlndmm.dll CC3260MT.DLL Без этих 2х длл проект не...


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

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

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