Сейчас на форуме: tyns777 (+4 невидимых) |
eXeL@B —› Программирование —› CreateFile & LoadLibrary |
Посл.ответ | Сообщение |
|
Создано: 02 августа 2010 01:47 · Поправил: OnLyOnE · Личное сообщение · #1 Вопрос состоит вот в чем, создаем файл CreateFile пишем в него содержимое DLL из тела программы и не закрывая дескриптора пытаемся загрузить созданный файл LoadLibrary. Так как это осуществить? Возможно ли проделать это с открытым дескриптором, если создавать файл с правами доступа GENERIC_WRITE or GENERIC_READ or GENERIC_EXECUTE? У меня нихера не выходит. Возможно где-то недочет? LoadLibrary выдает ERROR_SHARING_VIOLATION (00000020) Может кто в курсе как это осуществить? Если это вообще реально? Code:
----- aLL rIGHTS rEVERSED! |
|
Создано: 02 августа 2010 08:49 · Поправил: DenCoder · Личное сообщение · #2 см. табличку в MSDN Первый раз Вы открываете Code:
ntdll открывает первый раз файл, но для Вас второй Code:
Потому и ERROR_SHARING_VIOLATION ----- IZ.RU |
|
Создано: 02 августа 2010 19:55 · Личное сообщение · #3 Немного измененный пример GoldFinch Code:
----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes |
|
Создано: 02 августа 2010 20:48 · Личное сообщение · #4 |
|
Создано: 02 августа 2010 20:54 · Личное сообщение · #5 |
|
Создано: 02 августа 2010 21:15 · Поправил: Coderess · Личное сообщение · #6 |
|
Создано: 02 августа 2010 21:36 · Личное сообщение · #7 Vovan666 пишет: А если грузить напрямую из памяти? Уже щас свой загрузчик пишу... З.Ы. Почему не ответил на сообщение в ПМ? Coderess пишет: А почему нельзя или закрыть хэндл потом снова открыть или сделать дубликат хэндла DuplicateHandle() если ты его потом используешь? Для того чтобы потом, при закрытии хендла файл из темп директории удалился ... я создаю его с FILE_FLAG_DELETE_ON_CLOSE... ----- aLL rIGHTS rEVERSED! |
|
Создано: 02 августа 2010 21:50 · Личное сообщение · #8 |
|
Создано: 03 августа 2010 13:29 · Поправил: ARCHANGEL · Личное сообщение · #9 Да никак это не будет работать, даже если каким-то реверансом с бубном удастся загрузить либу, такой дескриптор (т.е. тот, что по CloseHandle) не закроется никак из-за внутренней работы загрузчика и создания объекта "раздел". Да, согласен с постом ниже, как только выгрузится либа, тогда и закроется дескриптор. (Поправил своё сообщение) ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 03 августа 2010 13:44 · Личное сообщение · #10 |
|
Создано: 03 августа 2010 19:20 · Личное сообщение · #11 Короче... пошел другим путем.. Просто аллочу память и проецирую длл в нее.. обрабатываю таблицу импорта и релоки.. Oтрабатываю DLL Entry... и усё GetProcAddress нахожу что мне надо... Осталась только одна проблема... в длл есть манифест для Microsoft.VC90.CRT... Как незнаю обработать его чтобы VC90 runtime погрузилась LoadLibrary при обработке таблици импорта... Пока вышел из положения засунув манифест в ресурсы ЕХЕ... но прекрасно понимаю, что это извращение.. Может кто подскажет как обработать манифест чтобы можно было подгрузить длл из winsxs? ----- aLL rIGHTS rEVERSED! |
|
Создано: 03 августа 2010 21:23 · Личное сообщение · #12 |
eXeL@B —› Программирование —› CreateFile & LoadLibrary |