Re: Загрузка DLL из памяти
От: ononim  
Дата: 27.01.10 12:02
Оценка:
CEM>Есть ли отлаженные способы загрузки, чтоб и импорт был нормальный и под разными операционками работало?
CEM>Поиском посмотрел — есть несколько вариантов, но потом находились баги, и всё как-то затихало, непонятно, было пофиксано или было брошено?

CEM>Меня сёдня ещё такая идея посетила: ведь LoadLibraryExW (а именно она зовётся в конце концов, что бы мы ни звали, смотрел сейчас под дебагом) должна же обратиться к файлу, открыть его и зачитать? Хорошо бы в этот момент ей подсунуть свои данные Проблема в том, что ReadFile не перехватить, он в одном модуле с LoadLibraryExW

LoadLibraryExW (вернее ntdll!LdrLoadDll) вызывает NtCreateSection с флагом SECTION_IMAGE который собственно парсит имадж и раскладывает его по памяти, далее LdrLoadDll настраивает импорты/экспорты etc.
Так что если захукаете NtCreateSection, предыдущий NtOpenFile и до кучи NtQuerySection и NtAreMappedFilesTheSame и может еще NtQueryVirtualMemory, сами распарсите PE заголовок, как это делает ядро, то настройку импортов/экспортов/PEB ldr листов винда и правда сделает за вас.
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.