![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Kero |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 10.5.2006 Где: Винница,Украина | | Реал Репутация: нет Всего: 1 |
Привет!
У меня очень интересная задача на лабораторную работу: "Во время выполнения программы: создать DLL файл, записать в него функцию переноса по слогам и вызвать ее". Тоесть необходимо создать программу которая делает библиотеку и записывает в нее функцию. Мне убогому, разбалованному C# и прочими вкусностями, не понятно как на лету делать библиотеки. Прошу помощи знатоков))) |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
Kero, вам определенно нужен компилятор и линковщик для этих целей в неуправлямом коде...
так просто ничего не получится... разве что если задание не меняется то: 1) сделать длл-ку 2) запихать ее в ресурсы 3) считать с них и записать на диск 4) загрузить (LoadLibrary) и получить адрес экспортной функции (GetProcAddress) 5) и вызвать то что получили в п.4 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Kero |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 10.5.2006 Где: Винница,Украина | | Реал Репутация: нет Всего: 1 |
Насколько я понимаю можно както так сделать: 1) Сотворить функцию А в коде екзешки В, и запустить екзешку. 2) Екзешка В выполняеться прописывает стандартный заголовок в файл 1.длл (не могу понять как получить стандартный заголовок для библиотек) 3) Екзешка В сама себя сканирует и какимто ( вот каким образом?) получает начальный и конечный адресс функции А, записывает в файл 1.длл в таблицу функций сигнатуру функции А и бинарным копированием копирует бинарный образ функции А в файл 1.длл Вопросы: 1) Такое вообще возможно? 2) Если да то каким образом получить начальный и конечный адресс функции в екзешке? 3) Каким образом записать таблицу функций в длл файл? 4) Возможно ли копирование функции с екзешки в дллку? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Будьте проще, и люди к вам потянутся
Извлекать функцию из exe'ника и переписывать ее в dll путь явно тупиковый - нет никакой гарантии, что функция заработает, т.к. все ссылки, что торчат из функции (глобальные переменные, вызовы других функций, вызовы функций в других dll, да и наконец банальные релокации) скопированны не будут. |
|||
|
||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: 1 Всего: 1 |
скорей всего или автор неправильно понял задание в данном контексте или оно очень криво сформулировано, сомневаюсь чтоб такие задания давали на лабораторные...
может все-таки речь не идет о неуправляемом коде... скорей всего об управляемом коде тогда -> using System.CodeDom.Compiler; |
|||
|
||||
| 0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
0. сначала пишеш саму длл
1. переводиш длл в массив байт 2. массив байт вставляеш в свою программу 3. из своей программы записываеш массив байт на диск 4. подключаеш созданный файл функцией loadlibrary 5. экспортируеш из него функцию 6. работаеш с ней |
|||
|
||||
| Kero |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 10.5.2006 Где: Винница,Украина | | Реал Репутация: нет Всего: 1 |
Нет Нет. Я уточнял. Именно о неуправляемом коде идет речь. Добавлено через 1 минуту и 17 секунд
Если бы было всё так просто. В задании: необходимо запустить 3 потока последовательно: 1) записывает РЕ заголовок в длл 2) записывает функцию в длл 3) вызывает эту функцию с длл |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
||||
|
||||
| 0x00 |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
тогда так: 0. сначала пишеш саму длл 1. переводиш длл в массив байт 2. отделяеш пе заголовок из массива 3. оставшийся массив байт вставляеш в свою программу 4. из своей программы составляеш пе заголовок, дописываеш массив байт 5. записываеш все на диск 6. подключаеш созданный файл функцией loadlibrary 7. экспортируеш из него функцию 8. работаеш с ней тут только использованием шелл кода можно решить задачу Это сообщение отредактировал(а) 0x00 - 20.4.2010, 15:05 |
||||||
|
|||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
||||
|
||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: 1 Всего: 1 |
ето шото слишком все просто , а кто будет таблицу импорта настраивать если функция, которую нужно вставить ссылается на другие Winapi функи отсутствующие в исходной длл |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
12usver12, это детали реализации, зависящие от кода функции в длл
|
|||
|
||||
| 0x00 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
это просто микроплан на работу. реальная же работа (ТЗ) 9 шагами не ограничится. |
||||
|
|||||
| assasincore |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.4.2010 Репутация: нет Всего: нет |
Качай формат PE от мелкомягких и кури его....
Возьми open source "сборищик PE" все... (Инсталлер "nsis setup" , упаковщик "yoda cryptor", PE View, можеш компилер попробывать если получится "nasm") Ну а код в машинных инструкциях, если хоч, может прикрутить assembler. |
|||
|
||||
| nmn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: нет Всего: 1 |
это же где такие лабораторные работы?
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |