Whatis.Ru

Информация о компьютерах доступным языком
Назад на сайт

Вы не зашли.


#1 25-12-2010 13:27:11

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Хачим BIOS

AWARD



Если ЦП - это сердце компьютера, то BIOS - его душа!!! Прошивка определяет всё... Возможности     системы можно значительно расширить, если внедрить в BIOS свой собственный модуль, делающий что-то полезное, например, разгоняющий машину до "бешенных" скоростей. Для наглядности я взял свою прошиву BIOS (P4M8M10E.bin), на которой и буду проводить все эксперементы...

Как устроен BIOS???

...он состоит из двух главных частей:

1) Основная часть кода.
Главный код состоит из нескольких «модулей» и хранится в запакованном виде, как архив-LHA. Для просмотра и упаковки изменённых (в процессе HACK'а) модулей, рекомендую использовать утилиту CBROM. После запуска утилиты вводим название прошивки и получаем список модулей и вес каждого из них.

2) BootBlock (BB).
ВВ - инициализирует регистры чипсета и распаковывает главную часть в ОЗУ для последующего исполнения. При несовпадении контрольной суммы биоса (Bios check-summ error), бут-блок запускает программу аварийного восстановления с флопа, в виде запуска программы awdflash.exe вшитого в прошивку!
Boot-block находится в прошивке в незапакованном виде, ведь кто-то должен распаковывать архивы-LHA, в которых находятся модули!!!

Запустим CBROM и введём имя прошивки... Ух ты, сколько всего!!!

http://radikal.ru/F/s50.radikal.ru/i130/1012/13/8ade5b54d9b9.gif

- p4m8m10e.bin – главная часть (всегда размером 128k). Именно в ней происходит вся инициализация компьютера, в ней же подпрограмма BIOS Setup.

- awardext.rom – это "расширение" основного кода BIOS, которое инициализирует оборудование на финальной стадии загрузки (детектирует харды и приводы, выводит таблицу PnP/PCI устройств и т.д.). В модуле awardeyt.rom содержится его продолжение.

- ACPITBL.BIN – здесь содержится таблица ACPI (интерфейс питания и конфигуации). ACPI - это не простой менеджер питания, а еще и главная шина, управляющая всеми устройствами и распределяющая системные ресурсы (прерывания). Модификация этой таблицы открывает большие возможности, однако это тема для отдельного разговора.

- AwardBmp.bmp – «картинка» Energy Star. Во времена динозавров производители использовали картинки формата *.epa, теперь-же - это простой BMP с размерами 136 на 84px, и весом не более 1742 байт. Меняй на что-хош и любуйся! Можно использовать спец-утилиту для замены лого - BMPtoEPA.

- _EN_CODE.BIN - набор текстовых ASCIIZ-строк, используемых BIOS'ом. Вот где можно развернуться начинающим хакерам!!!

- _ITEM.BIN - набор микрокодов для поддерживаемых BIOS'ом моделей процессоров. Микрокоды предназначены для исправления ошибок, допущенных при разработке процев. При желании можно скачать свежую версию микрокодов с сайта производителя и залить их в BIOS.

- P4M1623.ROM - как видно из названия (VGA ROM[1]), это поддержка интегрированного видео (драва и всё прочее). Если интегрированное видео отсутствует, то этот модуль не включают в прошивку.

- 8233LAN.bin - как и предыдущее, только для встроенной сети...

- awdflash.exe - вшитая утилита для автоматического восстановления при сбое...

В самой нижней строке имеется инфа о поддержи различных процессоров моим биосом, в которой имеется всего одна надпись SLOT2 2E 0F29... а мне больше и не надо, т.к. не планирую менять проц на этой машине в ближайшее время.

Если Вы решили заняться апдгейдом и поменяли процессор на более мощный, а система упорно не видит его, то есть резон залить в прошивку обновления микрокодов с сайта производителя! Вполне возможно, что после этого биос подружится с процом...

Вот, вобщем-то и всё содержимое BIOS'а. Названия модулей могут меняться производителем, но по названию всегда можно догадаться о его функции.

Как видно, просто редактировать биос нельзя, т.к. это архив. Если мы хотим что-то изменить, сначала надо распаковать нужный модуль, исправить что нужно, и потом запаковать обратно!!!

