Часовой пояс: UTC + 3 часа




Форум закрыт Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 86 • Страница 5 из 5<  1  2  3  4  5
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 07.12.2003
Откуда: Mensk
Arioch писал(а):
Korj: Чтоб пережить перезагрузку, надо или её эмулировать, или трассировать, или ещё чёрт знает как, вплоть до подмены shadow.

По-твоему именно этим вирусы и занимались ? И куда в них влезало все это ?

По всему видно, что к asm-у ты отношения не имеешь. Ты будешь удивлён, но не всегда программам требовалось библиотек на пару десятков MB! Данный функционал вполне мог поместиться в 64к. Именно к тем временам и относились фразы ни то Лозинского ни то Данилова ни то всех вообще, что можно написать вирус, который ниодному антивирусу не по зубам, но для этого надо обладать знаниями и опытом, вместе с которыми приходит и понимание, что нафиг это всё не нужно... хотя бы просто в виде "всех убью, один останусь" -- для индустриального шпионажа всё что угодно можно сделать, и кое-что делали и делают...
Про то, что тёплая перезагрузка не спасает от некоторых вирусов писалось во всех руководствах к антивирусам.

Цитата:
Кстати, как ты предлагаешь трассировать hardware reset (не знаю, как это делают BIOSы, проще всего отыграть нажатие кнопки ReSet. М.б. у них есть и более изысканные методы.

Что-то ты такое умное говоришь, что у меня ума не хватает тебя понять... :insane:
Зачем трассировать hardware reset, если мы можем вполне инициировать горячий типа JMP FFFF:0000...
Зачем BIOS вообще что-то трассировать? Он BIOS или погулять вышел? Ему само управление передастся...

Цитата:
Но прежде чем инициализировать железки (ту же Shadow RAM), BIOS должен ее сбросить, чтобы настраивать с чистого листа)

При "горячей" перезагрузке shadow ram не обновляется, т.к. bios уверен, что он -- read-only для софта... что не всегда верно... чем и пользовались вирусы... с чем и боролись biosописатели...
Добавлено спустя 4 минуты, 12 секунд
dream___ писал(а):
Korj писал(а):
lol. Чтоб пережить перезагрузку, надо или её эмулировать, или трассировать, или ещё чёрт знает как, вплоть до подмены shadow. Вот было б весело, если б действительно резиденты сохранялись! )

а может вспомнит QEMM386, там же был QuickBoot!!!!!

гыгы. Дык на то он и QEMM386 - под его контролем шла вся работа на компьютере - он перехватывал почти все прерывания, он распределял всю память (=> мог и назад "отобрать"), он был супервизором защищённого режима. Но главное - разве он не аналогично in19h давал только перезагрузку DOS? Он же BIOS-овскому загрузчику управление не передавал!
Цитата:
собственно, а что мешает потрахать мозг производителям, чтоб хотя бы в дальнейшем была такая фича.???

отсутствие пары мегабаксов, без которых award тебе даже на e-mail не ответит, вестимо...



Партнер
 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 30.05.2006
Откуда: kiev.ua
Cтранно, что такое простое дело, как снять скрин БИОСа, оказывается таким суперсложным. Я снимал пару раз свой БИОС на камерафон :) - действительно отвратно. Меня не особо интересует снятие скринов, но вопрос возникает: чего же до сих пор БИОС такой угрюмый? в распоряжении целый комп на 3ГГц, 2ГБ памяти.. а простейший скрин снять не может. Всё это более чем странно..

_________________
Да пребудет с вами Intel©
Заказ в США и Украине - http://indeo.com.ua и ICQ183880


 

Member
Статус: Не в сети
Регистрация: 01.06.2003
Откуда: Pskov
Исходники обсуждаемой программы:

Scr2FDD_ver001_SRC.rar (7Kb)

Может кого заинтересуют. ;)

!ReadMe_rus.txt:

