Главная категория > Компьютеры, сканеры ШК, Клавиатуры, принтеры и ПО и т.д.
asm загрузочного сектора
Юр:
Раскудрявил одну маленькую программку. Это MBR. Он не ищет вторичный загрузчик, назначение его в том, что если сбросилась загрузка с флэшки, то считывается оный с винчестера, который перенаправляет на таковой на флэшке.
Часть закомментировал и переименовал, но остаются вопросы. Они, в общем-то, в комментах к строкам программы (извините, что латиницей, идовский asm-файл не понимает кириллицу), строки с ххх? воспринимайте как мои комменты, а строки ххх? (с пробелом перед ? ) - это появившиеся по ходу вопросы (также выделены цветом).
ssume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
begining: ; CODE XREF: seg000:7C74J
cli
mov ax, 60h ; '`'
mov ss, ax
assume ss:nothing
mov ds, ax
assume ds:nothing
mov es, ax
assume es:nothing
mov sp, 7600h
sti
cld
mov si, 7600h
xor di, di
mov cx, 200h
rep movsb
jmp far ptr 0:61Eh ; where is this far jmp ? ?? - самый важный вопрос, куда этот переход
; ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
mov si, 79h ; 'y'
call VIDEO_WRITE_CHARACTERs
loc_7C24: ; CODE XREF: seg000:7C39j seg000:7C3Dj
inc dl
xor dh, dh
push dx
call copy_partition_table_from_disk
pop dx
or ah, ah
jnz short loc_7C3B
call test_type_first_partition
cmp ax, 102h
jz short loc_7C67 ; if fat32 goto
jmp short loc_7C24
; ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
loc_7C3B: ; CODE XREF: seg000:7C2Fj
cmp al, 0
jnz short loc_7C24 ; until string end
mov si, 8Ah ; 'Љ'
call VIDEO_WRITE_CHARACTERs
xor ah, ah
int 1Ah ; CLOCK - GET TIME OF DAY
; Return: CX:DX = clock count
; AL = 00h if clock was read or written (via AH=0,1) since the previous
; midnight
; Otherwise, AL > 0
mov bx, dx
add bx, 3E8h ; what is it ?
loc_7C4F: ; CODE XREF: seg000:7C55j
xor ah, ah
int 1Ah ; CLOCK - GET TIME OF DAY
cmp bx, dx
jg short loc_7C4F
mov ax, 28h ;
mov ds, ax
assume ds:nothing
mov ax, 7F7Fh
mov ds:48h, ax
jmp far ptr 0FFFFh:0 ;
; ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
loc_7C67: ; CODE XREF: seg000:7C37j
xor ax, ax
mov ss, ax
assume ss:nothing
mov ds, ax
assume ds:nothing
mov es, ax
assume es:nothing
mov sp, 7D0h
mov bx, sp
jmp far ptr begining ; jmp again to this MBR
; ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
db 4Ch ; L
db 6Fh ; o
db 61h ; a
db 64h ; d
db 65h ; e
db 72h ; r
db 0Dh
db 0Ah
db 0
db xxh ; f
db xxh ; i
db xxh ; r
db xxh ; m
db xxh ; -
db xxh ; -
db xxh ; -
db 20h
db 46h ; F
db 6Ch ; l
db 61h ; a
db 73h ; s
db 68h ; h
db 20h
db 4Eh ; N
db 6Fh ; o
db 74h ; t
db 20h
db 46h ; F
db 6Fh ; o
db 75h ; u
db 6Eh ; n
db 64h ; d
db 0
; ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ S U B R O U T I N E ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
copy_partition_table_from_disk proc near ; CODE XREF: seg000:7C29p
mov cx, 1 ; number bytes for reading from the disk
call DISK_READ_if_it_MBR_ah_eq_FFh
mov si, 77BEh
mov di, 1BEh ; partition table address
mov cx, 40h ; number bytes for transfer (partition table lenght)
rep movsb ; copy strings
retn
copy_partition_table_from_disk endp
; ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ S U B R O U T I N E ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
DISK_READ_if_it_MBR_ah_eq_FFh proc near ; CODE XREF: copy_partition_table_from_disk+3p
mov ax, 201h ; AH=02h: Read Sectors From Drive
mov bx, 7600h ; ES:BX Buffer Address Pointer
int 13h ; DISK - READ SECTORS INTO MEMORY
jb short locret_7CC8 ; if error then exit
cmp word ptr ds:77FEh, 0AA55h ; is it MBR?
jz short locret_7CC8
mov ah, 0FFh ; ret value eq FFh
locret_7CC8: ; CODE XREF: DISK_READ_if_it_MBR_ah_eq_FFh+8j
; DISK_READ_if_it_MBR_ah_eq_FFh+10j
retn
DISK_READ_if_it_MBR_ah_eq_FFh endp
; ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ S U B R O U T I N E ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
VIDEO_WRITE_CHARACTERs proc near ; CODE XREF: seg000:7C21p seg000:7C42p ...
lodsb ; reading byte from string [DS][SI]
; input [si]=79h and 8Ah
or al, al
jz short locret_7CF7 ; retn because string end
mov ah, 0Eh ; what is the simbol ASCII ? ??
mov bx, 7
push si
int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)
pop si ; wow, but [si] is const, and non-end cicle!!!
jmp short VIDEO_WRITE_CHARACTERs
; ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
mov bh, 20h ; ' '
mov [di-4], bh
mov [di-3], bh
mov [di-2], bh
mov [di-1], bh
mov ch, 0Ah
loc_7CE9: ; CODE XREF: VIDEO_WRITE_CHARACTERs+2Cj
div ch
add ah, 30h ; '0' ; -> ascii code
mov [di], ah
dec di
xor ah, ah
or al, al
jnz short loc_7CE9
locret_7CF7: ; CODE XREF: VIDEO_WRITE_CHARACTERs+3j
retn
VIDEO_WRITE_CHARACTERs endp
; ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ S U B R O U T I N E ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
test_type_first_partition proc near ; CODE XREF: seg000:7C31p
mov bp, 1BEh ; first byte of partition table
mov cx, 4
xor ax, ax
loc_7D00: ; CODE XREF: test_type_first_partition+23j
test byte ptr [bp+0], 80h ; is it sign (is it active partition?)
jz short loc_7D08
inc ah ; ah=1h
loc_7D08: ; CODE XREF: test_type_first_partition+Cj
cmp byte ptr [bp+4], 83h ; 'ѓ' ; is it ext filesystem?
jnz short loc_7D10
inc al ; al=01h
loc_7D10: ; CODE XREF: test_type_first_partition+14j
cmp byte ptr [bp+4], 0Bh ; is it fat32?
jnz short loc_7D18
inc al ; al=02h
loc_7D18: ; CODE XREF: test_type_first_partition+1Cj
add bp, 10h
loop loc_7D00 ; search in other parts of memory
retn
test_type_first_partition endp
; ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
db 0
db 0
db 55h ; U
db 0AAh ; Є
seg000 ends
end
P.S. А почему запрещен просмотр спойлеров?
Master X:
Юр - Извини, слишком длинно, я код спрятал в спойлер :(
Юр:
--- Цитата: Master X от 12/04/2012 17:11:58 ---Юр - Извини, слишком длинно, я код спрятал в спойлер :(
--- Конец цитаты ---
Я тоже сначала так сделал, но потом обнаружил, что просмотр спойлеров мне запрещен, оч ем и спрашивал. Также как и сейчас я его не могу раскрыть.
До кучи - товарищи, поделитесь кто-нить клавиатурным перехватчиком, который не требует инсталляции и не запрещен виндовозным антивирем, у кого есть, оч нуна.
dervish:
Администрация насчет спойлеров озадачена, идет разбор полетов.
шУмА:
--- Цитата: Юр от 12/04/2012 18:44:11 ---До кучи - товарищи, поделитесь кто-нить клавиатурным перехватчиком, который не требует инсталляции и не запрещен виндовозным антивирем, у кого есть, оч нуна.
--- Конец цитаты ---
Вот такой нашёл. На счёт палится антивирусом или нет - не знаю. Проверить не могу сейчас.
http://download.ru/products/ardamax-keylogger
Навигация
Перейти к полной версии