Проблеммы могут возникнуть с контрольными суммами изменённых модулей, поэтому при изменении содержимого нужно строго придерживаться оригинальных размеров данных.


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#2 25-12-2010 13:32:06

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Как будем хачить???

Для экспериментов нам потребуется материнская плата с FLASH-BIOS'ом на борту.

Внимание!!!
Чтобы не запороть оригинальный BIOS, желательно найти идентичный чип (снять с дохлой материнки) и проводить эксперементы на нём, что позволит при неудачных попытках восстановить работоспособность, путём замены на оригинал.

Приведу описание процесса редактирования:

1) Дампим свою или скачиваем с сайта производителя свежую версию прошивки.

2) Выключаем комп и вынимаем м/с BIOS'а из панельки. Нам нужно закрепить на м/с "рычаг", за который будем тянуть, чтоб вытащить её из (!)включённой матери. Для этого обвязываем чип нитками между выводами, оставляя сверху небольшое кольцо. Теперь, если взять за это колечко, м/с должна качаться как на качелях...

3) Вставляем (не плотно) обвязанный нитками чип на место и включаем машину. После запуска системы не выключая компьютера(!) аккуратно тянем за нитки и вынимаем оригинальный чип! Машина продолжает работать, т.к. BIOS считывается только при загрузки системы.

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

Для более продвинутых есть ещё один способ - повесить дополнительную м/с BIOS'а, по принципу Dual-Bios. В схему материнской платы вносятся небольшие изменения, в виде установки тумблера по питанию, 2-х эмиттерных повторителей и непосредственно самой Flash-ROM. Это позволяет нам создать Dual-Bios своими руками, один из чипов которого мы можем использовать для эксперементов:

http://radikal.ru/F/s012.radikal.ru/i320/1012/2d/23d3808fc84f.gif


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#3 25-12-2010 16:50:27

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Итак - инструментарий:

1) Утилита CBROM (только для AWARD, висит в скрепке в предыдущем посте). Она позволяет нам просматривать содержимое прошивки и упаковывать хакнутые модули обратно с подсчётом контрольной суммы (CRC).

2) Дизассемблер (конечно-же IDA). На начальных этапах может и непонадобится, т.к. с первого раза несоветую изменять программый код "критических" модулей,...достаточно будет изменить логотип или вывести надпись на экран. В противном случае, можете повредить материнку, к примеру, задрав все напряжения питания узлов свыше нормы!!!

3) Любой HEX-редактор (я использую WinHex). Он нам понадобиться для просмотра и редактирования программного кода модулей.

4) Тотал-CMD для работы с архивами LHA.

С инструментами - разобрались! Едем дальше...

Как было сказано выше, AWARD-BIOS состоит из модулей, запакованных LHA-архиватором. Так как-же найти начало и конец архива в прошивке, чтоб отделить один модуль от другого??? Оказалось, что очень просто... - по его сигнатуре!!! На форуме ROM.BY описан подобный метод. Применим его...

Архив-LHA имеет сигнатуру "LH5", поэтому всё что нам нужно - это открыть файл-прошивки-BIOS в WinHex и запустить поиск (Ctrl+F), где в качестве ключевых слов забить - "LH5". Оп-па, есть такой...

http://radikal.ru/F/s52.radikal.ru/i135/1012/c4/998a7d3ed036.gif

...отделяем от первого символа три знака влево - это и будет начало архива!!! За сигнатурой следует имя архива, указанное в виде ASCII-строк (p4m8m10e.bin). Записываем адрес начала архива (00010000) и продолжаем поиск, для чего жмём в WinHex клавишу [F3].

http://radikal.ru/F/i009.radikal.ru/1012/5f/0ee01f292c76.gif

..нашёлся ещё один по адресу (00023830 - awardext.rom). Архивы идут подряд, один за другим. Значит, где начинается второй, там заканчивается первый! Выделяем и копируем в буфер область с 10000 до 2382E, и создаём новый файл из буфера [Ctrl+Shift+N]. Далее жмём "Сохранить как..", и выбираем расширение *.LHA.

Теперь осталось распаковать архив в "тотале", и перед нами содержимое архива, которое мы можем править...

Остальные модули распаковываются так-же..., но как уже говорилось, Boot-Block лежит в незапакованном виде и находится он в самом конце прошивки. Между концом (не в привычном нам понимании) последнего архива и началом бут-блокa имеется свободное пространство в виде заполненных 00 или FF. В моей прошивке бут-блок начинается с адреса 7E000 и заканчивается 7FFFF. Как видите, всё очень просто!!!

