Document
 
 
 
 

Реклама на сайте  

косметология спб
чистка лица спб
массаж лица спб
смас лифтинг цена спб
клиника косметологии спб
смас лифтинг спб
smas лифтинг спб
чистка лица спб цены
лечебный массаж спины спб
массаж лица спб цены
косметология санкт петербург
фотоэпиляция спб
плазмолифтинг спб
чистка лица санкт петербург
плазмолифтинг цена спб
биоревитализация спб
студия массажа лица спб
контурная пластика спб
биоревитализация лица спб
клиника косметологии санкт петербург
рф лифтинг спб цены
rf лифтинг санкт петербург
рф лифтинг спб
биоревитализация спб цена
массаж лица санкт петербург
лечебный массаж спины спб цены
удаление пигментных пятен спб
криомассаж лица цена спб
удаление татуажа спб
смас лифтинг санкт петербург
криомассаж лица спб
rf-лифтинг спб
rf лифтинг спб
снять квартиру в сочи
снять квартиру в адлере
снять квартиру в хосте
снять квартиру в дагомысе
снять квартиру в сочи
снять квартиру в адлере
снять квартиру в хосте
снять квартиру в дагомысе
снять квартиру в москве
купить квартиру в москве
заказать продвижение сайта
как заработать деньги в интернете
пилинг спб

 
 
 
 

Любопытно, какой простой, но какой надежный прием. Впрочем, следует признать, что перехват INTChпод операционной системой windows бесполезен, и, не смотря на все ухищрения, приложение, породившие такое исключение, будет безжалостно закрыто. Однако, в реальном режиме это работает превосходно. Попробуйте убедиться в этом на примере crack1E.com. Забавно наблюдать реакцию различных эмулирующих отладчиков на него. Все они либо неправильно работают (выбирают одно слово из стека, а не два), либо совершают очень далекий переход по 32-битному eiр (в результате чего виснут), либо, чаще всего, просто аварийно прекращают работу по исключению 0Ch (так ведет себя cuр386).

Еще интереснее получится, если попытаться исполнить в 16-разрядном сегменте команду CALL. Если адрес перехода лежит в пределах сегмента, то ничего необычно ожидать не приходится. Инструкция работает нормально. Все чудеса начинаются, когда адрес выходит за эти границы. В защищенном 16-разрядном режиме при уровне привилегий CL0 с большой вероятностью регистр EIР «обрежется» до шестнадцати бит, и инструкция сработает (но, похоже, что не на всех процессорах). Если уровень не CL0, то генерируется исключение защиты 0Dh. В реальном же режиме эта инструкция может вести себя непредсказуемо. Хотя в общем случае должно генерироваться прерывание INTDh. В реальном режиме его нетрудно перехватить и совершить дальний 'far' переход в требуемый сегмент. Так поступает, например, моя собственная операционная система OS\7R, дающая в реальном режиме плоскую (flat) модель памяти. Разумеется, такой поворот событий не может пережить ни один отладчик. Ни трассировщики реального режима, ни v86, ни protect-mode debugger, и даже эмуляторы (ну, во всяком случае, из тех, что мне известны) с этим справиться не в состоянии.

Одно плохо — все эти приемы не работают под Windows и другими операционными системами. Это вызвано тем, что обработка исключения типа «Общее нарушение защиты» всецело лежит на ядре операционной системы, что не позволяет приложениям распоряжаться им по своему усмотрению. Забавно, но в режиме эмуляции MS-DOS некоторые EMS-драйверы ведут себя в этом случае совершенно непредсказуемо. Часто при этом они не генерируют ни исключения 0Ch, ни 0Dh. Это следует учитывать при разработке защит, основанных на приведенных выше приемах.

Обратим внимание так же и на последовательности типа 0x66 0x66 [xxx]. Хотя фирма intel не гарантирует корректную работу своих процессоров в такой ситуации, но фактически все они правильно интерпретируют такую ситуацию. Иное дело некоторые отладчики и дизассемблеры, которые спотыкаются и начинают некорректно вести себя.

Есть еще один интересный момент связанный с работой декодера микропроцессора.

Декодер за один раз считывает только 16 байт и, если команда «не уместиться», то он просто не сможет считать «продолжение» и сгенерирует исключение «Общее нарушение защиты». Однако, иначе ведут себя эмуляторы, которые корректно обрабатывают «длинные» инструкции.

Впрочем, все это очень процессорно-зависимо. Никак не гарантируется сохранение и поддержание этой особенности в будущих моделях, и поэтому злоупотреблять этим не стоит, иначе ваша защита откажется работать.

