Получение PEB под x64

Тема в разделе "WASM.X64", создана пользователем slesh, 1 мар 2012.

  1. slesh

    slesh New Member

    Публикаций:
    0
    Регистрация:
    6 фев 2009
    Сообщения:
    214
    В общем задача проста: получить адрес PEB своей (x64) программы. Язык С. Компилятор VS2010.
    Если для x32 можно было бы использовать mov eax, fs:[0x30], то для x64 использовать ассемблер запрещено. Как быть?
     
  2. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Можно написать в отдельном .asm файле, или воспользоваться этим семейством ф-ий. В 64битной среде используется не fs, а gs.
     
  4. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Почему запретили на x64 ассемблер?
     
  5. slesh

    slesh New Member

    Публикаций:
    0
    Регистрация:
    6 фев 2009
    Сообщения:
    214
    K10
    Я имел в виду ассемблерные вставки запрещены в си коде при компиляции в x64 (из VS)
     
  6. sender0

    sender0 New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2011
    Сообщения:
    25
    Код (Text):
    1. #include "winternl.h"
    2.  
    3. static
    4. PEB*
    5. NtGetPeb()
    6. {
    7. #ifdef WIN64
    8.     return  (PEB*)__readgsqword(0x60);
    9. #else
    10.     return  (PEB*)__readfsdword(0x30);
    11. #endif
    12. }
     
  7. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    sender0
    Зачем разрядность указывать. Если !Gs, то сегмент адресуется Fs.
     
  8. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    :lol: ассемблер там не запретили, запретили inline assembly. коли душа желает - добавляешь в проект масм файл и сопутствующий build customization для масма. а вот почему они это замутили - может изза бекинга? а может дабы ограничить неконтролируемую модификацию кода хз. но это давно уже. относительно.