http://radikal.ru/F/s43.radikal.ru/i102/1012/ef/3a54ac4e9da8.gif


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#4 25-12-2010 17:28:33

Vaninech
Selachoidei
Откуда: Новосиб
Зарегистрирован: 23-08-2006
Сообщений: 1430

Re: Хачим BIOS

афигенные познания...

мне это нах ненада, однако читать интересно.
продолжай эксперимент!!! жду продолжения и реальных результатов вмешательства!


http://nick-name.ru/forum/vaninech.gif
http://nick-name.ru/forum/S%EEld%E0f%EEn.gif

Неактивен

#5 25-12-2010 19:38:58

Hydrogen
«¤Version 1.1-stable¤»
Откуда: /dev/random
Зарегистрирован: 19-07-2006
Сообщений: 4372
Вебсайт

Re: Хачим BIOS

бэлин румит слов нет smile3

надо железяки доставать срочнА!


http://nick-name.ru/forum/%CDydrogen.gif

Неактивен

#6 25-12-2010 20:02:59

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

...на старой своей машине когда-то испытывал эту технологию, и менял картинки ставил пароль на загрузку, который кстати не сбрасывается обычным путём (батарейки, мастер-пароли), только пропатчив биос. Конкретная защита!!! aggressive

Если интересна эта тема, попробую и на этом компе...., только вот бивис у меня не стандартный (китайский), поэтому незнаю получится или нет. ...на днях отпишусь!


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#7 25-12-2010 20:05:11

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Vaninech написал:

мне это нах ненада, однако читать интересно.

...заниматься этим - ещё интересней!!! ...особенно когда в итоге положительный результат! d


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#8 26-12-2010 09:26:48

гвоздик
фУлиган
Откуда: Донецк, ДНР
Зарегистрирован: 19-07-2006
Сообщений: 2263
Вебсайт

Re: Хачим BIOS

А когда отрицательный и всё умерло, наверное, ещё интересней?!!podmig


http://nick-name.ru/forum5t3/%E3%E2%EE%E7%E4%E8%EA.gif

Неактивен

#9 26-12-2010 12:42:54

Hydrogen
«¤Version 1.1-stable¤»
Откуда: /dev/random
Зарегистрирован: 19-07-2006
Сообщений: 4372
Вебсайт

Re: Хачим BIOS

ну для этого бэкапишься всегда