Цитата:
И вот, спустя год после опубликования статьи о программном комплексе :) для сохранения текстового экрана сетапа биоса в графический файл (подробности см. на http://people.overclockers.ru/xKVtor/record21),
поняв, что заниматься далее этим проектом у меня нет абсолютно никакого желания, я решил опубликовать исходники.

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

Если кто-то усовершенствует приведенный код либо напишет альтернативный аналогичной функциональности, то советую отписаться на форуме:
http://forums.overclockers.ru/viewtopic.php?t=146371

-------------------------------------------------------------------

s2f_001.asm - исходники PCI ROM-модуля

Порядок действий:

  1. Откомпилировать в TurboAssembler'е.
  2. В полученном .COM файле выдрать весь код (512 bytes начиная с сигнатуры "55h AAh").
  3. Подсчитать контрольную сумму и внести ее в кусок, полученный в п.2 (можно закинуть в последний байт).
  4. Дополнить полученный кусок нулями, увеличив таким образом его размер до размера флэшки.
  5. Залить полученный в п.4 бинарник во флэшку PCI-контроллера (если флэшер позволит).

NB1:

При необходимости правятся идентификаторы (VEN_ID/DEV_ID) под тот PCI контроллер, который есть в наличии.
Можно в исходнике, а можно прямо в полученном бинарнике (не забудьте пересчитать контрольную сумму!).
Напомню, что идентификаторы можно подсмотреть, например, в WpcrEdit.

NB2:

В s2f_001.asm используется условная компиляция.
Так что после внесения изменений советую поиграться с опциями TSR и EXE.
Последний вариант удобно отлаживать в Turbo Debugger'е.

-------------------------------------------------------------------


<PAS> - папка, содержащая исходники утилит для считывания сохраненного образа экрана с дискеты и перевода его в графический файл формата BMP.

Компилировалось в Turbo Pascal'е.
Можно попробовать запихнуть все это хозяйство в один файл ради удобства.
И попутно "портировать" все это под Delphi/VirtualPascal,
но возможно придется немного повозиться с процедурой чтения сектора с дискеты.

-=-
(C) xKVtor ;)

