Русификация видео-BIOS, для GF6xxx и выше
Модераторы: max-sever, iStalker, andser
-
- Новичок
- Сообщения: 40
- Зарегистрирован: 18.05.2009 17:30
- Откуда: Россия
- Контактная информация:
Сравнил bios-ы GF6800U и GF8800 GT. Процедуры распаковки за 5 лет не изменились. Структура та-же один в один. Разница только в том что, в 6800 распаковывается в знакогенератор, а в 8800 в сразу в память.
Выкладываю asm листинги для сравнения, может кто расковыряет формат:
http://rapidshare.com/files/256785762/asm_list.rar.html
Выкладываю asm листинги для сравнения, может кто расковыряет формат:
http://rapidshare.com/files/256785762/asm_list.rar.html
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 16.07.2009 15:57
- Откуда: Волгоград
- Контактная информация:
Безусловно, это было сделано.MERCURY писал(а):После ЛЮБОГО исправления НУЖНО пересчитывать контрольную сумму...
Я заметил ещё такую вещь: распаковщик в русифицированном БИОСе от BFG 6800 Ultra начинается с таких команд:
Код: Выделить всё
0000F61A: 0E push cs
0000F61B: 1F pop ds
Я изначально скопировал и их в свой БИОС, вместе со всей допиской из приложенного к статье БИОСа. Попробовал удалить эти команды, но результат опять не отличается от двух предыдущих опытов.
P.S. Контрольную сумму БИОСа каждый раз исправлять не забывал.
-
- Новичок
- Сообщения: 40
- Зарегистрирован: 18.05.2009 17:30
- Откуда: Россия
- Контактная информация:
А вы можете модифицировать GRB.EXE, чтоб она скидывала дамп памяти размером 128 килобайт?MERCURY писал(а):BolenB
А что вам мешает взять любую готовую прошивку и раздуть ее до 68-72 Кб любыми данными, даже не используемыми? Я то не смог, у меня флеш не позволил, а вам это проверить - раз плюнуть ...
-
- Новичок
- Сообщения: 40
- Зарегистрирован: 18.05.2009 17:30
- Откуда: Россия
- Контактная информация:
Ну это как бы перестраховка. По идее cs=ds=es, для работы со строковыми командами lodsb и stosb. По умолчанию так и есть, и эти команды не нужны.Improver писал(а):Я заметил ещё такую вещь: распаковщик в русифицированном БИОСе от BFG 6800 Ultra начинается с таких команд:, но в файле "funp.bin" их нет (и в статье они не упоминаются тоже).Код: Выделить всё
0000F61A: 0E push cs 0000F61B: 1F pop ds
Я изначально скопировал и их в свой БИОС, вместе со всей допиской из приложенного к статье БИОСа. Попробовал удалить эти команды, но результат опять не отличается от двух предыдущих опытов.
Попробуйте передвинуть ваш код с F7A0 на F800, то есть в конец bios-а. В конце bios лежат структуры (частота чипа, памяти, температурные датчики) и их лучше не трогать. Не факт, что с F7A0 по F7FF не лежит чего-нибудь нужного.
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 16.07.2009 15:57
- Откуда: Волгоград
- Контактная информация:
Вот это уже значительно лучше! Машина уже, по крайней мере, теперь загружается, только вместо символов мусор. Вот последняя версия: http://rapidshare.com/files/256818467/GF6600R2.RARBolenB писал(а):Попробуйте передвинуть ваш код с F7A0 на F800, то есть в конец bios-а. В конце bios лежат структуры (частота чипа, памяти, температурные датчики) и их лучше не трогать. Не факт, что с F7A0 по F7FF не лежит чего-нибудь нужного.
Дамп памяти снимать не стал, в слепую это требует предварительной подготовки, если нужен -- сделаю в понедельник.
Удачи!
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 16.07.2009 15:57
- Откуда: Волгоград
- Контактная информация:
Испытал русифицированную версию БИОСа для GF7600 GT, всё работает замечательно. В отличие от GT6600, русификация этого БИОСа выполнена аналогично БИОСу ASUS N7600GS, т.е. произведена полная замена шрифтов и подпрограммы распаковки. Если кому надо, вот файлы: http://rapidshare.com/files/256857423/gf7600ru.rar
Содержимое архива:
GF7600.ROM -- исходный БИОС
GF7600R.ROM -- русифицированный мной БИОС
GRB.BIN -- сграбленный из памяти БИОС
Ещё раз спасибо авторам статьи.
Кстати, те символы, которые подменяются после распаковки (С, Ы, Э, Ю, л, м...) я пропатчил третьим способом -- исправил коды их начертания на русские в соответствии с загружаемым шрифтом, в том месте БИОСа, где они хранятся в несжатом виде. Этот метод, imho, лучше тем, что не изменяет алгоритмов работы БИОСа.
Теперь осталось только разобраться с глюками на 6600...
Содержимое архива:
GF7600.ROM -- исходный БИОС
GF7600R.ROM -- русифицированный мной БИОС
GRB.BIN -- сграбленный из памяти БИОС
Ещё раз спасибо авторам статьи.
Кстати, те символы, которые подменяются после распаковки (С, Ы, Э, Ю, л, м...) я пропатчил третьим способом -- исправил коды их начертания на русские в соответствии с загружаемым шрифтом, в том месте БИОСа, где они хранятся в несжатом виде. Этот метод, imho, лучше тем, что не изменяет алгоритмов работы БИОСа.
Теперь осталось только разобраться с глюками на 6600...
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
BolenB
Это теоретически уже сделано изначально, я же не дурак, чтоб не обращать внимения на байт 0002h? Сколько там есть, столько и прочитается ... Вот вам это легче всего проверить! Я не смог, т.к. не хватило флеша. Раздуйте прошивку до 68-72 кб и посмотрите, будет ли работать... Необязательно реально использовать эти данные в хвосте, но можно проверить, загружается ли такой БИОС вообще? Лично я уверен, что приципиальных ограничений два: 1) реальный объем свободной теневой памяти (определяется конфигурацией железа на момент запуска видеокарты); 2) 128 Кб - лимит заголовка БИОС.А вы можете модифицировать GRB.EXE, чтоб она скидывала дамп памяти размером 128 килобайт?
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 16.07.2009 15:57
- Откуда: Волгоград
- Контактная информация:
MERCURY, теперь всё работает правильно.
Насколько я понял, Вы просто вынесли подпрограмму распаковки шрифтов ещё дальше по адресам, и это помогло.
Теперь следующий шаг к совершенству, я думаю, нужно делать в направлении полной замены шрифта. Подмена шрифта только в памяти при озвученной Вами схеме распаковки шрифтов «память — знакогенератор — память» может привести к тому, что в определённых ситуациях (не могу точно сказать в каких) видеокарта может, например, перезаписать заново шрифты из знакогенератора в память и тогда от русификации ничего не останется...
Насколько я понял, Вы просто вынесли подпрограмму распаковки шрифтов ещё дальше по адресам, и это помогло.
Теперь следующий шаг к совершенству, я думаю, нужно делать в направлении полной замены шрифта. Подмена шрифта только в памяти при озвученной Вами схеме распаковки шрифтов «память — знакогенератор — память» может привести к тому, что в определённых ситуациях (не могу точно сказать в каких) видеокарта может, например, перезаписать заново шрифты из знакогенератора в память и тогда от русификации ничего не останется...
-
- Новичок
- Сообщения: 40
- Зарегистрирован: 18.05.2009 17:30
- Откуда: Россия
- Контактная информация:
Неправда ваша. После распаковки шрифтов, они больше не перезапишутся. Как вы могли заметить, распакованный шрифт затирает упакованный, поэтому и схема такая сложная «память — знакогенератор — память». Если бы распаковывали по схеме «память — память», то распакованные шрифты, при распаковке затерли бы еше не распакованные шрифты. И область после пакованных шрифтов и до конца bios трогать нельзя, там лежат настройки видеокарты. Начиная с 7-серии Geforce эту область сдвинули ближе к началу bios, а пакованные шрифты в самый конец, поэтому там больше пространства для маневра.Improver писал(а):Подмена шрифта только в памяти при озвученной Вами схеме распаковки шрифтов «память — знакогенератор — память» может привести к тому, что в определённых ситуациях (не могу точно сказать в каких) видеокарта может, например, перезаписать заново шрифты из знакогенератора в память и тогда от русификации ничего не останется...
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
Improver,
Насчет ПОЛНОЙ русификации - есть одна мысль - модифицировать любым способом первичную распаковку с записью в знакогенератор так, чтоб распаковывались НАШИ шрифты... Можно подменить штатный распаковщик нашим (funp.bin), подправив его, чтоб писал не в память, а в знакогенератор?
C другой стороны, стремление к совершенству похвально, но лишь когда это самое совершенство достижимо ...
Я уж и сам не знаю, что именно помогло ...Насколько я понял, Вы просто вынесли подпрограмму распаковки шрифтов ещё дальше по адресам, и это помогло
Вы неверно поняли ... Ничего страшного не будет, т.к. ИЗ знакогенератора шрифты выгружаются всего ОДИН раз, в процессе распаковки, а вот загружаются туда каждый раз при смене видеорежима уже оттуда, куда мы их распаковали. Так что есди уж они один раз русифицировались, т.е. видны на экране, то уже никуда не денутся ...Теперь следующий шаг к совершенству, я думаю, нужно делать в направлении полной замены шрифта. Подмена шрифта только в памяти при озвученной Вами схеме распаковки шрифтов «память — знакогенератор — память» может привести к тому, что в определённых ситуациях (не могу точно сказать в каких) видеокарта может, например, перезаписать заново шрифты из знакогенератора в память и тогда от русификации ничего не останется...
Насчет ПОЛНОЙ русификации - есть одна мысль - модифицировать любым способом первичную распаковку с записью в знакогенератор так, чтоб распаковывались НАШИ шрифты... Можно подменить штатный распаковщик нашим (funp.bin), подправив его, чтоб писал не в память, а в знакогенератор?
C другой стороны, стремление к совершенству похвально, но лишь когда это самое совершенство достижимо ...
-
- Новичок
- Сообщения: 40
- Зарегистрирован: 18.05.2009 17:30
- Откуда: Россия
- Контактная информация:
Есть у меня одна идейка:
1) Процедуру которая распаковывает шрифт в знакогенератор отключаем
2) Ложим наш русифицированный пакованный шрифт с распаковщиком на место стандартного пакованного шрифта.
3) Процедуру которая пишет шрифт из знакогенератора в память модернизируем, а именно:
3.1) Сдвигаем наш пакованный шрифт с распаковщиком (из пункта 2) в самый конец биос (видюха уже настроена и данные в конце bios-а не нужны).
3.2) Распаковываем наш шрифт в нужное место.
Думаю должно получится. При вызове любой функции прерывания int10 (video), наш шрифт загрузится в знакогенератор, если его там небыло (после наших манипуляций).
1) Процедуру которая распаковывает шрифт в знакогенератор отключаем
2) Ложим наш русифицированный пакованный шрифт с распаковщиком на место стандартного пакованного шрифта.
3) Процедуру которая пишет шрифт из знакогенератора в память модернизируем, а именно:
3.1) Сдвигаем наш пакованный шрифт с распаковщиком (из пункта 2) в самый конец биос (видюха уже настроена и данные в конце bios-а не нужны).
3.2) Распаковываем наш шрифт в нужное место.
Думаю должно получится. При вызове любой функции прерывания int10 (video), наш шрифт загрузится в знакогенератор, если его там небыло (после наших манипуляций).
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
BolenB
Сдается мне, что к тому времени наш шрифт вместе с распаковщиком будет затерт... Вы не задумывались, почему процедура загрузка шрифта из знакогенератора находится совсем в другом месте? отдельно от шрифтов и распаковщика?Есть у меня одна идейка:
3.1) Сдвигаем наш пакованный шрифт с распаковщиком (из пункта 2) в самый конец биос (видюха уже настроена и данные в конце bios-а не нужны)
-
- Новичок
- Сообщения: 40
- Зарегистрирован: 18.05.2009 17:30
- Откуда: Россия
- Контактная информация:
НетMERCURY писал(а): Сдается мне, что к тому времени наш шрифт вместе с распаковщиком будет затерт...
Я даже знаю почему. Чтоб не затереть саму себя, при копировании шрифта из знакогенератора в память.Вы не задумывались, почему процедура загрузка шрифта из знакогенератора находится совсем в другом месте? отдельно от шрифтов и распаковщика?
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 16.07.2009 15:57
- Откуда: Волгоград
- Контактная информация:
BolenB писал(а):Неправда ваша. После распаковки шрифтов, они больше не перезапишутся.
Ну в таком случае всё замечательно, зря волновался.MERCURY писал(а):Вы неверно поняли ... Ничего страшного не будет, т.к. ИЗ знакогенератора шрифты выгружаются всего ОДИН раз, в процессе распаковки, а вот загружаются туда каждый раз при смене видеорежима уже оттуда, куда мы их распаковали. Так что есди уж они один раз русифицировались, т.е. видны на экране, то уже никуда не денутся ...
Это, imho, хорошая идея.MERCURY писал(а):Насчет ПОЛНОЙ русификации - есть одна мысль - модифицировать любым способом первичную распаковку с записью в знакогенератор так, чтоб распаковывались НАШИ шрифты... Можно подменить штатный распаковщик нашим (funp.bin), подправив его, чтоб писал не в память, а в знакогенератор?
Ну почему, в данном случе, оно не достижимо? "То, что один человек сделал, другой завсегда сломать сможет" (с) Или переделать.MERCURY писал(а):C другой стороны, стремление к совершенству похвально, но лишь когда это самое совершенство достижимо ...
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
Значит, так... На данный момент здешним коллективным разумом русифицированы GeForce 6600, 6800, 7600, 8800, т.е. 6, 7 и 8 серии. Посмотрел тут прошивку для ASUS EN9600GT 512 PCIE: http://mercury.boot-land.net/pub/asus.9 ... rev.03.rom . На мой взгляд, от 7600 и 8800 русификация мало чем отличается... Хотя есть странности в распаковщике . Есть обладатели GeForce 9 серии, желающие потрепать нервы и принести пользу обществу ?
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
Установлена абсолютная необходимость применения ВТОРОГО способа (RVBEdit & BolenB) отключения подмены знаков (СЫЭЮл) после загрузки! Т.к. при определенных условиях даже с отключенной процедурой подмены она все же как то срабатывает ... Т.е. где то есть еще одна процедура того же рода...
Так все же, есть желающие испытать русификацию 9 серии? Например, вы, DrEvil...
Так все же, есть желающие испытать русификацию 9 серии? Например, вы, DrEvil...
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
Improver, их не шесть, их несколько блоков - 13, плюс еще 7 в зависимости от прошивки, по моему, в разных местах... Вы просто выбрали шрифт, похожий на оригинальный БИОСовый, поэтому не видите подмену латинских букв. И с точки зрения простого смертного проще записать ноль в одно-два известных места, чем возится с десятком 16-байтных кусков...
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 16.07.2009 15:57
- Откуда: Волгоград
- Контактная информация:
MERCURY, вообще-то всего, вместе с латинскими буквами, я насчитал 19 символов размером 8х16 и, в более старых БИОСах, до 17 символов 8х14. Они все всегда располагаются в одном месте, найти их несложно. У себя я правил и латинский шрифт, т.к. заменяемые символы всё-таки немного отличаются.
Но вопрос не в этом, а в том, что доподлинно не известна причина замены этих символов в БИОСах от nVidia. Неисключено, что при определённой ситуации это делать необходимо и игнорируя эту замену можно получить ещё один не очень приятный глюк. Как, впрочем, Вы сами могли убедится в глючности рихтовки механизма замены.
Написать же программку, отыскивающую и заменяющую эти дополнительные символы не составит никакого труда, это не намного сложнее, чем найти в БИОСе место, куда прописать ноль. Вообще, "с точки зрения простого смертного", лезть в БИОС руками не следует, нажал на кнопку -- получил результат. Всё.
Хотя, в принципе, выбор решения в этом вопросе за Вами, а я для себя свой выбор сделал...
Но вопрос не в этом, а в том, что доподлинно не известна причина замены этих символов в БИОСах от nVidia. Неисключено, что при определённой ситуации это делать необходимо и игнорируя эту замену можно получить ещё один не очень приятный глюк. Как, впрочем, Вы сами могли убедится в глючности рихтовки механизма замены.
Написать же программку, отыскивающую и заменяющую эти дополнительные символы не составит никакого труда, это не намного сложнее, чем найти в БИОСе место, куда прописать ноль. Вообще, "с точки зрения простого смертного", лезть в БИОС руками не следует, нажал на кнопку -- получил результат. Всё.
Хотя, в принципе, выбор решения в этом вопросе за Вами, а я для себя свой выбор сделал...
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
Improver
Еще мысль: с БИОСами 7 и старших серий, как мы убедились, все просто, и можно провести полную русификацию ЛЮБОЙ из них (? где вы, владельцы 9 серии ?)... А вот для 6 серии можно создать заготовку - 512-байтный блок - распаковщик плюс половинки наших фонтов, приклеиваемый к любой прошивке размером до 0xFE00h = 65024 байт. После чего русификация так же не представляет проблем...
Ну а в целом, конечно, на все воля Божья и хозяина карточки .
Вот именно, поэтому я отказался от ранее предлагавшегося мною (и как я сам увидел, не всегда срабатывающего) способа отключения самой процедуры подмены, и поддерживаю (но никак не навязываю !!!) способ из RVBEdit. Т.о. процедура замены будет вызываться всегда, когда понадобится, просто не будет ничего подменять. Так что глюков быть не должно...вместе с латинскими буквами, я насчитал 19 символов размером 8х16 и, в более старых БИОСах, до 17 символов 8х14. Они все всегда располагаются в одном месте, найти их несложно.
Еще мысль: с БИОСами 7 и старших серий, как мы убедились, все просто, и можно провести полную русификацию ЛЮБОЙ из них (? где вы, владельцы 9 серии ?)... А вот для 6 серии можно создать заготовку - 512-байтный блок - распаковщик плюс половинки наших фонтов, приклеиваемый к любой прошивке размером до 0xFE00h = 65024 байт. После чего русификация так же не представляет проблем...
Ну а в целом, конечно, на все воля Божья и хозяина карточки .
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 16.07.2009 15:57
- Откуда: Волгоград
- Контактная информация:
Истинная причина подмены некоторых символов известна, пожалуй, только инженерам из nVidia, но, допустим, что в какой-то определённый момент эта подмена может быть действительно необходима. Но тогда, в случае патча по методу из RVBEdit, этой подмены не произойдёт, и в результате получаем, например, безобидный глюк с мусором вместо этих символов. Так что между "не должно быть" и "нет" глюков -- большая разница.MERCURY писал(а):процедура замены будет вызываться всегда, когда понадобится, просто не будет ничего подменять. Так что глюков быть не должно...
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
Improver, да сколько раз вам объяснять, что ВСЕ необходимые процедуры БУДУТ вызваны, просто, увидев NUL вместо кода символа, они все прекращают работу КАК ОБЫЧНО, т.е. как это ИЗНАЧАЛЬНО запланировано создателями! Но ведь на месте самого символа NUL никакого мусора не наблюдается? Значит, и на месте остальных не будет, что с патчем, что без него!!!
Ну чего вы перестраховываетесь? Оно, конечно, похвально, но ведь к RVBEdit до сих пор никаких нареканий не было?
Ну чего вы перестраховываетесь? Оно, конечно, похвально, но ведь к RVBEdit до сих пор никаких нареканий не было?
"Дело було вечером, делать було нечего", вот и вся причина ...Но вопрос не в этом, а в том, что доподлинно не известна причина замены этих символов в БИОСах от nVidia. Неисключено, что при определённой ситуации это делать необходимо
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 16.07.2009 15:57
- Откуда: Волгоград
- Контактная информация:
MERCURY, может я не совсем понятно для Вас изложил, но:
Изначально было запланировано переписать коды символов, а этого сделано не будет. Значит, уже не как обычно.MERCURY писал(а):ВСЕ необходимые процедуры БУДУТ вызваны, просто, увидев NUL вместо кода символа, они все прекращают работу КАК ОБЫЧНО, т.е. как это ИЗНАЧАЛЬНО запланировано создателями!
Логично предположить, что мусор может наблюдаться не там, где Вы nul поставили, а там, куда должны были переписаться эти коды.Но ведь на месте самого символа NUL никакого мусора не наблюдается?
Дык, лучше перебдеть, как известно. Если исходить из предположения, что в БИОСе нет багов и лишнего кода, то лучше там ничего не упрощать, чтобы не добавлять туда своих глюков.Ну чего вы перестраховываетесь?
А как часто в этом месте может проявиться глюк? Допустим, даже вероятность 0,01%. Скажем, 1% пользователей программы RVBEdit русифицировали при помощи неё видеокарту, умножаем на вероятность получения ими глюка, потом 9 из 10 среди этих пользователей, у кого возник глюк, поленились писать багрепорт, т.к. глюк у них мог и не повториться в течении длительного времени, а оставшееся ничтожное число пользователей просто не поняло, что у них произошло.Оно, конечно, похвально, но ведь к RVBEdit до сих пор никаких нареканий не было?
-
- Новичок
- Сообщения: 68
- Зарегистрирован: 18.05.2009 10:34
- Откуда: 100 кило от Казани
- Контактная информация:
А в оригинальном НЕПАТЧЕННОМ коде этого нуля нет, что ль? Чем, по вашему, список подлежащих замене символов закрывается? Мы просто закрываем его раньше, в самом начале. Хватит фантазировать...Логично предположить, что мусор может наблюдаться не там, где Вы nul поставили, а там, куда должны были переписаться эти коды.
Вашу бы бдительность да в МС... Если исходить из предположения, что в Виндзя нет багов и лишнего кода, то почему он регулярно виснет?Дык, лучше перебдеть, как известно. Если исходить из предположения, что в БИОСе нет багов и лишнего кода, то лучше там ничего не упрощать, чтобы не добавлять туда своих глюков.