кстати бивис программатором можно перепрошить (если совсем убил, хотя методом rumit'a можно перешить практический любой бивис НО нужна похожая мать мать)


Кстати в тему - захотелось собрать суперпупер универсальный программатор, есть рекомендации по схемам?


пошел гуглить d


http://nick-name.ru/forum/%CDydrogen.gif

Неактивен

#10 27-12-2010 00:22:24

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Прошивка флэш...

Обычно для BIOS'а применяют два вида флэш-памяти:

http://radikal.ru/F/s002.radikal.ru/i200/1012/1f/43b0ea301e10.gif

"Обычная" флэшка имеет следующие сигналы:

- 8 линий данных DQ0-DQ7
- 17-18 линий адреса A00-A16/17 (в зависимости от объёма: 1Mbit - 17, 2Mbit - 18)
- CE# (ChipEnable) - "чипселект" (разрешение на работу с микросхемой, вкл/выкл)
- OE# (OutputEnable) - RE (возможность считать байт данных)
- WE# (WriteEnable) - WE (возможность записать байт данных)

В адресном пространстве флэш-BIOS занимает самые верхние адреса памяти E0000-FFFFF. После включения компьютера и окончании сигнала RESET#, процессор выполняет свою первую команду по адресу F000-FFF0.

После первичной инициализации происходит проверка контрольных сумм отдельных модулей (архивов), и кода биоса в целом. Если CRC нарушена, то модуль нераспаковывается, и сразу читается бутблок, который "пинает" флоп и пытается запустить прошивальщик.

...выходит, чтоб запустить бутблок, можно умышленно испортить CRC!!!

Оказывается, ломать тоже иногда полезно!!! d Сбить контрольную сумму "вручную", можно закоротив адресные линии флэш, "выше" бутблочных. Обычно "сажают коротыш" на рядом расположенные A15 и A16 (pin 2,3), в результате чего не читается часть данных, и следовательно нарушается контрольная сумма.

Если вам не понятно, зачем это может быть нужно, то когда столкнётесь с запаянной флэшкой, в которую залили похожую прошивку - поймёте!!!

После проверки CRC, происходит копирование содержимого флэшки в ОЗУ, а сама флэш вырубается южным мостом. Именно поэтому можно вытаскивать флэшку сразу-же, как только увидим строчку "Starting Windows/DOS/linux"...

Если у Вашего BIOS нарушен бутблок, то здесь уже мы бессильны и придётся прошивать биос на программаторе или хот-свапом!

Прошивочный "комплекс".

Если вы решили "плотно" заняться прошивкой биоса, могу дать несколько рекомендаций!!! Некоторые  советуют использовать именно программатор, хотя я так не считаю и даже не советую. Самый крутой метод - хот-свап!!!

Для перешивки 90% флэш-биос, вам понадобятся всего-лишь старенькая материнка с флопом и БП. На ней должен быть установлен 2Мбит-ный флэш с разъёмом DIP32, что позволит прошивать и 1, и 2-х мегабитные флэшки! Не нужно искать "навороченные" платы, нужно строго наоборот - чем примитивнее плата, тем  лучший получится из неё "программатор".

Для прошивки PLCC32-микрух используется переходник, сделанный из старой неисправной платы с PLCC32 колодкой закреплённой на куске текстолита. В текстолите сверлятся отверстия для ножек, которые соединяются согласно цоколёвки с новым разъёмом.

http://radikal.ru/F/s014.radikal.ru/i326/1012/3d/7af035e165a7.gif


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#11 28-12-2010 00:40:24

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Добавляем свой модуль в прошивку

Теперь, когда мы знаем структуру BIOS'а, попробуем добавить к уже существующим, свой модуль. Проще всего добавить ISA-ROM модуль, который при загрузке компьютера будет выводить приветствие на экран, и ждать ввода пароля (ENTER - начать ввод заново)... что-то вроде дополнительной парольной защиты, которую без выдирания BIOS'а никто не взломает!

Обычно такие модули используются для управления интегрированными ISA-контроллерами. Разумеется, что никакого ISA-контроллера у нас нет, а ISA-слоты давно исчезли,...но ISA-модули по-прежнему поддерживаются BIOS'ом.

По идеи, ISA-модуль загружается после того, как отработает главный модуль -p4m8m10e.bin, что позволяет ему получить полный доступ ко всему оборудованию, в том числе и PCI-шине. При желании, можно добавить и PCI-модуль, только это слишком-уж геморно!!!. Потребуется подделать идентификатор PCI-устройства в заголовке модуля так, чтобы он совпадал с идентификатором реально существующего устройства, подобно модулю 8233LAN.BIN в эксперементальной прошивке.

ISA модуль представляет собой бинарный файл размером, кратным 200h байт (200h=512d).
Часть оборудования (ОЗУ, клавиатура, видеокарта) к моменту его вызова уже инициализирована, а часть (жесткие диски, например) - еще нет. Этим модулем можно смело дёргать прерывания INT 10h (видео) и INT 16h (клава), а вот с INT 13h (диски) - ничё не получится!!!

Структура модуля

В начале расположен стандартный, загрузочный 55 AA-заголовок, а в последнем байте хранится контрольная сумма (CRC). Простейший ISA-ROM модуль, написанный на FASM'е, выглядит так... (копируем код в блокнот и сохраняем как *.ASM).

Программа выводит текст на экран, и ждёт набора с клавиатуры заданных символов, ...ENTER мотает цикл:

; ISAOEM.ASM
use16                   ; ISA-модуль работает в 16-разрядном сегменте
DB        55h, 0Ah      ; загрузочная сигнатура
DB        01h           ; размер блока в 200h байтовых секторах
jmp       x_code        ; передача управления нашему коду

x_code:
        ; подготовка регистров
        ; --------------------
        MOV DX, 101Dh   ; куда выводить инфу (DH - ось Y, DL - ось X)
        MOV SI, text    ; что выводить
        XOR BX,BX       ; начальный цвет символов - 1
        MOV CX,1        ; выводим по одному символу

        ; вывод строки в цвете
        ; --------------------
print_string:
        MOV AH, 02h     ; функция управления курсором
        INT 10h         ; дёргаем прерывание, позиционируем курсор
        INC DL          ; перемещаемся на следующую позицию

        LODSB           ; загружаем очередной символ
        TEST AL,AL      ; конец строки???
        JZ input        ; если конец, то выходим

        MOV AH, 09h     ; функция печати символа
        INC BL          ; перебираем все цвета
        INT 10h         ; печатаем символ
        JMP print_string ;мотаем цикл

input:  ; ожидание ввода пароля
        ; ---------------------
        XOR DX,DX        ; контрольная сумма
enters:
        XOR AX,AX        ; функция чтения символа с клавиатуры
        INT 16h          ; читаем символ
        CMP AL,0Dh       ; это ENTER???
        JZ input         ; если ENTER, начинаем ввод сначала
        XOR AH,AH        ; очистить скан-код
        ADD DX,AX        ; считаем контрольную сумму
        CMP DX, 'r' + 'u' + 'm' + 'i' + 't' ;загоняем пароль
        JNZ enters       ; если это не "rumit", продолжаем ввод
        retf
text db "Matrix has you!",0

На этом этапе надобно скачать виндозный Flat Assembler v.1.67 (FASM). Скомпилировав исходный код в FASM'е [Ctrl+F9], мы получим на выходе ISAOEM.BIN. Загружаем его в WinHex и дополняем нулями до размера, кратного 200h байт (512d байт). В самом последнем байте модуля необходимо указать его контрольную сумму.

Особое внимание нужно уделить пересчёту контрольной суммы модуля, ...она обязательно должна равняться нулю!!! В противном случае, при упаковке модуля в прошивку, возникнут проблемы. CBROM просто "пошлёт нас" пересчитывать CRC по-новой, и не подсовывать "всякий фуфел", ..эдакая защита от ламерского вмешательства!!!

Алгоритм подсчёта имеет запутанную структуру, и в программе WinHex выглядит следующим образом:

1) Открываем дополненный нулями бинарник в WinHex и жмём [Ctrl+A-->Инструменты-->Подсчитать хэш-->checksum 8bit]. WinHex сообщает 8Ch.

2) Полученное значение 8Ch нужно отнять от постоянного значения 100h, и записать в последний байт модуля, по адресу 1FFh. Для 16-тиричных вычислений запускаем виндовый калькулятор (Win+R-->calc) и переводим его в инженерный вид. 100h - 8Ch = 74h ....загоняем значение 74 в самый последний байт бинарника.

3) Жмём [Ctrl+A] и снова пересчитываем контрольную сумму. CRC=00h - вот так-то лучше!!!

4) Сваливаем из WinHex'а....

http://radikal.ru/F/i007.radikal.ru/1012/e0/30f748ebb9d4.gif

Добавляем новый модуль в BIOS (CBROM.EXE p4m8m10e.BIN /ISA ISAOEM.bin) и с замиранием сердца прожигаем BIOS утилитой UNIFLASH или любой другой. Перезагружаем машину...

Если все было сделано правильно, экран должен выглядеть приблизительно так...
Мы хакнули бивис!!! d

http://radikal.ru/F/s58.radikal.ru/i162/1012/16/b514666837ad.gif


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#12 28-12-2010 23:27:23

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Разгон системы

Чтобы разогнать систему, необходимо написать соответствующий ISA_ROM-модуль, настраивающий чипсет на максимальную производительность. Конфигурирование чипсета осуществляется через специальные регистры, находящиеся внутри него и подключенные к шине PCI.

Описание регистров чипсета можно найти в даташите. У меня чипсет VIA Apollo P4X800,...забиваю в гугле: datasheets +VIA Apollo P4X800, скачиваю ..и ищу там раздел, типа "PCI Configuration Registers". Сравнение конфигурационных возможностей чипсета с BIOS Setup показывает, что часть настроек обычно бывает умышленно заблокирована производителем материнской платы.

В частности, регистр 80000064h чипсета VIA Apollo P4X800 управляет чередованием банков памяти (чередование существенно увеличивает производительность), в то время как многие материнки на его основе, такой возможности не имеют. А как ее "поиметь"???

