Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› RootDirectory в OBJECT_ATTRIBUTES |
Посл.ответ | Сообщение |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 12 декабря 2010 19:59 · Личное сообщение · #1 Вызываю вручную ZwOpenKey. на 2к3 посредством тестового вызова RegOpenKeyEx установил RootDirectory в структуре атрибутов на значение 4Ch. Работает! Запустил на висте, ключ не открывается. Оказалось заявленный параметр должен быть равен 24h, однако при таком раскладе на 2к3 он не откроется. Как обойти расхождения и по возможности вручную считать его? |
|
Создано: 12 декабря 2010 20:22 · Личное сообщение · #2 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 12 декабря 2010 20:55 · Поправил: ELF_7719116 · Личное сообщение · #3 |
|
Создано: 12 декабря 2010 21:18 · Личное сообщение · #4 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 13 декабря 2010 08:49 · Поправил: ELF_7719116 · Личное сообщение · #5 r_e пишет: RtlGetVersion? Но она же не имеет отношения к RootDirectory ?! Вот кусок кода из advapi32 который получает RootDirectory. Смысл: берется 80000002 (HKEY_LOCAL_MACHINE), обнуляется первый байт(80h), двойка одним словом [EDI+EDI*2] и в EAX, затем увеличивается в 4 раза. LEA ESI,DWORD PTR DS:[EAX+77FC00D0] читает указатель где лежит 4Сh. В висте немного по другому: там 2 сразу в 8 раз увеличивается и читается. Но смещения разные. Code:
|
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 13 декабря 2010 09:36 · Личное сообщение · #6 Все! Я нашел решение проблемы и ответ на вопрос: Структура в advapi32 хранит хендлы всех рут реестра (machine, user, classes_root...). Они инициализируются еще до старта основной программы и при таком раскладе RootDirectory равен 0 при их инициализации, а ACCESS_MASK = 02000000h. Таким образом, RootDirectory для следующих вызовов опенкея это хендл уже открытых рут для веток в реестре и по смещению мы просто ссылаемся на эту структуру получаем его (это и объясняет почему в аргументах RegOpenKeyEx рут и сама ветка стоят отдельно, а не одна единая строка). В Итоге: первым делом я самостоятельно открываю "\REGISTRY\MACHINE", а уже после по полученному хендлу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows |
eXeL@B —› Программирование —› RootDirectory в OBJECT_ATTRIBUTES |
Эта тема закрыта. Ответы больше не принимаются. |