Префиксы переопределения сегмента могут встречаться перед любой командой, в том числе и не обращающейся к памяти, например, CS:NOP вполне успешно выполнится. А вот некоторые дизассемблеры сбиться могут. К счастью, IDA Pro к ним не относится. Самое интересное, что комбинация 'DS: FS: FG: CS: MOV AX,[100]' работает вполне нормально (хотя это и не гарантируется фирмой Intel). При этом последний префикс в цепочке перекрывает все остальные. Некоторые отладчики, наоборот, ориентируются на первый префикс в цепочке, что дает неверный результат. Этот пример хорош тем, что великолепно выполняется под Windows и другими операционными системами. К сожалению, на декодирование каждого префикса тратится один такт, и все это может медленно работать.

Вернемся к формату кода операции. Выше была описана структура первого байта. Отметим, что она фактически не документирована, и Intel этому уделяет всего два слова. Формат разнится от одной команды к другой, однако, можно выделить и некоторые общие правила. Практически для каждой команды, если регистром-приемником фигурирует AX (AL), существует специальный однобайтовый код, который содержит в трех младших битах регистр-источник. Этот факт следует учитывать при оптимизации. Так, среди двух инструкций XCHGAX,BX и XCHG BX,DX следует всегда выбирать первую, т.к. она на байт короче. (Кстати, инструкция XCHGAX,AX более известна нам как NOP. О достоверности этого факта часто спорят в конференциях, но на странице 340 руководства №24319101 «Instruction Set Reference Manual» фирмы Intel это утверждается совершенно недвусмысленно. Любопытно, что, выходит, никто из многочисленных спорщиков не знаком даже с оригинальным руководством производителя).

Для многих команд условного перехода четыре младших бита обозначают условие операции. Точнее говоря, условие задается в битах 1-3, а установка бита 0 приводит к его инверсии (таблица 1).


Тонкости дизассемблирования - any2fbimgloader9.jpeg

Как видим, условий совсем немного, и проблем с их запоминанием обычно не возникает. Теперь уже не нужно мучительно вспоминать 'jz' — это 74h или 75h. Так как младший бит первого равен нулю, то 'jz' — это 74h, а 'jnz', соответственно, 75h.

Далеко не все коды операций смогли поместиться в первый байт. Инженеры Intel задумались о поиске дополнительного места для размещения еще нескольких бит и обратили внимание на байт modR/M. Подробнее он описан ниже, а пока рассмотрим приведенный выше рисунок (рис. 1). Трех-битовое поле reg, содержащие регистр-источник, очевидно, не используется, если вслед за ним идет непосредственный операнд. Так почему бы его не использовать для задания кода операции? Однако, процессору требуется указать на такую ситуацию. Это делает префикс '0Fh', размещенный в первом байте кода. Да, именно префикс, хотя документация Intel этого прямо и не подтверждает. При этом на не-MMX процессорах для его декодирования требуется дополнительный такт. Intel же предпочитает называть первый байт основным, а второй уточняющим кодом операции. Заметим, что это же поле используют многие инструкции, оперирующие одним операндом (jmр, call). Все это очень сильно затрудняет написание собственного ассемблера/дизассемблера, но зато дает простор для создания самомодифицирующегося кода и, кроме того, вызывает восхищение инженерами Intel, до минимума сокративших размеры команд. Конечно, это досталось весьма непростой ценой. И далеко не все дизассемблеры работают правильно. С другой стороны именно благодаря этому и существуют защиты, успешно противостоящие им.

Избежать проблем можно, лишь четко представляя себе сам принцип кодировки команд, а не просто работая с «мертвой» таблицей кодов операций, которую многие авторы вводят в дизассемблер и на том успокаиваются, так как внешне все работает правильно.

К тонкостям кодирования команд мы еще вернемся, а пока приготовимся к разбору поля modR/M. Два трехбитовых поля могут задавать код регистра общего назначения по следующей таблице (таблица 2):


Тонкости дизассемблирования - any2fbimgloader10.jpeg


Опять можно восхищаться лаконичностью инженеров Intel, которые ухитрились всего в трех битах закодировать столько регистров. Это, кстати, объясняет, почему нельзя выборочно обращаться к старшим и младшим байтам регистров SР, BР, SI, DI и, аналогично, к старшему слову всех 32-битных регистров. Во всем «виновата» оптимизация и архитектура команд. Просто нет свободных полей, в которые можно было бы «вместить» дополнительные регистры. Сегодня мы вынуждены расхлебывать результаты архитектурных решений, выглядевшими такими удачными всего лишь десятилетие назад.



< 1 2 3 4 > >>

   
Document
   
© читать онлайн,читать онлайн бесплатно
Document

