Статии anti-debug-00, nezumi

Крис Касперски, известен още като Myshch, известен още като nezumi, известен още като Souriz, известен още като Elraton, без имейл

По време на времето си на копач той изкопа обширна (и доста пълна) колекция от техники за отстраняване на грешки, изтеглени от протектори, вируси, краксови плюс собствените им идеи и разработки. След като систематизира разпръснатите факти и ги сложи на рафтовете, мишката реши да сподели скривалището на своята дупка с хакерския свят. така възниква идеята за рубриката "против отстраняване на грешки", посветена главно на NT- и UNIX-подобни операционни системи (W2K, XP, Vista, Linux, BSD) и x86-платформа. Виртуални машини JVM и .НЕТ както и 64-битовите архитектури все още са в етап на изследване, но и ние ще стигнем до тях!

Триковете срещу злонамерен софтуер са начини да се противопоставите на дебъгера от обикновено откриване до грабване на ресурси, жизненоважни за работата на дебъгера. Всичко това затруднява възстановяването на експерименталната програма и въпреки че дебъгерът не е единственият инструмент за хакване (друг популярен инструмент е разглобявачът), не можем да схванем необятността и решихме да се съсредоточим изключително върху отстраняването на грешки.

За анти-отстраняването на грешки е писано много, че не е трудно да се удавите в тази купчина разхвърляна информация и повечето статии обхващат само тесен кръг техники за отстраняване на грешки, някои от които са несъвместими със съвременните операционни системи, а някои от тях автоматично се разпознават от съвременните програми за отстраняване на грешки и следователно са напълно без значение.

Myshch си постави за задача да организира цялата налична информация, да тества всяка техника за отстраняване на грешки под дузина популярни програми за отстраняване на грешки, да показва как и с какви плъгини може да бъде заобиколен, как да разпознава тези приставки и да ги неутрализира. Ето една рекурсивна тема: отстраняване на грешки → отстраняване на грешки → анти-отстраняване на грешки → анти-анти-отстраняване на грешки ... И рекурсивното спускане не спира дотук, но продължава да пада по-дълбоко - в края на краищата броят на " anti "префиксите не е ограничен от нищо!

статии

Фигура 1 лично мишки

боен арсенал

W2K SP0 и Knoppix 4.7 (базиран на Debian Linux с ядро ​​2.4.x) бяха избрани като основна операционна система за експериментите. Разликите в останалите оси ще бъдат споменати по пътя (ако е необходимо).

Списък на експерименталните програми за отстраняване на грешки с техните кратки описания и указания за версиите е даден по-долу:

Olly Debugger 1.10

anti-debug-00

Фигура 2 Външен вид на Olly Debugger

Olly Debugger 2.00с pre-alpha 3

Експериментален дебъгер с напълно пренаписан механизъм за отстраняване на грешки и силно намалена функционалност (в сравнение с версия 1.10). Въпреки това, механизмът за отстраняване на грешки все още използва API за отстраняване на грешки на MS и все още е дебъгер на ring-3, с всички ограничения, които идват с него.

IDA Pro Advanced 5.2

IDA Pro е търговски продукт и повечето от "warez" версиите, работещи в мрежата, работят изключително нестабилно и постоянно се сриват, следователно има смисъл да се спрем на безплатната (и, естествено, нереално нарязана) версия 4.9.

статии

Фигура 3 дебъгер, интегриран в IDA Pro (конзолно издание)

Microsoft Debugger 6.8.4.0

Той е част от WDK (Windows Driver Kit - по-рано Driver Development Kit или DDK) и инструментите за отстраняване на грешки. И двете са безплатни, но WDK е много по-голям по размер и изисква предварителна регистрация, за да се получи Windows Live ID (валидността на Windows _ not_ проверена), докато инструментите за отстраняване на грешки се разпространяват без регистрация заедно със SDK, който включва документация, заглавни файлове, библиотеки и няколко примера за писане на приставки. За съжаление има много малко приставки на трети страни за Microsoft Debugger.

Microsoft Debugger може да работи както на ниво приложение (ring-3), така и на ниво ядро. До XP, за ядрено отстраняване на грешки са необходими поне две машини, свързани чрез COM кабел, но сега една е достатъчна.