[ Новые сообщения · Участники · Правила форума · Поиск · RSS ] |
|
Фан Форум для LF'айтеров Игрострой Модострой LF2 Способы подключения длл к ехе. |
Способы подключения длл к ехе. |
Soul-AR, зачем?
Принцип инициализации ДЛЛ всегда будет примерно одинаковый в любой программе: 1. Запускается программа (точка старта, определенная строка адреса) 2. Идёт считывание данных по порядку приоритетов\расположения (в данном случае длл всегда ниже по приоритету, чем сама инициализация программы) 3. Человек вставляет сразу после точки инициализации JMP туда, где прописан адрес загрузки DLL, имя файла и т.д. в ACSII кодировке (способ прописки есть в видеоуроке) 4. После подключения DLL делается JMP обратно, к следующей строке, которая должна была грузится, если бы мы не выполнили пункт 3. 5. Теперь программа продолжает работать так же, как обычно, но с добавленными данными из внешнего файла, в данном случае - DLL. способ не станет меняться, каким бы извратом вы не занимались. Только вот адреса могут слегка изменяться, в зависимости от того как и куда они были перемещены после изменений тем или иным кодо-ковыряльщиком.
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity 10% of programming skills 10% of tan levels in your blood. |
Soul-AR, Даже если подключишь dll к exe dll не будет работать. Адреса новой ехе смещены, поэтому dll не будет поддерживать новый ехе, остается разве что переписать dll к нужным адресам.
[ Маленький Фриз говорит: это сообщение было отредактировано!] |
Quote (EXtraBender) Soul-AR, Даже если подключишь dll к exe dll не будет работать. Адреса новой ехе смещены, поэтому dll не будет поддерживать новый ехе, остается разве что переписать dll к нужным адресам. Я тебе это и говорил >_> Quote (SURIK) den_lol Не не не, не подумай, я все еще жду))))Просто интересно)
ERKD team togever NTLH FOREVER!
|
Напиши фундаментальные принципы, может кому пригодиться для саморазвития.
Существует два способа подключения dll к исполняемому файлу: 1) Динамический 2) Статический При динамическом способе используются api-функции windows: LoadLibrary, GetProcAddress. Как зафигачить их в экзешник - думайте сами, решайти сами: а) в пустые участки, б) в те участки кода которые не использутся и их можно смело затереть в) в новую секцию добавленную через какой-нибудь PE-редактор. При статическом это на стадии компилирования исходников в EXE. Создаётся таблица импорта откуда и берутся имена длл-ок и и функции которые используются. То есть можно при создании своей длл дать ей имя такое же как и как у какой-нибудь dll в таблице импорта экзешника. И нужный код вставить в функцию с тем же именем что и какая нибудь функция из длл. Естественно нужно будет по завершению своего кода добавить и выполнение оригинальной функции, вообще надо будет сделать функции-заглушки которые будут вызывать оригинальные функции из оригинальной dll, чтобы экзешник корректно работал. Может ещё какие-то есть ньюансы, щас всего не упомнишь. |
Скажем так у каждого свои плюсы и минусы, оба примерно одинаковы по муторности (осоебнно если всё самому делать), правда ещё от индивидуальных особенностей пациента зависит, вон в оригинальном EXE LF2 небыло функий LoadLibrary, GetProcAddress - приходилось ещё и эту проблему решать дополнительно.
Чем хорош статический способ для тех кто это просто качает - им просто нужно длл положить рядом с экзешником и всё. При динамическом им чуть больше телодвижений надо сделать. |
| |||
| |||