_________________
ПС: [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.


 

Большой респект автору! :beer:
Есть несколько разных материнок с разными БИОСами, без интегрированного флоппи-контроллера. Для них нужно написать руководства где описать каждый экран БИОС и все его опции. Нужно много скриншотов. :insane:
Пробовал внедрить свой код в MBR, перехватить прерывание клавиатуры и запустить БИОС снова (jmp ffff:0000/f000:0fff0h
и int19h). В первом случае моего резидента убили, во втором выжил Но не смог войти в BIOS Setup.
Где можно найти информацию о "теплой" перезагрузке и методам выживания, либо как найти точку входа в BIOS Setup?
Спасибо


 

I try make option PCI ROM (Realtek Ethernet NIC) for AWARD BIOS but s2f_3112.bin is to big (128KB) for my motherboard flashrom. I try decrease file to 512 bytes (200h). After that WinHex Compute hash 8-bit 00 (OK). I try set new PCI device and vendor with BROMCFG.EXE tool from this RayeR page (romos). BROMCFG view OK setting:
Код:
BROMCFG 1.01 - BOOTROM Configuration for ROMOS - http://www.fitzenreiter.de
Compiled by GCC 4.0.1 at 20:55:18, Mar 18 2006                             
                                                                           
Loading 200.bin (512 bytes)...                                             
                                                                           
Checking ROM image                                                         
                                                                           
ROM signature: Ok! (55AAh)                                                 
ROM size: 512 Bytes                                                       
ROM checksum: Ok!                                                         
Code begin: JMP 00A9h                                                     
Pointer to PCIR: 0020h $PnP: 0000h                                         
                                                                           
Current configuration:                                                     
PCIR Vendor ID: 1095h, Device ID: 3112h, Class: 000401h                   
No PCIR Header (ISA-ROM)                                                   
                                                                           
Change configuration (Y/N)?y                                               
                                                                           
ISA ROM or PCI ROM (I/P)?p                                                 
                                                                           
Now you need to enter the Vendor ID, Device ID and Class of the PCI Device.
This should match the real PCI device present in your system!             
                                                                           
Vendor ID? (eg. 10EC for Realtek): 10ec                                   
                                                                           
Device ID? (eg. 8029): 8139                                               
                                                                           
Class? (eg. 020000 for Ethernet): 020000                                   
                                                                           
Calculating new checksum (LastByte chksum)...                             
                                                                           
Writing 200.bin...OK!

but after change setting PCI and class, next open print ROM signature error:
Код:
BROMCFG 1.01 - BOOTROM Configuration for ROMOS - http://www.fitzenreiter.de
Compiled by GCC 4.0.1 at 20:55:18, Mar 18 2006                             
                                                                           
Loading 200.bin (512 bytes)...                                             
                                                                           
Checking ROM image                                                         
                                                                           
ROM signature: Error


 

OK, a add $PnP header to assembler and now BROMCFG working OK:
Код
Код:
; dodana procedura INIT
; dodana struktura PCIR
; dodane dyrektywy kompilacji warunkowej IF/IFE
; obraz pamieci ekranu od adresu B800h (strona zerowa)
; zapisywany na dyskietce w adresie:
; dysk      # =00h {00h..7Fh => FDD; 80h..FFh => HDD}
; glowica   # =00h { 0.. 1}
; cylinder  # =00h {00..79}
; sektor    # =10h {01..18}
; informacja o palecie barw i zestawie znakow nie jest zapisywana,
; w 99 przypadkach na 100 nie jest to wymagane

.186

   ROM_SIZE   equ   1

   ROM   equ   1 ; POST: start -> wyjscie -> zapisanie ekranu po nacisnieciu PRTSCR
   TSR   equ   0 ; DOS: start -> wyjscie -> zapisanie ekranu po nacisnieciu PRTSCR
   EXE   equ   0 ; DOS: start -> zapisanie ekranu -> wyjscie


ROM_CODE        segment use16

CodeSTART:

IFE ROM
        assume CS:ROM_CODE , DS:ROM_CODE , SS:stk

ELSE
        assume CS:ROM_CODE , DS:ROM_CODE
   
         db      55h     ; pierwszy bajt sygnatury
         db      0AAh    ; drugi bajt sygnatury
         db      1       ; ilosc zajetych sektorow po 512 bajtow
         jmp     INIT    ; przejscie do procedury inicjalizacji
   space1      db   (12h) dup (00h)
   PCIR_PTR   dw   20h   ; wskaznik do struktury PCIR
   PNP_PTR      dw   38h   ; wskaznik do sygnatury PNP
   space2      db   (04h) dup (00h)
   PCIR_SIG   db   'PCIR'  ; sygnatura PCIR
   VEN_ID      dw   10ECh   ; VENDOR_ID: realtec
   DEV_ID      dw   8139h   ; DEVICE_ID: rtl8139
   reserved1   dw   0000h
   STRUCT_LEN   dw   0018h   ; dlugosc struktury PCIR (w bajtach)
   STRUCT_VER   db   00h     ; wersja struktury PCIR (aktualnie = 0)
   CLASS_CODE   db   02h   ;
         db   00h   ;
         db   00h   ;
   IMG_LEN      dw   01h
   CODE_DATA_VER   dw   00h
   CODE_TYPE   db   00h   ; 0->x86
   LAST_IMG   db   01h   ; last=1 no=0
   reserved2   dw   0000h

   PNP_SIG      db   '$PnP'   ; sygnatura PnP
   PNP_REV      db   01h   ; rewizja
   PNP_SIZE   db   02h   ; długosc struktury PNP
         dw   0000h   ; offset nastepnej strktury
         db   00h   ; reserved
         db   65h   ; suma kontrolna sygnatury
         dd   00h   ; identyfikator urzadzenia
         dw   00h   ; wskaznik producenta
         dw   00h   ; wskaznik nazwy produktu
         db   02h   ; podstawowa klasa urzadzenia
         db   00h   ; podklasa
         db   00h   ; interfejs programowania
         db   64h   ; wskazniki urzadzenia
         dw   00h   ; BCV
         dw   00h   ; DV
         dw   00h   ; BEP
         dw   00h   ; reserved
         dw   00h   ; SRIV

ENDIF   ;EnfIFrom

;---------------------------------------
; Nowa obsluga przerwania (3 procedury)
;---------------------------------------

;---------------------------------------
; Zapisanie tymczasowego bufora na dysk
;---------------------------------------
SaveStkSect PROC   ;BX<- porzadkowy numer sektora [0..7]
         ;AX<- wskaznik dla tymczasowego sektora w stosie
    push ES
    pusha

    mov SI,9   ; liczba prob

@@Repeat:      ; gdzie dane zostana zapisane:

    mov ch,0   ; {pierwszy cylinder # =00..79}
    mov cl,10  ; {pierwszy sektor  # =01..18}
add cl,BL
    mov dh,0   ; {pierwsza glowica    # = 0..1 }
    mov dl,00h ; {drive #: 00h..7Fh => floppy; 80h..FFh => HDD}
               ; {"A:"=0}

    mov bx,AX  ; {ES:BX poczatek bufora} wskaznik sektora w stosie

    mov ax,SS  ; ES->SS {wszystko pozniej przywrocone przez POP}
    mov es,ax  ;

    mov al, 1  ; 8   ;liczba zapisywanych sektorow:
               ; {dlugosc bufora w sektorach: 80*25*2 div 512=8}

    mov ah,03  ; {funkcja 03h z int13: zapis sektorow z pamieci na dysk}
    int 13h

    jnc @@End  ; jesli nie wystapil blad (CF=0), to koniec ...

    mov AH,0   ; ... w przeciwnym wypadku inicjalizacja podysystemu dyskowego
    mov DL,0
    int 13h
    dec SI     ;

    jnz @@Repeat

@@End:

    popa
    pop ES

    ret
SaveStkSect endp

;===========================================================================
; Kopiowanie sektora (512 bajtow) do bufora tymczasowego polozonego w stosie
;---------------------------------------------------------------------------
copy_sect_2stk proc   ;ax<-SP  bx<-src seg

   push DS      ;save DS ES SI DI CX
   push ES
   push SI
   push DI
   push CX

   mov DS,BX   ;srcSEG->DS
   mov SI,0   ;    00->SI

   mov CX,SS   ;SS->ES
   mov ES,CX   ;
   mov DI,AX   ;SP->DI

   mov CX,200h   ;200h=512
   CLD      ;/ STD
   rep movsb   ;DS:SI >=DF=> ES:DI   

   pop CX      ;restore CX DI SI ES DS
   pop DI
   pop SI
   pop ES
   pop DS

   ret
copy_sect_2stk endp

;=========================================
do_SHOT       proc
        push   AX
   push   BX

;tworzenie tymczasowego bufora w stosie:
;push_512   proc   ;przeznaczenie 512 bajtow miejsca w stosie
   mov   AX,SP   ;upewnienie sie czy SP>200h
   sub   AX,200h
   mov   SP,AX   ;w AX jest wskaznik wykorzystywanego sektora
              ;nalezy wyjasnic, co wskazuje SP: ostatnia liczba w stosie
              ;lub miejsce, gdzie bedzie nastepna liczba ???
;push_512   endp

   mov CX,8
@@PageLoop:
   mov bx,8
   sub bx,cx
   shl bx,5   ;=bx*20:0h ? liczba akapitow od poczatku B800h
   add BX,0B800h

   call   copy_sect_2stk   ; (ax<-SP  bx<-src seg)

   mov BX,8
   sub BX,cx

   call   SaveStkSect   ;BX<- porzadkowy numer sektora [0..7]
            ;AX<- wskaznik tymczasowego bufora w stosie
   loop   @@PageLoop

;usuniecie tymczasowego bufora w stosie:
;pop_512      proc   ;w AX jest wskaznik wykorzystywanego sektora
   mov   AX,SP           ;upewnienie sie czy SP=AX
   add   AX,200h
   mov   SP,AX
;pop_512      endp

   pop   BX
   pop   AX
;----------------------

IF EXE
        mov AX,4C00h   ;exit DOS
        int 21h
ELSE
   IRET   ; powrot z procedury przerwania
ENDIF

do_SHOT       endp
;-------------------------------------------------


vect_num        equ     05h   ; numer przechwytywanego przerwania: 05h wydruk ekranu
;========================================================================================
; zmiana obslugi 5-go przerwania na swoj

; org 200h - aby odciac wszystko co za jednym segmentem
;          - trzeba obliczyc sume kontrolna 2 razy, poki nie uzyjemy.

INIT    PROC
        pusha   ; umieszczenie rejestrow w stosie w nastepujacej kolejnosci:
      ; ax, cx, dx, bx, sp, bp, si, di

        mov     BX, offset do_SHOT   ; wskaznik nowej obslugi przerwania
        mov     DX, CS         ; seg    do_SHOT

        mov     AX, 0
        push    DS
        mov     DS, AX

        mov     SI, vect_num*4
        mov word ptr DS:[SI]  , BX
        mov word ptr DS:[SI+2], DX

        pop DS
        popa

;----------------------
IF TSR
   mov DX,200h   ;stay TSR
   int 27h
ENDIF

IF ROM
   retF   ;wywolanie procedury z BIOS'u
ENDIF

INIT    endp

CodeEND:
        DB (ROM_SIZE*512-(OFFSET CodeEND-OFFSET CodeSTART)-1) DUP (00H)

ChkSum   db 00h   ;bajt, ustawiajacy sume kontrolna modulu w pamieci na zero;
      ;nalezy ja odczytac ponownie po komilacji

ROM_CODE        ends
;==========================================================================================

IFE ROM
stk     segment stack
        db 4096 dup (0)
stk     ends
ENDIF

IF EXE
        end  do_SHOT
ELSE
        end     INIT
ENDIF

Tested with 4 mobo:
MS VirtualPC 2007 (AMI BIOS - replace resource 13502) - working OK no problem
FIC-PA2011 - not working ISA & PCI option ROM
Clayton CVOAT217 - working ISA & PCI but only at display PCI device listing and DOS
Soltek SL-75DRV4 - working ISA & PCI but only at display PCI device listing and DOS
Read my topic in this forum.

#77
#77


Показать сообщения за:  Поле сортировки  
Форум закрыт Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 86 • Страница 5 из 5<  1  2  3  4  5
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan