Оптимизация для процессоров семейства Pentium (часть 3)

25 фев 2017

Чтобы подсчитать количество прочитываемых регистров, вам нужно включить все регистры, которые считываются инструкцией. В это число входят все целочисленные регистры, флаговые регистры, указатель на стек, регистры плавающей запятой и регистры MMX. Регистр XMM идет за два, кроме тех случаев, когда используется только его часть, например в ADDSS и MOVHLPS. Сегментные регистр и указатель на инструкцию не учитываются. Например в 'SETZ AL' вы считаете флаговый регистр, но не AL. В 'ADD EBX, ECX'...
Читать далее
Лайков +3 Комментариев0 Просмотров2.311

Оптимизация для процессоров семейства Pentium (часть 2)

25 фев 2017

10.2 Несовершенное спаривание Бывают ситуации, когда две спаривающиеся инструкции не будут выполняться одновременно или будут частично рассинхронизированы во времени. Пока обе инструкции не выполняться (каждая в своем конвейере) ни одна другая инструкция не начнет выполняться. Несовершенное спаривание возникает в следующих случаях: Если вторая инструкция приводит к задержке AGU (глава 9). Две инструкции не могут обращаться к одному и тому двойному слову в памяти одновременно: MOV AL,...
Читать далее
Лайков +2 Комментариев0 Просмотров2.240

Обнаружение VM, навороченные методы (vx)

25 фев 2017

Обнаружение VM, навороченные методы (vx) https://yadi.sk/d/CQWCxYvT39FFtx Защита потока данных (Data Flow Guard) Защита потока управления (CFG) или данных (DFG) – методы обнаружения нарушения целостности кода или данных, обнаружение чужеродных объектов. Нарушение целостности кода — появление в нём посторонних инструкций, код может сам изменяться или вызывать чужеродный код косвенным путём — посредством изменения памяти, например указателей в массивах методов или адресов возврата на стеке. В...
Читать далее
Лайков +3 Комментариев6 Просмотров6.800

Способы обнаружения атомов

25 фев 2017

Способы обнаружения атомов Ранее описан способ блокировки исполнения атома — изоляция выборки данных (DF) через блокировку памяти. При обнаружении DF адресация изменяется, но так как в атоме DF не существует, он не может получить доступ к данным. Далее рассмотрены методы не блокировки, а обнаружения атомов. Для обнаружения атома необходимо в начале получить событие DF. Далее можно выполнить валидацию DFG или иные манипуляции. Базовые способы получения DF: Раскодировка адресов для каждой...
Читать далее
Лайков +4 Комментариев1 Просмотров4.873

Оптимизация для процессоров семейства Pentium (часть 1)

25 фев 2017

Оптимизация для процессоров семейства Pentium — Архив WASM.RU Содержание Введение Литература Вызов ассемблерных функций из языка высокого уровня Отладка Модель памяти Выравнивание Кэш Исполнение кода в первый раз Задержка генерации адреса Спаривание целочисленных инструкций (PPlain и PMMX) Разбивка сложных инструкций на более простые (PPlain и PMMX) Префиксы (PPlain и PMMX) Обзор конвейера PPro, PII и PIII Раскодировка инструкций (PPro, PII и PIII) Доставка инструкций (PPro, PII и PIII)...
Читать далее
Лайков +3 Комментариев0 Просмотров2.825

Путешествие из Kernel32 в HAL

25 фев 2017

Оригинал статьи http://www.debasish.in/2014/02/reversing-tiny-built-in-windows-kernel.html Путешествие из Kernel32 в HAL В этом посте я собираюсь изучить ядро Wiindows путем небольшого реверса встроенного в ядро модуля. Если вы когда-нибудь разрабатывали ядерный драйвер (модуль), это будет очень просто для понимания. Если вы не знакомы с тем, как работают драйвера, то на Codeproject.com есть немного хороших ресурсов, чтобы начать. Но прежде чем мы сможем начать реверсинг основного...
Читать далее
Лайков +9 Комментариев2 Просмотров6.448

Введение в реверсинг с нуля используя IDA PRO. Часть 4

20 фев 2017

Мы продолжаем рассматривать инструкции обмена данными в IDA. XCHG A, B Эта инструкция обменивает значение A со значением B, давайте рассмотрим пример. [ATTACH] В файле VEVIEWER нет такой инструкции, поэтому я загружаю СRACKME.EXE Cruehead, и меняю инструкцию по адресу 0x4013D8. Я помещаю курсор на строку адреса и перехожу в меню EDIT->PATCH PROGRAM->ASSEMBLE. [ATTACH] Мы видим, что функция была повреждена, так как я работаю сейчас с ней. [ATTACH] Мы уже видели, что, если инструкция...
Читать далее
Лайков +17 Комментариев10 Просмотров21.681

Введение в разработку эксплоитов. Часть 1

20 фев 2017

Часть 1: Введение в разработку эксплоитов Это первая часть в (скромной) многотомной серии туториалов, посвященной разработке эксплоитов. Эта часть просто расскажет некоторые базовые вещи, такие, которые нам нужны, чтобы сделать нашу работу, основные идеи скрытые за разработкой эксплоитов и некоторые вещи, которые нужно держать в памяти, если мы хотим заслать и выполнить наш шеллкод. Эти туториалы не будут рассказывать как находить ошибки, вместо этого, каждая часть будет включать уязвимую...
Читать далее
Лайков +2 Комментариев18 Просмотров10.503