Народ, кому не лень, запустите программку в аттаче, она считает 16 байт из ntdll и покажет их в MessageBox'е, скопируйте Ctrl+C и вставьте в ответ. Если не очень лень P.S. Интересует совпадение кода ZwOpenProcess на разных ОС, с разными сервиспаками. У меня XP (sp0) : B87A000000BA0003FE7FFFD2C2100090 Спасибо. _832987216__ntdllLooker.exe
Windows XP Sp2 B87A000000BA0003FE7FFF12C210 Windows 2000 Sp4 B86A0000008D542404CD2EC210 Windows vista beta 1 B8B9000000BA0003FE7FFF12C210
чтоб окончательно тебя расстроить - Windows 2000 SP4 + rollup update: B86A0000008D542404CD2EC210008BFF
Broken Sword А что расстраиваться-то Всё достаточно чётко прослеживается: w2k использует int 2E, XP и выше используют переход на syscall (sp0 - через call edx, sp1,sp2,vista - через call dword ptr[edx]). Ну и коды в eax: 6A-7A-B9 Имея эту информацию, уже можно избавиться от перехвата ZwXXX.
От перехвата можно избавиться и не имея этой информации, причем универсальным для всех существующих и будующих виндов способом. Для этого просто надо загрузить с диска копию ntdll с помощью пелоадера и вызывать апи оттуда. cresta Как закончишь свой руткит детектор, дай мне его поглядеть. Хочу проверить свой руткит на живучесть
Это я уже сделал, но только для EnumServicesStatusEx (маппинг advapi с пересчётом смещений), чтобы отловить скрытые драйвера hxdef'а. А в случае с ntdll не уверен, что это получится достаточно быстрый код. Поэтому на всякий случай доп. варианты. В принципе самодельный вызов syscall уже реализован и работает, но только для SP0 (call edx), для других информации не было. Хотя с маппированием dll все-же проще. Лучше ты давай свой руткит, а то мне тренироваться не на чем )) hxdef100r и AFXRootkit2005 я уже вдоль и поперек вижу (скрытыет процессы, файловые объекты, ключи реестра, драйвера). Надо что-то новое Если есть SP0, то примерный набросок есть, хотя лучше бы закончить.
Извини, я не заинтересован в попадании моего руткита к разработчикам руткит детекторов, но возможно кое-какие демки дам (после релиза руткит детектора).
Ms Rem Подскажи будет ли такой метод корректным? например я делаю перехват ZwOpenProcess, ч-з SDT. Но после меня возможно ктото перезапишет мою ловушку (или удалит). Так вот что если в режиме ядра создать поток, который будет проверять скажем раз в минуту "правильность" адресса ZwOpenProcess, и если там стоит не мой то записать вновь мою ловушку? Или может есть проще метод? например может есть какоето событие или еще что...
Ms Rem Ну если ты зарабатываешь на жизнь руткитами, то твоя позиция понятна. Corleone Чтобы полностью контролировать ситуацию и сделать абсолютный перехват, есть только один метод - подменить ntoskrnl.exe своим ядром. Сможешь?
cresta Естественно что абсолютно универсального ничего не бывает. Ядро свое я писать не собираюсь, думаю если найду способ обойти самые простые антируткиты то это уже будет успех. p.s. Ms Rem спасибо за помощь