Можно ли поля ключа реестра отображать на память процесса?

Тема в разделе "WASM.WIN32", создана пользователем Rel, 27 янв 2010.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    есть два фактора, недающие мне покоя:
    1) ключ реестра может иметь тип BINARY, в который можно положить любую бинарщину размером до 1 мб... таким образом в принципе в реестре можно хранить файлы любого размера, разбивая файл на части по 1 мб, и по мере необходимости собирать заново...
    2) ко всем девайсам windows относится, как к файлам (если простите мне такое допущение)...

    и вот назрел такой вопрос... теоретически, если мы имеем файл размером n-мегабайт, хранящийся в реестре в n-полях какого-то ключа, можно ли каким-то образом отобразить этот файл из реестра в виртуальную память процесса и работать с ним, как с отображением (то есть маппировать различные его части, чтобы при снятии отображения изменения сохранялись, в определенные моменты можно было делать flush и тд)?

    ЗЫ не спрашивайте зачем, это чисто академический интерес, пример привел, чтобы было понятнее, о чем я спрашиваю)))
     
  2. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    1) А почему бы и нет?
    2) Работа с устройствами в винде: WIN32->натив(ntdll.dll.NtCreateFile & NtDeviceIoControlFile)
    -так что Вы правы.
     
  3. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    ) я уже давно подобную идею вынашиваю, вот только к реализации так и не приступил. Практическая польза от этого будет только для малвари. Существенный минус этой идеи - это то что сам загрузчик будет существовать в виде отдельного exe файла, имхо, это на корню губит всю идею.
     
  4. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    ADD по п.2: а вообще "файл" - понятие абстрактное, существуют лишь объекты со своими типами и хар-ками. Естественно ф-ции типа CopyFile для девайса не пройдут
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    да-да... но я чет не понимаю, как это сделать... то есть, как отобразить определенное поле в память?... допустим, составить полное отображение из нескольких полей, можно последовательно отобразив в память каждое из полей... но как можно добраться до поля?
     
  6. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    А в чем тут проблема? Можно хоть кусок кода хранить, потом отображать в память и передавать управление. Если хранить в ключах всю прогу - то использовать свой загрузчик.
    Естественно, как заметил Flint_ta кто-то должен же будет проводить все эти махинации,
    правда не обязательно exe...
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    наверное я что-то недопонимаю простой вещи... поясните пожалуйста... например... вот у меня есть хендл с полными правами ключа, в полях которого храниться бинарщина, которую мне нужно отобразить в виртуальную память процесса... как имея хендл ключа и имена полей отобразить бинаржину в память?)))
     
  8. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Считать содержимое ключа, а в качестве буфера указать выделенную предварительно память, после чего присвоить ей аттрибут на исполнение и передать управление (если это всего лишь кусок кода).
     
  9. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    ADD: можно в ключ зашить скомпиленое тело нужной функции и выполнить ее вообще в отдельном потоке
     
  10. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    При чём тут это?
    Он хочет сделать аналог FileMapping для ключа реестра.
    Т.е. по аналогии с файлом мапишь ключь на область RAM, и потом все изменения в RAM прозрачно переносятся в ключь.
    Стандартными средствами сделать нельзя.
     
  11. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Тьфу..загнался..
    Система где-то в памяти хранит отображение реестра, но уверен из ring3 туда не доберешься.
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    да дело даже не в ринг3... все равно, если я найду область памяти, на которую отображен реестр, её придется самостоятельно парсить... реестр ведь своего рода бд, поля наверняка разделены по сегментам, блокам и тд (не бейте за терминологию, говорю по аналогии с файловыми системами)... кстати, никто не в курсе как устроена бд реестра виндовс? гуглил, но ничего не нашел((
     
  13. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    http://paullee.ru/regstr4.html
    На русском языке более токового описания я не встречал.
    Нужный ключ реестра можно сдампить на диск стопицот способами, если чем-то не устраивают стандартные API.
    В файлах реестра, насколько я понимаю, можно хранить свои данные-код. Только к текущему файлу куста система так просто не подпустит. Пусть меня поправят опытные товарищи.
     
  14. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    Rel
    смотреть исходники ntpasswd.
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    хе-хе... я даже в терминологии не ошибся))) большое спасибо за ссылку! я с пол года назад все собирался сделать базу данных с организацией аля реестр виндовс, но так и не сел... теперь есть материал для обдумывания)))

    есть смотреть исходники ntpasswd!))) спасибо!
     
  16. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    Там http://paullee.ru тоже есть сорцы. Если паскаль не пугает ;)
     
  17. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    Смотря для чего, конечно... Может быть, прямо в реестре и делать базу? Винда с реестром довольно шустро работает. Ничего изобретать не нужно, опять же. Запросто сохраняется на диск. Если под Win32, конечно.