Как подсчитать количество обращений к API-функции?

Тема в разделе "WASM.ASSEMBLER", создана пользователем Bobs, 26 фев 2009.

  1. Bobs

    Bobs New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    13
    Собственно, сабж. Из своей программы считаю количество обращений к определенной API (одной и той же) уже другой запущенной программы. Нужно описание алгоритма действий или же еще лучше реализация, на ассемблере.
     
  2. SWR

    SWR New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    226
    Адрес:
    Russia
    тупо перехват (нечего не изменять, только счить)
     
  3. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    http://research.microsoft.com/en-us/projects/detours/

    ...и примеры на Си.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код (Text):
    1.     mov eax,1
    2.     lock xadd dword ptr [CallCounter],eax
     
  5. Bobs

    Bobs New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    13
    Всем спасибо за ответы, разобрался!
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Clerk а почему не просто

    lock inc dword ptr [CallCounter]
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    2FED
    Там префикс игнорируется.
     
  8. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Clerk
    Откуда такая информация? Интел пишет - "This instruction can be used with a LOCK prefix to allow the instuction to be executed atomically". Кем он интересно игнорируется. Возможно ты рипнул код с XADD откуда-то или просто посмотрел, там просто надо было возвращать старое значение счетчика как это обычно делается в синхронизационных функциях.
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    BlackParrot
    Я так думол, если буду применять атомарный инкремент, то буду делоть это посредством lock xadd.
     
  10. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Clerk
    :) Но при этом можно юзать просто INC с префиксом LOCK, информация о том, что LOCK игнорируется не верна.
     
  11. Clerk

    Clerk Забанен

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