Нахождение Service ID для натив функций

Тема в разделе "WASM.BEGINNERS", создана пользователем СFF, 10 июн 2010.

  1. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Всем привет.
    Хочу найти сервис ид для функций типа NtClose,NtCreateSection,... из нтдлл
    Вообщем в голове я варианта:
    1. Находим Кернел32, оттуда по хешу находиться LoadLibraryEx (ну или LdrMapDll) подгружается нтдлл, после находиться сервис ид
    2. Используется таблица вшитых Service Id (NtOpenFile,NtClose,NtMapViewOfSection,NtUnmapViewOfSection) через них подгружается ntdll.dll и дальше находим все что нужно.

    Первый вариант предпочтителен так как используется стандарт апи. Но во втором варианте меньше кодить, но я читал как то что на одних и тех же ос, номера сервисов могут различаться, так это или нет? Если нет то легче использовать вшитую таблицу.

    Какой из вариантов лучше по вашему мнению и почему? Можете предложить свой, только аргументируйте.
     
  2. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Можно ведь сразу ntdll в Peb.Ldr найти и не юзать kernel32
     
  3. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    >> на одних и тех же ос, номера сервисов могут различаться, так это или нет?

    да, они изменяются. надежно первый вариант
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    19841204
    Зависит от задачи. Хардкод не желателен, но иногда необходим для сокрытия, причём в этом случае код максимально устойчивый к всяким сторонним воздействиям.
    lhc645
    Там стабы побиты могут быть, например под отладчиком.
     
  5. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Короче я так и думал придется первый вариант юзать.
    Можеш чуть развернуть ? Хотя бы примеры задач привести. Лично мне нужно это все чтобы не таскать таблицу сервисов + надежный вариант , если различаются. Просто у меня весь софт будет написан через int 2eh, ну где возможно конечно
     
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Зачем это нужно?
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Чем плох таскания таблицы сервисов? Это самый оптимальный вариант.
     
  8. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Номера могут разлечатся на одинаковых ОС
     
  9. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Мне нужно лично для обхода всяких юзермодных перехватов, тем более как я понял это не изврат, там часто количество аргументов совпадает с апи
     
  10. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Да еще чем лучше найтив вспомнил. Стандарный идет через sysenter, а мои через int 2eh, все что идет через сисентер имеет единый адрес возврата из ядра, поэтому можно поставить бряк в одном месте и все отловить.
     
  11. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Откуда у Вас инфа что в одинаковых виндах номера могут различаться? Зачастую они даже в разных сервиспаках одинаковые. Кстати, в 64-битных виндах придется Вам юзать
    Код (Text):
    1. call dword ptr fs:[TEB.WOW32Reserved]
    вместо
    Код (Text):
    1. int 2eh
     
  12. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    >> Откуда у Вас инфа что в одинаковых виндах номера могут различаться

    Вчера вечером был не осознан вопрос, при ответе на пост (
    В принципе можно использовать вот такую таблицу при написании кода

    http://www.metasploit.com/users/opcode/syscalls.html

    правда нет номеров семерки, но это вполне решаемо.
     
  13. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Для успокоения души разве что только, не более
    Врядли сейчас там кто-то что либо перехватывает, если тоже самое намного проще и эффективнее делать в ntoskrnl или ssdt
     
  14. Clerk

    Clerk Забанен

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

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Clerk
    ТС о другом говорит
    все-равно все вызовы придут в NtXXX в ядре, там их и проанализируют
     
  16. Clerk

    Clerk Забанен

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

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    ohne
    не все :dntknw: зависит от чего защита :)
     
  18. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Clerk
    Потому выше специально спросил о том зачем это нужно, оказалось что не для этого
     
  19. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    точнее что за защита
     
  20. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    На metasploit некоторые номера неправильные, хз откуда они брали эти циферки.
    Гляньте тута