У PCI-шины есть два замечательных порта. В порт 0CF8h заносится адрес чипсетного регистра, с которым мы хотим работать, а через порт 0CFCh происходит обмен данными. Большинство чипсетных регистров представляют собой набор управляющих битов, поэтому перед тем, как что-то записывать в порт CFCh, мы сперва должны прочитать текущее состояние чипсета, взвести/опустить нужные нам биты при помощи операции OR, после чего затолкать обновленный регистр на место. На языке ассемблера это выглядит так:

Внимание!!! Только для чипсета - VIA Apollo P4X800!!! Обладатели других чипсетов должны заменить номера регистров, в соответствии со своей документацией.

; ISA_ROM.ASM
use16                   ; ISA-модуль работает в 16-разрядном сегменте
DB        55h, AAh      ; загрузочная сигнатура
DB        01h           ; размер блока в 200h байтовых секторах
jmp       x_code        ; передача управления нашему коду

x_code:
        mov   eax, 80000064h   ; регистр чипсета, управляющий DRAM-контроллером
        mov   dx, 0CF8h        ; PCI-порт (адрес регистра)
        out   dx, eax          ; выбираем регистр

        mov   dx, 0cfch        ; PCI-порт (данные)
        in    eax, dx          ; читаем содержимое регистра 80000064h
        or    eax, 00020202h   ; взводим биты, устанавливающие режим чередования
        out   dx, eax          ; записываем регистр чипсета

Данный модуль оформляется  как и предыдущий, в виде ISA_ROM. Главное, чтобы он получил управление после того, как BIOS произведет первичную инициализацию оборудования, иначе наши настройки будут проигнорированы!

...точно также, прогоняем код через FASM, заполняем полученный бинарник нулями до 512байт, пересчитываем контрольную сумму и загоняем её в последний байт:

http://radikal.ru/F/s15.radikal.ru/i188/1012/83/83bd2a053ba5.gif

Ещё раз проверяем контрольную сумму... Если после всех телодвижений CRC модуля равна нулю, то значит мы всё сделали правильно!!! Архивируем модуль при помощи CBROM в прошивку и с удовлетворением замечаем, что он появился 11-ым в списке...  Прожигаем BIOS....

http://radikal.ru/F/s43.radikal.ru/i101/1012/59/9a5162960c0f.gif

Зашив обновленную прошивку в BIOS, мы сразу-же видим как возросло быстродействие системы! ...как-будто не своя тачка!!! Таким же точно образом можно редактировать и остальные регистры, отсутствующие в BIOS Setup, разгоняя систему до скорости "реактивного гепарда".

...вообще-то, это даже не разгон, а законное использование возможностей, которые чипсет нам дает по праву!!!

Модернизация BIOS - это самый низкий уровень и "жить" на нем очень интересно! Это настоящая школа программирования с практически неограниченными возможностями для самовыражения, ...главное - фантазию иметь!!! Полет мысли сдерживает только железо... Мы можем свободно переходить в защищенный режим, крутить любые регистры.. и вообще делать всё, что нам вздумается!!!

...учите ASSEMBLER!!!


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#13 29-12-2010 00:34:13

Hydrogen
«¤Version 1.1-stable¤»
Откуда: /dev/random
Зарегистрирован: 19-07-2006
Сообщений: 4372
Вебсайт

Re: Хачим BIOS

Rumit написал:

...учите ASSEMBLER!!!

блин как слюни текут

сначалa с python'om закончить бы, оч нужен язык для быстрого программирования приложений

за ассемблер обязательно возьмусь sad


http://nick-name.ru/forum/%CDydrogen.gif

Неактивен

#14 29-12-2010 07:32:31

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Hydrogen написал:

за ассемблер обязательно возьмусь sad

...когда-то искал материал по ассемблеру и накопилось много интересного. На днях сформулирую мысль и поделюсь опытом в соответствующем разделе....

... лишь бы Дед мороз со снегурочкой не помешали!!! d drinks


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#15 29-12-2010 07:37:50

Hydrogen
«¤Version 1.1-stable¤»
Откуда: /dev/random
Зарегистрирован: 19-07-2006
Сообщений: 4372
Вебсайт

Re: Хачим BIOS

Слух, а ты вообще чем по жизни занимаешься?

P.S> у тя на сайте активный раздел отмечен значком loading, что вводит в заблуждение, я например упорно жду чтобы что-то загрузилось )))


http://nick-name.ru/forum/%CDydrogen.gif

