Потестите нового клевого API-шпиона

Тема в разделе "WASM.SOFTWARE", создана пользователем Rustem, 11 фев 2009.

  1. _tmp17628

    _tmp17628 New Member

    Публикаций:
    0
    Регистрация:
    7 фев 2009
    Сообщения:
    144
    Clerk
    Крута, не представляют интереса....
    Что-нибудь вроде crypt32.dll, да мало ли подобных библиотек и функций.
    Смысл проги в том, что задаешь функции, которые мониторить и получаешь лог их юзанья...
    Например определяешь список функций какой-то библиотеки и получаешь всю картину их вызовов...

    ПС. Вобщем, то что ты предлагаешь - "монитор сервисов ядра", а то что есть - "универсальный монитор экспортируемых функций". Очевидно две совершенно разные вещи...
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    запись о модуле, там простой двусвязный список.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    _tmp17628
    Я не предлогаю ядерный монитор писать, подобно как от сисинтерналс утилите. Каждая программа не должна быть конвеерным софтом, сегодня это уже не будет работать. Я предложил парсинг стека - пусть даже бряк и не в начале функции, я считаю это элитной техникой. Но просто загрузить модуль, перехватить чтото в импортах, чтото сплайсингом - элементарно обходится, если бы я писал приложения - то самозащита былабы весьма хорошой. Далеко ходить не нужно, возьми к примеру Flasher'а софт - подобный инжект не пройдёт, там мощная защита. А загрузка модуля - слишком уж много мусора оставляет, почему я и не использую никогда её.
    n0name
    Запись о модуле не в PEB, в нём указатель на блок данных загрузчика, в нём уже запись, да там двусвязанный список LDR_DATA_TABLE_ENTRY.
     
  4. _tmp17628

    _tmp17628 New Member

    Публикаций:
    0
    Регистрация:
    7 фев 2009
    Сообщения:
    144
    Clerk
    Повторю, что это относится к приложениям с самозащитой, их мало и против них рулит отладчик.
     
  5. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Не только экспортируемых функции, можно логировать любую, лежащую внутри ехе и длл,
    поддерживается как экспорт по ординалу, можно ставить хук по абсолютному адресу по рва.
    Показывает дерево вызова функции
    Функции из ntdll тоже можно логировать.

    Сервисы в ринг-0 нельзя)
     
  6. Clerk

    Clerk Забанен

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

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Clerk
    Чето я ничего не догоняю)
    О каком кольце идет речь?
    И можно поподробнее про трассировщик

    Если в общих чертах утилита писалась как универсальный ринг-3 логгер, для реверса программ плюс манипулирование функциями по-своему усмотрению засчет плагинов
     
  8. Clerk

    Clerk Забанен

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

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Clerk Утилиту Flashera можно взглянуть?
     
  10. Clerk

    Clerk Забанен

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

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Rustem
    Можа воспользоваться уже существующим потоком:
    - Останавливаем все потоки жертвы
    - Внедряем код
    - Пишем на место, где остановился N поток call на наш код
    - Когда код все сделает, он должен сообщить программе
    - Так заморозит N поток, удалит код, и разморозит
    Это все на словах, а не на деле.
     
  12. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Clerk
    Только вот аппаратная реализация будет аппаратно зависима и как в ядре узнать какую АПИ функцию вызвали?
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Rustem
    Но ведь все экспорты известны, наверно перед запуском нужно таблицы создавать. Кстати по теме могу тебе посоветовать интересную весчь - твоя программа в юзермоде, используй символы отладочные. Сможешь логгировать даже то, чего в экспортах нет. К тому же юзермодная оболочка предоставляет функционал для работы с ними - всевозможные SymXX.
     
  14. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Clerk
    В символах нет необходимости, т.к. можно логировать любую функцию, не обязательно экспортируемую. Например, во время реверса выяснилось что вызывается функция по адресу 401234, то просто добавляем в базу строчку
    @401234, MyFuncBlaBla
    И она будет в логе, и можно смотреть ее параметры итп
     
  15. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    458
    всем привет
    использую утилиту - весЧь!
    пару вопросов начинающего юзверя:

    1) файл settings.ini:
    ;Thread id's
    TID=1 << что енто?

    2) как отфильтровать логирование с ненужных длл
    3) вижу что в kernel32.dll в файле db.txt не все експ. функи включено. какой простой способ достать фул лист?