Изменить импортированное имя Dll? - PullRequest
0 голосов
/ 23 апреля 2010

В Portable-Executable мы можем изменить импортированное имя DLL, отредактировав PE-файл, здесь, я изменил в одном импортированном имени dll приложения exe, в то время он изменился нормально .... например, advapi32.dll в ^ dvapi32.dll, поэтому здесь system32 или в любом другом месте PATH нет ^ dvapi32.dll .. время просто я изменил реальный advapi32.dll в ^ dvapi32.dll и поместил в каталог приложения, на этот раз его работа хорошо .... но когда я пытаюсь с ntdll & gdi32.dll, он не поддерживается, я не могу решить проблема, пожалуйста, помогите мне к проблеме .. спасибо.

1 Ответ

1 голос
/ 23 апреля 2010

Системные библиотеки типа GDI32.DLL загружаются в память при запуске Windows, поскольку они обеспечивают основные функции ОС Windows (в данном случае, графические функции). Некоторые библиотеки DLL построены с фиксированной базой изображений (подозреваем, что это относится к наиболее важным системным библиотекам, например, KERNEL32, GDI32.DLL, USER32.DLL), и копирование и переименование библиотек этого типа и ссылки на них не будут работать, не без изменения их базы изображений в PE заголовок.

Это происходит потому, что они попытаются загрузить себя в память, указанную ImageBase, и потерпят неудачу, поскольку конкретное место в памяти уже занято исходной DLL, уже находящейся в памяти, и их фиксированная ImageBase предотвращает их загрузку в альтернативных местах памяти. Библиотеки DLL без фиксированной ImageBase будут перемещены Windows, чтобы использовать другую область памяти и работать без проблем.

Если ImageBase копии DLL изменяется на другое значение, библиотеки DLL с фиксированной ImageBase будут работать должным образом при условии, что область памяти, указанная в ImageBase, не занята.

Несмотря на то, что я успешно протестировал этот подход на копии Блокнота, а затем изменил импортированные имена DLL и базы изображений копий DLL в Windows XP, я СИЛЬНО ДИСКУРЖ эта игра с импортом и вмешательством системы Windows DLL в этом ключе.

...