Неактивен

#16 29-12-2010 23:05:11

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

offtopic

...сайт на данный момент забросил!!! Интересен был сам процесс создания, когда изучал HTML...получил моральное удовлетворение, и интерес к HTML - пропал! Мне бы чёнить "по-ниже" в иерархии...   А так, всё вроде грузиться...

...по жизни??? cheshet_repu ...вопрос застал в расплох!!! d


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#17 30-12-2010 19:34:57

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Видео-BIOS



Рецепт прошивки видео-BIOS

Экстремальный разгон требует наращивания тактовой частоты, увеличения напряжения, смены прошивки... Нам нужен точный рецепт, и этот рецепт лежит перед вами!!!

Китайцы выжимают из железа всё, что можно и дополнительный разгон только валит карту наповал. Серьёзные производители оставляют солидный запас прочности, который не грех поиметь!!! Производитель ограничивает предельные значения тактовых частот и таймингов, которые можно установить с панели управления или твикером. ...и это еще не всё!!! Блокируются целые модули, опции и режимы передачи данных, физически реализованные в железе, но недоступные программно!!!

...Вы уже материтесь??? ..ну и зря! Хакеры это только приветствуют. Чем больше на карте заблокированных возможностей, тем эффективнее разгон. Модификация BIOS'а - очень деликатное дело, и тут каждый решает сам - рисковать или нет.

Где брать прошивку???

...как всегда, всё лежит у нас под-носом, ..а вернее в памяти компьютера!!! Если знать распределение системных ресурсов в адресном пространстве, то можно без труда найти нужное устройство по адресу и считать содержимое его памяти (где и хранится прошивка устройства).

Сейчас мы говорим о видеокарте, BIOS которой находится в памяти по адресу C000h. Вы можете просмотреть участок памяти, запустив виндовый DEBUG (Win+R->debug). Перед нами чёрный экран и мигающий курс... Даём команду на отображение нужного участка памяти - D C000:0 L256, где С000 - сегмент (адрес), :0 - с какого смещения сегмента показать, L256 - сколько байтов показать:

http://radikal.ru/F/s006.radikal.ru/i214/1012/47/fc91d1096b7e.gif

...хорошо, есть начало...но где-же конец прошивки??? Как вариант - можно скачать программу Dr.Hardware для вин, которая выводит инфу о биосе (жёлтым выделил загрузочную сигнатуру блока и конечный адрес):

http://radikal.ru/F/s60.radikal.ru/i168/1012/0e/81e12585848e.jpg

...запускаем WinHex, и жмём в нём Инструменты-->Открыть RAM-->PhysicalMemory-->OK. Перед нами содержимое всей памяти компьютера, включая расширенную. Находим нужный блок, для чего идём в меню Правка-->Определить блок и вводим номера сегментов начала и конца блока - С0000h и C7FF0h соответственно.

Осталось скопировать блок в новый файл (Ctrl+Shift+N), и перед нами файл-прошивки видеокарты!!! Сохраняем новый файл как *.bin! Конечный сегмент блока может отличаться от указанного, в зависимости от модели видеокарты, но начальный всегда будет C0000h.


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#18 30-12-2010 19:39:26

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 993
Вебсайт

Re: Хачим BIOS

Что можно гнать???

Разгон видео-BIOS'а держится на трех китах: тактовой частоте, таймингах и напряжении!!! Это довольно "вздорная семейка", которую непросто примирить. Неправильное сочетание параметров ведет к перекосам, глюкам и тормозам.

...значит, частота (в смысле, меандр). Это сигнал такой, тактирующий. А тактировать он должен графический процессор и память. Меандр вырабатывается осциллятором (он же кварц), обычно генерирующим 14.318 MHz (старые) или 27 MHz (новые видеокарты). Это - базовая тактовая частота, еще называемая опорной. Все остальные частоты формируются путем умножения базовой частоты на множитель "Х", изменяемый с шагом от 0,25 до 1. Конкретное значение зависит от особенностей отдельно взятой модели и чем оно меньше, тем лучше!!!

Наивысший результат достигается лишь при определенных соотношениях частоты процессора и памяти. Обычно - это кратная частота, то есть частоты памяти/процессора соотносятся как целые числа, например, 1:2. Как правило, производитель уже нашел "золотую середину", от которой мы можем "плясать".

