Никак не могу победить сабж.
Мать: GigaByte GA6OMM7E
Версия БИОС: Award Modular BIOS v6.00PG
Что делаю:
1. Сливаю прошивальщиком биос в файл.
2. В модбине изменяю Security Default Password на свой.
3. Прогоняю БиосПатчер-ом
4. Зашиваю FLASH840.EXE - шником
Результат:
AWARD_SW идет на ура....
Думал, что модбин не сохраняет результат. Изменил BIOS Message - сохранилось... А пароль не сохраняется...
Пробовал модбины:
modbin6.1.00.37, modbin6.1.00.37 - оба при попытке сохранить вываливаются с ошибкой.
modbin6.2.00.00beta - сохраняет, но рез-ат см. выше...
Посему вариантов три:
1) Вы как-то неправильно сохраняете изменение прошивки Модбином;
2) Вы шьете с ключами (в т.ч. дефолтными, и это может быть недокументировано) для очистки паролей;
3) "Инженерный" пароль нельзя выкинуть из прошивки обычными средствами...
Проверяйте... :roll:
хмм... а есть несколько способов сохранить кроме File->Save?
Шью так: flash840.exe bak.bin /i
можно не выкидывать, просто изменить его на что-то свое или какой либо мусор... Посему возникает ряд вопросов: а где он располагается в прошивке? И в каком виде он лежит (открытый, что маловероятно или же хеш) если второе, то как шифруется? вот.
2) Если мне память не изменяет, flash840 сделан на базе amiflash'а - откройте его в графическом режиме и посмотрите установки ключей (они сохраняются, поэтому ключ сноса/восстановления паролей мог остаться с каких-то затертых времен)...
3) Данным вопросом никогда не заморачивался; кто точно должен был на это натыкаться по ходу работы, так это StarGaz0r, спросите у него...
Там нечто типа CRC, посчитанного кривым методом, пароля хранится. При каждом вводе пароля юзером CRC(или хэш) считается заново и сравнивается со значением в прошивке/флешке.
Кстати, это одна из причин существования нескольких "инженерных" паролей, т.к. одному CRC соотвествует несколько паролей :)
но вот что удалось раскопать за последние полчаса ;)
все написанное относится исключительно к 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