F>Наверно имелось в виду в каком драйвере обработчик перехваченной функции. Мне тоже интересено...
ZwQuerySystemInformation(...SystemModuleInformation..) найти в пространстве какого модуля лежит перехватчик и радоваться
Здравствуйте, Aleksey1980, Вы писали:
A>Как определить имя процесса, адресному пространству которого принадлежит данный адрес.
A>Т.е. я определил, что в SystemServiceTable некоторые функции перехвачены как определить кто(какой процесс) их перехватил?
Наверно имелось в виду в каком драйвере обработчик перехваченной функции. Мне тоже интересено...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Аноним, Вы писали:
F>>Наверно имелось в виду в каком драйвере обработчик перехваченной функции. Мне тоже интересено...
А>ZwQuerySystemInformation(...SystemModuleInformation..) найти в пространстве какого модуля лежит перехватчик и радоваться
Это сработает если тело функции перехватчика остается в теле драйвера. Например не стоит иключить тот факт, что драйвер который собирается перехватывать SDT выделит страницу памяти, укажет в SDT этот адресс, скопирует туда код перехватчика, или банально инструкцию jmp на код внутри себя, и вы в этом случае без анализа кода перехватчкика найти модель который реально занимается перехватом будет напорядок сложнее.
Здравствуйте, _f_b_i_, Вы писали:
___>Здравствуйте, Аноним, Вы писали:
F>>>Наверно имелось в виду в каком драйвере обработчик перехваченной функции. Мне тоже интересено...
А>>ZwQuerySystemInformation(...SystemModuleInformation..) найти в пространстве какого модуля лежит перехватчик и радоваться
___>Это сработает если тело функции перехватчика остается в теле драйвера. Например не стоит иключить тот факт, что драйвер который собирается перехватывать SDT выделит страницу памяти, укажет в SDT этот адресс, скопирует туда код перехватчика, или банально инструкцию jmp на код внутри себя, и вы в этом случае без анализа кода перехватчкика найти модель который реально занимается перехватом будет напорядок сложнее.
Ну, копировать код двольно таки проблематично — нужно будет организовать re-allocation, либо писать код перехватчика на ассемблере, либо автоматически генерировать его — все это довольно трудоемко, а мне кажется, что лень — общечеловеческое свойство
. А вот использование промежуточных трамплинов да еще с обфускатором — очень вероятно, лично я бы сделал именно так. Обфускатор мало полезен для защиты от ручной отладки кода, зато очень полезен от автоматических искателей.
Как определить имя процесса, адресному пространству которого принадлежит данный адрес.
Т.е. я определил, что в SystemServiceTable некоторые функции перехвачены как определить кто(какой процесс) их перехватил?
Здравствуйте, TarasCo, Вы писали:
TC>Здравствуйте, _f_b_i_, Вы писали:
___>>Здравствуйте, Аноним, Вы писали:
F>>>>Наверно имелось в виду в каком драйвере обработчик перехваченной функции. Мне тоже интересено...
А>>>ZwQuerySystemInformation(...SystemModuleInformation..) найти в пространстве какого модуля лежит перехватчик и радоваться
___>>Это сработает если тело функции перехватчика остается в теле драйвера. Например не стоит иключить тот факт, что драйвер который собирается перехватывать SDT выделит страницу памяти, укажет в SDT этот адресс, скопирует туда код перехватчика, или банально инструкцию jmp на код внутри себя, и вы в этом случае без анализа кода перехватчкика найти модель который реально занимается перехватом будет напорядок сложнее.
TC>Ну, копировать код двольно таки проблематично — нужно будет организовать re-allocation, либо писать код перехватчика на ассемблере, либо автоматически генерировать его — все это довольно трудоемко, а мне кажется, что лень — общечеловеческое свойство . А вот использование промежуточных трамплинов да еще с обфускатором — очень вероятно, лично я бы сделал именно так. Обфускатор мало полезен для защиты от ручной отладки кода, зато очень полезен от автоматических искателей.
Понятно. Спасибо всем, кто откликнулся.
Сложнее, но не невозможно. Трассировщик на основе какого нить int 3 и дизасма из detours пишется за несколько дней...