косметология спб
чистка лица спб
массаж лица спб
смас лифтинг цена спб
клиника косметологии спб
смас лифтинг спб
smas лифтинг спб
чистка лица спб цены
лечебный массаж спины спб
массаж лица спб цены
косметология санкт петербург
фотоэпиляция спб
плазмолифтинг спб
чистка лица санкт петербург
плазмолифтинг цена спб
биоревитализация спб
студия массажа лица спб
контурная пластика спб
биоревитализация лица спб
клиника косметологии санкт петербург
рф лифтинг спб цены
rf лифтинг санкт петербург
рф лифтинг спб
биоревитализация спб цена
массаж лица санкт петербург
лечебный массаж спины спб цены
удаление пигментных пятен спб
криомассаж лица цена спб
удаление татуажа спб
смас лифтинг санкт петербург
криомассаж лица спб
rf-лифтинг спб
rf лифтинг спб
пилинг спб антицеллюлитный массаж томск
массаж томск
лимфодренажный массаж томск
антицеллюлитный массаж томск
классический массаж томск
коррекция фигуры томск
ремонт телевизоров москва
ремонт пылесосов москва
ремонт кофемашин москва
ремонт самсунг москва
ремонт микроволновки москва
ремонт samsung москва
ремонт парогенераторов москва
ремонт насосных станций москва
ремонт борк москва
ремонт delonghi москва
Ремонт dyson москва
ремонт пылесосов dyson москва
ремонт дайсон москва
ремонт бытовой техники
ремонт бытовой техники москва
ремонт телевизоров москва
ремонт пылесосов москва
ремонт кофемашин москва
ремонт самсунг москва
ремонт микроволновки москва
ремонт samsung москва
ремонт парогенераторов москва
ремонт насосных станций москва
ремонт борк москва
ремонт delonghi москва
Ремонт dyson москва
ремонт пылесосов dyson москва
ремонт дайсон москва
ремонт бытовой техники
ремонт бытовой техники москва
ремонт телевизоров москва
ремонт пылесосов москва
ремонт кофемашин москва
ремонт самсунг москва
ремонт микроволновки москва
ремонт samsung москва
ремонт парогенераторов москва
ремонт насосных станций москва
ремонт борк москва
ремонт delonghi москва
Ремонт dyson москва
ремонт пылесосов dyson москва
ремонт дайсон москва
ремонт бытовой техники
ремонт бытовой техники москва
ремонт телевизоров москва
ремонт пылесосов москва
ремонт кофемашин москва
ремонт самсунг москва
ремонт микроволновки москва
ремонт samsung москва
ремонт парогенераторов москва
ремонт насосных станций москва
ремонт борк москва
ремонт delonghi москва
Ремонт dyson москва
ремонт пылесосов dyson москва
ремонт дайсон москва
ремонт бытовой техники
ремонт бытовой техники москва
маникюр
педикюр
маникюр краснодар
педикюр краснодар
нейл сервис
ногтевой сервис
салон красоты
салон красоты краснодар
коррекция бровей краснодар
маникюр
педикюр
маникюр краснодар
педикюр краснодар
нейл сервис
ногтевой сервис
салон красоты
салон красоты краснодар
коррекция бровей краснодар
маникюр
педикюр
маникюр краснодар
педикюр краснодар
нейл сервис
ногтевой сервис
салон красоты
салон красоты краснодар
коррекция бровей краснодар
LPG москва
LPG массаж москва
аппаратный массаж москва
коррекция фигуры москва
лазерная эпиляция москва
коррекция фигуры москва митинская
лазерная эпиляция москва митинская
прессотерапия москва митино
прессотерапия москва
прессотерапия москва митинская
натуральная косметика
эко товары
эко продукты
магазин эко товаров
одежда из льна
парфюмерия
косметика
парфюмерия и косметика
селективная парфюмерия
селективные духи
эксклюзивная косметика
натуральная косметика самара
эко товары самара
эко продукты самара
магазин эко товаров самара
одежда из льна самара
парфюмерия самара
косметика самара
парфюмерия и косметика самара
селективная парфюмерия самара
селективные духи самара
эксклюзивная косметика самара
капучино краснодар
латте краснодар
эспрессо краснодар
эспрессо
кофе с собой
кофе с собой краснодар
кальянная краснодар
лаунж бар краснодар
кальянная краснодар круглосуточно
кальянная лаунж
заказ пиццы выборг
суши выборг на заказ
суши wok
заказать пиццу в выборге
заказать пиццу в выборге с доставкой
суши выборг телефон
суши бар в выборге
пицца выборг телефон
рис и рыба суши выборг
рис и суши выборг
заказать суши в выборге
суши роллы выборг
суши выборг