Поиск информации о некоторых внутренних структурах загрузчика Windows - PullRequest
0 голосов
/ 09 июля 2019

Я читал новейшую редакцию Windows Internals и обнаружил следующее.

"Кроме того, поскольку поиск в связанных списках алгоритмически дорог (выполняется за линейное время), загрузчик также поддерживает двакрасно-черные деревья, которые являются эффективными бинарными деревьями поиска. Первое сортируется по базовому адресу, а второе - по хешу имени модуля. С этими деревьями алгоритм поиска может работать в логарифмическом времени, что значительно большеэффективен и значительно повышает производительность процесса создания в Windows 8. и более поздних версиях. Кроме того, в качестве меры безопасности, корень этих двух деревьев, в отличие от связанных списков, недоступен в PEB. "

Из чегоЯ понимаю, что одно из двух красно-черных деревьев, о которых идет речь, относится к LdrpHashTable, который достаточно прост, чтобы найти его, используя символы PDB для ntdll.Я, однако, не могу найти много информации относительно второго из этих деревьев.Я полагаю, что где-то недавно прочитал, что это может относиться к чему-то, называемому LdrpModuleIndex, но я не могу найти что-либо относительно этого в символах PDB.

Я думаю, что я ищу этоНебольшое объяснение того, что такое второе дерево, как я могу найти корень этого дерева, а затем, какая функция вызывается загрузчиком для добавления модуля в это дерево и, если возможно, прототипа этой функции.Я полагаю, что для LdrpHashTable это происходит в функции LdrpInsertMemoryTableEntey.

...