Приложение без системных вызывов

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

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Предлагается такая "головоломка" выяснить какие внешние данные (те актуальные не только для текущего процесса) Могут быть получены без использование системных вызовов (int 2e, syscall etc).

    В конференции мы надыбали вот чего:

    Очевидно что можно просканить свою память, интересно что же из нее можно достать.
    -Переменные окружения
    -Параметры командной строки (хотя они по сути только для нашего процесса)
    -Список модулей с путями
    -Буфер обмена
    -Список окон (если приложение гуй)
    -Всякие вкусности из ПЕБ
    -Сайд эффекты генерации исключений
    - хукнуть KiUserApcDispatcher и ждать :derisive:


    Активные участники only IceT FrееМаn spa
     
  2. b000bs

    b000bs New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2009
    Сообщения:
    11
    spa
    вы KUSER_SHARED_DATA забыли )
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    add
    KUSER_SHARED_DATA
     
  4. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    b000bs
    упс )
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    spa
    Это не единственное место куда поток возвращается, тогда до кучи:
    o KiUserApcDispatcher
    o KiUserCallbackDispatcher
    o KiRaiseUserExceptionDispatcher
    o KiFastSystemCallRet
    o Из Int2e/остальные шлюзы и NtContinue/NtSetContextThread управление возвращается на произвольный адрес.
    Хотя не понятна задача, доступна вся память процесса(стек и пр.), кроме контекстов потоков.
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Clerk
    задача получить внешние по отношению к процессу данные.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    spa
    Ну я так понял, в #5 и ответил :)
     
  8. b000bs

    b000bs New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2009
    Сообщения:
    11
    имеется ввиду свой процесс который не пользует сис вызовы
     
  9. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Clerk
    это "головоломка" тут не только результат важен, но хитроумность ) а за ответ спасибо, хорошее дополнение
     
  10. b000bs

    b000bs New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2009
    Сообщения:
    11
    не заметил, предыдущий пост отменятся
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Код (Text):
    1. /*
    2.  * Object types
    3.  *
    4.  * NOTE: Changing this table means changing hard-coded arrays that depend
    5.  * on the index number (in security.c and in debug.c)
    6.  */
    7. #define TYPE_FREE           0           // must be zero!
    8. #define TYPE_WINDOW         1           // in order of use for C code lookups
    9. #define TYPE_MENU           2
    10. #define TYPE_CURSOR         3
    11. #define TYPE_SETWINDOWPOS   4
    12. #define TYPE_HOOK           5
    13. #define TYPE_CLIPDATA       6           // clipboard data
    14. #define TYPE_CALLPROC       7
    15. #define TYPE_ACCELTABLE     8
    16. #define TYPE_DDEACCESS      9
    17. #define TYPE_DDECONV        10
    18. #define TYPE_DDEXACT        11          // DDE transaction tracking info.
    19. #define TYPE_MONITOR        12
    20. #define TYPE_KBDLAYOUT      13          // Keyboard Layout handle (HKL) object.
    21. #define TYPE_KBDFILE        14          // Keyboard Layout file object.
    22. #define TYPE_WINEVENTHOOK   15          // WinEvent hook (EVENTHOOK)
    23. #define TYPE_TIMER          16
    24. #define TYPE_INPUTCONTEXT   17          // Input Context info structure
    25. #define TYPE_CTYPES         18          // Count of TYPEs; Must be LAST + 1
    26. #define TYPE_GENERIC        255         // used for generic handle validation
     
  12. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    если сепшн диспечер вызывает сисколов, то можно направеть их в нужное нам русло. хотя можно это считать тогда косвенным вызовом сискола у себя в потоке.
    за загадку, спа, спс :)
     
  13. IceT

    IceT IceT

    Публикаций:
    0
    Регистрация:
    13 авг 2009
    Сообщения:
    233
    Адрес:
    RU
    А cpuid и rdtsc забыл?
     
  14. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    Туда же, видимо, sidt и sgdt
     
  15. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    хм.. как-нибудь спрвоцировать другой процесс вызвать syscall.. х.з. как. через гую можно попытаься что-нибудь выудить...
     
  16. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    cupuyc
    как вы вообще доступ к другому процессу то получите мне интересно? без сис колов то :derisive:
     
  17. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    О, вспомнил - вроде еще можно кэш процессора читать )
     
  18. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    crX/drX