Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
n Определением
адреса функции KERNEL32!_except_handler3, на которую указывает обработчик
структурных исключений по умолчанию. Эта функция не экспортируется ядром,
однако присутствует в отладочной таблице символов, которую можно скачать со
следующего сервера
mov esi, fs:[0]/lodsd/lodsd
После выполнения кода регистр EAX содержит адрес, лежащий где-то в глубине KERNEL32. Выравниваем его по границе 64 Кб и ищем MZ/PE-сигнатуры, как показано в предыдущем пункте (это наиболее корректный и надежный способ поиска).
n Определением базового адреса загрузки KERNEL32.DLL через PEB:
mov eax, fs:[30h]/mov eax, [eax + 0Ch]/mov esi, [eax + 1Ch]/lodsd/mov ebx, [eax + 08h]
Базовый код возвращается в регистре EBX (это очень простой, хотя и ненадежный прием, т.к. структура PEB в любой момент может измениться, и за все время существования Windows она уже менялась по меньшей мере три раза, к тому же PEB есть только в NT);
n Использованием
native API операционной системы, взаимодействие с которым осуществляется либо
через прерывание INT 2Fh (Windows 3.x, Windows 9x), либо через прерывание
INT 2Eh (Windows NT, Windows 2000), либо через машинную команду syscall (Windows XP).
Краткий перечень основных функций можно найти в Interrupt List Ральфа Брауна:
Принципы внедрения X-кода в PE-файлы с технической точки зрения практически ничем не отличаются от ELF, разве что именами служебных полей и стратегией их модификации.
Однако детальный анализ спецификаций и дизассемблирование системного загрузчика выявляет целый пласт тонкостей, неизвестных даже профессионалам (во всяком случае ни один известный мне протектор/упаковщик не избежал грубых ошибок проектирования и реализации).