Автор Тема: asm загрузочного сектора  (Прочитано 1264 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
asm загрузочного сектора
« : 12/04/2012 10:21:11 »
Раскудрявил одну маленькую программку.  Это 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. А почему запрещен просмотр спойлеров?
« Последнее редактирование: 07/05/2012 15:55:04 от Юр »
Есть только  миг
 

Онлайн Master X

  • Глобальный модератор
  • Эксперт
  • ****
  • Сообщений: 1710
  • Похвалили: 103 раз(а)
  • Искать тут: 282255340@qip.ru
  • Откуда: г.Горький
    • АРХИВ_Профсоюза
Re: asm загрузочного сектора
« Ответ #1 : 12/04/2012 17:11:58 »
Юр - Извини, слишком длинно, я код спрятал в спойлер :(
Linux is working. The future is open(Ц)IBM
Если найдёте ошибки в форуме пишите мне в личку -исправлю!
Я тут главный шут, тролль и хейтер :)
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Re: asm загрузочного сектора
« Ответ #2 : 12/04/2012 18:44:11 »
Юр - Извини, слишком длинно, я код спрятал в спойлер :(

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

До кучи - товарищи, поделитесь кто-нить клавиатурным перехватчиком, который не требует инсталляции и не запрещен виндовозным антивирем, у кого есть, оч нуна.
Есть только  миг
 

Оффлайн dervish

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 892
  • Похвалили: 30 раз(а)
  • Да здравствует разум, да сгинет маразм!!!
  • Откуда: Тольятти
Re: asm загрузочного сектора
« Ответ #3 : 12/04/2012 18:58:23 »
Администрация насчет спойлеров озадачена, идет разбор полетов.
 

Оффлайн шУмА

  • Новичок
  • Сообщений: 17
  • Откуда: Арх.Обл.
Re: asm загрузочного сектора
« Ответ #4 : 12/04/2012 20:35:48 »
До кучи - товарищи, поделитесь кто-нить клавиатурным перехватчиком, который не требует инсталляции и не запрещен виндовозным антивирем, у кого есть, оч нуна.


Вот такой нашёл. На счёт палится антивирусом или нет - не знаю. Проверить не могу сейчас.
http://download.ru/products/ardamax-keylogger
« Последнее редактирование: 13/04/2012 00:15:42 от Master X »
 

Онлайн Master X

  • Глобальный модератор
  • Эксперт
  • ****
  • Сообщений: 1710
  • Похвалили: 103 раз(а)
  • Искать тут: 282255340@qip.ru
  • Откуда: г.Горький
    • АРХИВ_Профсоюза
Re: asm загрузочного сектора
« Ответ #5 : 13/04/2012 00:59:22 »
Попробовал установить, скрин в прицепе.
Ardamax Keylogger 3.9

ЗЫ: Прога платная, антивирусом не палится.
« Последнее редактирование: 13/04/2012 02:05:55 от Master X »
Linux is working. The future is open(Ц)IBM
Если найдёте ошибки в форуме пишите мне в личку -исправлю!
Я тут главный шут, тролль и хейтер :)
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Re: asm загрузочного сектора
« Ответ #6 : 13/04/2012 10:18:38 »
Дмитрий, звини, пока идет разбор полетов насчет спойлеров, я снова убрал теги. Если ты не против. Потом верну, ок? Ответы-то нужны.
 
До кучи - товарищи, поделитесь кто-нить клавиатурным перехватчиком, который не требует инсталляции и не запрещен виндовозным антивирем, у кого есть, оч нуна.


Вот такой нашёл. На счёт палится антивирусом или нет - не знаю. Проверить не могу сейчас.
http://download.ru/products/ardamax-keylogger

Спасибо. А в ответвление темы продолжил https://kkmcom.ru/forum/index.php/topic,2100.new.html#new]здесь
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Re: asm загрузочного сектора
« Ответ #7 : 07/05/2012 15:39:52 »
Почитал доки, один "самый важный") вопрос отпал -
Цитировать
jmp far ptr 0:61Eh ; where is this far jmp ? ?? - куда этот переход

таким образом освобождается место для будущей загрузки уже собственно загрузчика ОС. Теперь все это полотно надо сместить начиная с адреса 0:600h.
« Последнее редактирование: 07/05/2012 15:56:07 от Юр »
Есть только  миг
 

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20