Очень нужна помощь!!! Доступ в память.

Тема в разделе "WASM.BEGINNERS", создана пользователем iilisav, 26 сен 2008.

  1. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Дайте пожалуйста кусочек кода для прямого доступа к физической памяти. Очень нужно! Знаю что нужно делать через драйвер, но что в нем писать? Заранее спасибо...
     
  2. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    Писать напрямую в физ. память можно и из юзермода с помощью NtSystemDebugControl, в аттаче необходимые структуры.
     
  3. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Извините за глупый вопрос!! А нельзя чуть чуть поподробней мне нужно записать по адресу 0x8000 и 0CD200 несколько единичек-) Приложенный файл скачал, большое спасибо. Но пока не понял как смогу сделать это. Заранее огромное спасибо
     
  4. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    нельзя ли мне пример какого нибудь кода для примера пожалуйста?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код (Text):
    1. KdPhysicalMemoryOperation proc Operation:BOOLEAN, PhysicalAddress:PVOID, BufferAddress:PVOID, BytesToRead:ULONG
    2. Local DbgBuffer:DBGKD_READ_WRITE_PHYSICAL
    3.     xor eax,eax
    4.     mov edx,PhysicalAddress
    5.     mov ecx,BufferAddress
    6.     mov DbgBuffer.AddressHi,eax
    7.     mov DbgBuffer.AddressLo,edx
    8.     mov DbgBuffer.Buffer,ecx
    9.     push eax
    10.     mov edx,BytesToRead
    11.     push eax
    12.     push eax
    13.     lea ecx,DbgBuffer
    14.     mov DbgBuffer._Length,edx
    15.     push Sizeof DBGKD_READ_WRITE_PHYSICAL
    16.     push ecx
    17.     .if Operation == Eax
    18.     push SysDbgReadPhysical
    19.     .else
    20.     push SysDbgWritePhysical
    21.     .endif
    22.     Call ZwSystemDebugControl
    23.     ret
    24. KdPhysicalMemoryOperation endp
    25.  
    26. NTSTATUS
    27. KdPhysicalMemoryOperation(
    28.     IN BOOLEAN Operation,
    29.     IN ULONG PhysicalAddress,
    30.     IN OUT PVOID BufferAddress,
    31.     IN ULONG BytesToRead)
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Нужны привилегии отладчика чтоб заюзать.
     
  7. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    Clerk
    оффтоп:
    а как с нулевого кольца в токене процесса включить отладочные привелегии??
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Посмотри как реализован сервис NtAdjustPrivilegesToken.
     
  9. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    находишь EPROCESS своего процесса и какого-то системного процесса, и просто копируешь поле Token из системного процесса в свой.

    оффсеты для поля token в EPROCESS -
    XP - 0C8h
    2003 Server - 0D8h
    Vista - 0E0h
     
  10. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Спасибо большое за ответы! А нет ли у кого нибудь кода для драйвера? Буду очень благодарен-)
     
  11. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    KmdKit 1.8 by Four-F
    http://www.wasm.ru/baixado.php?mode=tool&id=221
     
  12. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    извините за тупость-) Но как это относится к доступу в физическую память через драйвер?
     
  13. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    iilisav
    Есть устройство "\Device\PhysicalMemory" можно открыть доступ к физической памяти через него.
    Там есть пример.
    Только вот в Win2k3 доступ к "\Device\PhysicalMemory" можно получить только из драйвера, привелегии подняли :-(
     
  14. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Теперь понятно. Огромное вам спасибо! Буду пробывать! А нельзя ли мне сказать где этот пример?
     
  15. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    KmdKit\tools\PhysMemBrowser\src
     
  16. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Clerk
    Кажется это ваша тема http://www.wasm.ru/forum/viewtopic.php?id=24636?
    У вас не найдется готового пример драйвера через "\Device\PhysicalMemory"? Буду очень очень благодарен!
     
  17. iilisav

    iilisav New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    15
    Или может быть кто нибудь знает кто сможет написать мне такой драйвер долларов за 100?
     
  18. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    iilisav
    Из кернелмода и так вся память доступна.
     
  19. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Речь идет о физической памяти.
    Даже из кернел мода она просто так недоступна.
    Сначала нужно замапить ее в адресное пространство ядра.
    Самый простой способ сделать это - обратиться к \Device\PhysicalMemory
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Память замапить в память чтобы к ней обратиться.. хз никогда не юзал)