Member
Статус: Не в сети Регистрация: 07.12.2003 Откуда: Mensk
Arioch писал(а):
Korj: Чтоб пережить перезагрузку, надо или её эмулировать, или трассировать, или ещё чёрт знает как, вплоть до подмены shadow.
По-твоему именно этим вирусы и занимались ? И куда в них влезало все это ?
По всему видно, что к asm-у ты отношения не имеешь. Ты будешь удивлён, но не всегда программам требовалось библиотек на пару десятков MB! Данный функционал вполне мог поместиться в 64к. Именно к тем временам и относились фразы ни то Лозинского ни то Данилова ни то всех вообще, что можно написать вирус, который ниодному антивирусу не по зубам, но для этого надо обладать знаниями и опытом, вместе с которыми приходит и понимание, что нафиг это всё не нужно... хотя бы просто в виде "всех убью, один останусь" -- для индустриального шпионажа всё что угодно можно сделать, и кое-что делали и делают... Про то, что тёплая перезагрузка не спасает от некоторых вирусов писалось во всех руководствах к антивирусам.
Цитата:
Кстати, как ты предлагаешь трассировать hardware reset (не знаю, как это делают BIOSы, проще всего отыграть нажатие кнопки ReSet. М.б. у них есть и более изысканные методы.
Что-то ты такое умное говоришь, что у меня ума не хватает тебя понять... Зачем трассировать 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ГБ памяти.. а простейший скрин снять не может. Всё это более чем странно..
И вот, спустя год после опубликования статьи о программном комплексе для сохранения текстового экрана сетапа биоса в графический файл (подробности см. на http://people.overclockers.ru/xKVtor/record21), поняв, что заниматься далее этим проектом у меня нет абсолютно никакого желания, я решил опубликовать исходники.
Это описание пишу по памяти, так что вполне допускаю, что забыл упомянуть о чем-то важном. Прошу прощения за то, что исходный код сумбурный и бестолковый, но не обессудьте - это лучше, чем ничего.
В полученном .COM файле выдрать весь код (512 bytes начиная с сигнатуры "55h AAh").
Подсчитать контрольную сумму и внести ее в кусок, полученный в п.2 (можно закинуть в последний байт).
Дополнить полученный кусок нулями, увеличив таким образом его размер до размера флэшки.
Залить полученный в п.4 бинарник во флэшку PCI-контроллера (если флэшер позволит).
NB1:
При необходимости правятся идентификаторы (VEN_ID/DEV_ID) под тот PCI контроллер, который есть в наличии. Можно в исходнике, а можно прямо в полученном бинарнике (не забудьте пересчитать контрольную сумму!). Напомню, что идентификаторы можно подсмотреть, например, в WpcrEdit.
NB2:
В s2f_001.asm используется условная компиляция. Так что после внесения изменений советую поиграться с опциями TSR и EXE. Последний вариант удобно отлаживать в Turbo Debugger'е.
<PAS> - папка, содержащая исходники утилит для считывания сохраненного образа экрана с дискеты и перевода его в графический файл формата BMP.
Компилировалось в Turbo Pascal'е. Можно попробовать запихнуть все это хозяйство в один файл ради удобства. И попутно "портировать" все это под Delphi/VirtualPascal, но возможно придется немного повозиться с процедурой чтения сектора с дискеты.
Большой респект автору! Есть несколько разных материнок с разными БИОСами, без интегрированного флоппи-контроллера. Для них нужно написать руководства где описать каждый экран БИОС и все его опции. Нужно много скриншотов. Пробовал внедрить свой код в 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
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
;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
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.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения