я тоже никогда инженерными паролями не заморачивался ;)
но
14 мая 2004 - 16:36 Unknown BIOS romby team >>509 >> 2.01
я тоже никогда инженерными паролями не заморачивался
но вот что удалось раскопать за последние полчаса
все написанное относится исключительно к award6
1. инженерного пароля у конкретного биоса может и не быть - нет кода проверки (определяется через директиву условного ассемблирования ifdef Support_AWARD_Default_Password) - изменять modbin'ном его бесполезно - как определить наличие - см. предположение в п.2
2. хеш мастер-пароля хранится в распакованном образе гланого модуля биос по смещению 1EC60 - всего 8 байт - если они первоначально раны 0 - большая вероятность что в коде биос не определен Support_AWARD_Default_Password и соответственно нет мастер-пароля
3. как найти хеш? смотрим процедуру сравнения введенного пароля с хешом мастер-пароля
Compare_Password Proc Near
push bx
push ds
;R56 push SEG DGROUP
push word ptr cs:[X_FCODE_VAL] ;R56
pop ds
mov bx, offset MASTER_PASS_HASH
я тоже никогда инженерными паролями не заморачивался
но вот что удалось раскопать за последние полчаса
все написанное относится исключительно к award6
1. инженерного пароля у конкретного биоса может и не быть - нет кода проверки (определяется через директиву условного ассемблирования ifdef Support_AWARD_Default_Password) - изменять modbin'ном его бесполезно - как определить наличие - см. предположение в п.2
2. хеш мастер-пароля хранится в распакованном образе гланого модуля биос по смещению 1EC60 - всего 8 байт - если они первоначально раны 0 - большая вероятность что в коде биос не определен Support_AWARD_Default_Password и соответственно нет мастер-пароля
3. как найти хеш? смотрим процедуру сравнения введенного пароля с хешом мастер-пароля
Compare_Password Proc Near
push bx
push ds
;R56 push SEG DGROUP
push word ptr cs:[X_FCODE_VAL] ;R56
pop ds
mov bx, offset MASTER_PASS_HASH
;---------------------------------------------------------------------------
;output : ZF : input password = MASTER_PASS_HASH
;---------------------------------------------------------------------------
mov dl, 1 ;assume not match
xor si, si ;index password char 0
CompPass_Loop:
movzx cx, byte ptr KEYIN_BUF[bp+si] ;compare same with keyin?
cmp byte ptr ds:[si+bx], 0 ;Is last char?
jne @F ;Yes, skip
or si, si
jz CompPass_Over
or cl, cl
jnz CompPass_Over
jmp CompPass_Match
@@:
shl cx, 3 ;hash password
shl ch, 3 ; :
ror cl, 3 ; :
ror cx, 3 ; :
rol cl, 3 ; :
or cl, ch ;-------
cmp cl, ds:[si+bx];compare same with keyin?
jne CompPass_Over ;No, skip
inc si ;next char
cmp si, 8 ;over 8 char?
jb CompPass_Loop ;No, continue
CompPass_Match:
xor dl, dl ;Set match flag
CompPass_Over:
or dl, dl
pop ds
pop bx
ret
Compare_Password Endp