Общее·количество·просмотров·страницы

четверг, 31 октября 2013 г.

простой загрузчик и ядро

Попробуем написать загрузчик и ядро.Ядром у нас будет обычный битмап.Пишем на fasm, т.к. он позволяет устанавливать код в разных местах сегмента.Т.е. можно написать код стартующий с 7с00, а потом стартующий с 0h.

Для начала подготовим ядро.Что мы знаем о битмапе?он состоит к верху дном проще говоря,по этому и рисовать будем к верху дном.и сохранять в 256 цветах (по 1 байту как раз) и размерами 320*200 пикселей (равному режиму 0x13). получается у меня такая няша:

(фуууу, слабак!)))

далее смотрим по структуре: битмап это тупо рисунок с заголовками и палитрой.Их надо откусить.


-Заголовок файла (BITMAPFILEHEADER)
-Заголовок изображения (BITMAPINFOHEADER, может отсутствовать). BITMAPV4HEADER (Win95, NT4.0) BITMAPV5HEADER (Win98/Me, 2000/XP)
-Палитра (может отсутствовать)

1-й заголовок -14 байт
2-й заголовок -40 байт
палитра - это 256 записей RGB (4 байта) что составит еще 1кб.
всего надо откусить 1078 байт. открываем в любом хекс редакторе и откусываем.

должен получиться размер картинки 64000 байт.

терь собсна код:

первое загрузочный сектор.тут все как "обычно"

USE16

org 7C00h
EntryPoint:
mov ax, cs
cli
mov ss, ax
mov ds, ax
mov es, ax
mov sp, EntryPoint  ; настраиваем сегменты и т.д. и т.п.
sti
cld

push dx ; запоминаем какой диск


mov ax, 3
int 10h

xor dx, dx
mov bx, 15
mov ax, 1301h   ; выдаем , мол все зер гут
mov bp, BootMsg
mov cx, BootMsgEnd - BootMsg 
int 10h
pop dx

mov ax, 9000h  ; сегмент куда будут кидаться данные 
mov es, ax

mov ah, 2 ;2 сектор 
mov al, (KernelEnd - KernelStartCode) / 512 ; кол-во секторов, отведенных под ядро
xor dh, dh
mov cx, 2h
xor bx, bx
int 13h ; читаем 

jc Error
jmp 9000h:0000h ; передаем управление на заданный адрес


Error:
;если ошибка- че то там делаем


BootMsg db "Boot Sector Loaded"
BootMsgEnd:

TIMES 510-($-$$) DB 0
DW 0AA55h

Теперь идет непосредственно ядро:

KernelStart:
org 0h
KernelStartCode:
jmp KernelCode

BootDisk DB ?
KernelMsg db "Kernel Started"
KernelMsgEnd:


; процедура чтения сектора по номеру.
; вход ax= номер сектора
; es:bx= куда кинуть

ReadSectors:
push ax
push cx
cwd
mov cx, 18
div cx
mov cx, dx
inc cx

xor dh, dh
shr ax, 1
rcl dh, 1

mov ch, al
shl ah, 4
or cl, ah

mov dl, [BootDisk]

mov ax, 0201h   
int 13h

pop cx
pop ax
ret

KernelCode:
;извещаем что мы подгрузились

mov [BootDisk], dl
mov dx, 0100h
mov bx, 15
mov ax, 1301h
mov bp, KernelMsg
mov cx, KernelMsgEnd - KernelMsg 
int 10h

xor ax, ax ; ждем нажатия клавиши и устанавливаем режим 320*200*256
int 16h

mov ax, 13h
int 10h

mov ax, 0A000h ; начало непосредственно прямого вывода в видеобуффер 
mov es, ax

xor bx, bx
mov ax, 2
m1:
call ReadSectors ;читаем сектора пока не выведем все
add bx, 512
inc ax
cmp ax, 125
jne m1

xor ax, ax
int 16h ;ждем нажатия и ребутим ПК

jmp 0FFFFh:0000h

  TIMES  0 - ($-KernelStart) mod 512 DB 0 ; уравниваем размеры
KernelEnd:
   file '2.bmp' ; инклюдим наше ядро

Вот собсно и все. проверить как оно работает можно в боше.



ЭХЭХЭ)
ну вот собсно и усе).

А ТЕПЕРЬ БУДЕТ ТАКОЙ СЕ НАБОЛЕВШИЙ ПОСТ СКРИПТУМ))))))))

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

пысышки:
уже целая коллекция гугл нексусов). подумываю 7 поменять на 10 теперь)
а это я учусь)



еще кое что: этот код мы как то давно со slesh-em чудили, он даже где то выкидывал его кажется.однако разобраться че он там грузит и как трудновато,так что я решил (давно хотел)его сюда закинуть и рассказать как применить и как работает).

вторник, 8 октября 2013 г.

Пищать как сучки или легальный перехват

В общем то давно было желание воссоздать технику как всем известного KIDO conficker
http://ru.wikipedia.org/wiki/Conficker (часть про блокировку сайтов АВ разработчиков).
Получилось то, что для делфи все библиотеки что я ощупал (в том числе от Ms-Rem-a) очевидно на сегодняшний день устарели или просто кривые, ибо все крэшилось или нереально лагало при инжекте,а сплайсить в западло было, да и то потом отладкой заниматься долго и весело.Решил раз уж я все равно уделяю какое то время Сям, то почему бы и нет.
Тем более MICRO$OFT сами выпускают для этого БЕСПЛАТНУЮ!(конечно не в комерц. проэктах)"легальную" библиотеку detours!.

Прежде всего я подофигел с того, что для пользования ею , надо (что очень не характерно для шиндовса,скорее для никсов) собирать ее из исходников.На самом деле все просто.я собирал detours 3.0 на 2010 студии (proff).

идем в visual studio tools (папка в пуске).видим такое:
выбираем командную строку.в папку куда установили detours в корень кидаем nmake (идет в любой студии в комплекте)и запускаем там nmake, ждем пока либа и примеры соберутся.

после чего добавляем ее в студию так:

нажимаем на св-ва проекта, дальше:
прописываем путь к либе и усе готово.можно заняться перехватом.
я подумал что просто блокать будет не слишком интересно, а лучше длеать редирект(не плохая идея для траффа, не так ли?))
ну и вот что получилось:

останется лишь сделать разделение ip\domen, главное что работает.советую попробовать либу, для не сверхсложных перехватов, где не нужен дизассемблер длин инструкций и т.д и т.п. (хотя по-моему уже он там есть)отлично подойдет!

ps:
вот так я и стал писать сюда раз в месяц, идея пришла-сделал-ушла)и лень лень лень и еще раз лень.

pss:
спасибо kaimi (http://kaimi.ru/) за консультацию!

psss:
вот люди почему то и спрашивают, почему нету на других ресурсах, а сижу только на форуме antichat.ru. Объясняю:
потому что это пиздец.вы полазьте якобы на "ХАКИРСКИХ" форумах где рассадник школоло которое только понтуется своими супер знаниями,прямо русские\украинские Биллы Гейтсы и Кэвины Митники.А на античате всегда можно найти ответы на свои вопросы, помогут те же kaimi и dx, раньше slesh , gar|k, и еще много людей...конечно на АЧ тоже школоты хватает, но она в основном в болталке да и торговых пытается кинуть кого то на 10$ .по этому грамотные в основе только элита.
единственные еще не плохие порталы rdot.org (тот же античат, просто я не застал каких то там страшных событий из-за чего образовался этот форум, я типа ньюфаг) и wasm.ru.
однако мне не было нужды там регаться, пока что.


pssss:
блеа!я уже опаздываю на учебу, все бб!)