...к примеру, у серии GeForce 7800 графический процессор тактируется не одной тактовой частой, а сразу тремя!!! Различные блоки могут работать на различных частотах, значительно повышая свой разгонный потенциал. Обидно, что разработчики драйверов до сих пор не используют эти возможности... Но это не ограничение железа, а только "голимых" драйверов... Модификация BIOS'а позволяет решить проблему!!!

Вольтмод

Управлять напряжением намного сложнее, чем накручивать тактовую частоту. Разнообразные утилиты утверждают, что напряжение изменилось, но проверка вольтметром не обнаруживает никакого прироста. Из этих двоих кто-то нагло врет!!! ..и это явно не вольтметр.

Win-Hex кажет, что внутри видео-BIOS'а существует специальная таблица: одна колонка - напряжение в вольтах умноженное на 100, другая - соответствующий этому напряжению идентификатор (VID). Другая таблица сопоставляет идентификаторы с режимами производительности.

Таким образом, "табличные вольты" внутри карты никак не используются и нужны только утилитам мониторинга. Патчить их можно, но бесполезно. Реальное напряжение определяется идентификатором. Каждому VID соответствует своя комбинация логических нулей и единиц, подаваемых на вход стабилизатора. ...Вот эта комбинация и рулит!!! Изменить ее можно только путем редактирования BIOS'а, а точнее - той его части, что взаимодействует со стабилизатором.

На карте существует четыре основных потребителя электричества, каждый из которых питается своим напряжением, это:

Vgpu - напряжение питания ядра;
Vdd - напряжение на входных буферах, ядре памяти;
Vddq - напряжение на выходных буферах памяти;
Vref - эталонное напряжение для входных буферов;

Где-то в недрах BIOS'а должно быть четыре таблицы "VID -> комбинация", однако не каждая карта позволяет менять все четыре напряжения программно, да нам это и не нужно. Обычно при разгоне увеличивают только напряжение питания графического ядра (Vgpu). Напряжение памяти лучше не трогать, особенно если она без радиатора.

...но довольно теории, давайте попрактикуемся!!!

Есть один хитрый трюк, который легко освоить!!! Большинство значений (например, тактовых частот) лежат в прошивке "прямым текстом" и могут быть найдены поиском в WinHex'е.

Допустим, нам известно, что карта поддерживает следующию тактовую частоту: 250 MHz и ряд напряжений 1,56v и 1,57v. Как их найти в прошивке??? Очень просто!!! Умножаем число на 100, переводим в hex-систему (Win+R-->calc), затем остается поменять местами старший и младший байты, поскольку в x86 процессорах младший байт располагается по меньшему адресу!!! Вот что у нас получится:

250 -> 25000 -> 61A8h -> A8h 61h
1,56 -> 156 -> 9Ch.
1,57 -> 157 -> 9Dh

Следовательно, нам необходимо найти числа: A8h 61h, 9Ch и 9Dh.

Вскрываем прошивку в WinHex, и запускаем поиск.. Главное - найти "нужные", т.к. эти же числа могут встречаться и в других местах. Как отличить какие из них наши??? Ответ - "правильные" числа будут сгруппированы в одном районе. Вот они:

Прошивка видео-BIOS NV-FX5200
http://radikal.ru/F/s42.radikal.ru/i098/1012/68/4eedf623846a.gif

Теперь мы можем исправить их на любые другие значения, которые нужны нам (напоминаю, что захачить таким образом напряжение не получится), после чего обновленную прошивку можно заливать в BIOS. Контрольную сумму (CRC) пересчитывают при помощи утилиты для прожига NVFlash (для карт NVIDIA), у которой имеются для этого специальные ключи.

Если прошивка прошла неудачно...

Каждый хакер должен быть готов к тому, что прошивка пройдет неудачно и карта покажет черный экран. Что тогда???

"Правильные" хакеры создают загрузочную дискету и прописывают в autoexec.bat все необходимые строки так, чтобы утилита прошивки запускалась автоматически без участия человека!!! Если нет дисковода, можно создать загрузочный CD. Главное - чтобы файл прошивки был размещен на самом CD, а не на жёстком, т.к. NTFS-разделы из MS-DOS ни хрена не видны!!!

...Удачных эксперементов!!! ...и с наступающим Новым годом!!! drinks


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен


Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Рейтинг@Mail.ru