Сейчас на форуме: rmn, exp50848, _MBK_ (+9 невидимых)

 eXeL@B —› Основной форум —› Изменение CMOS под Windows XP
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 10 декабря 2010 19:52
· Личное сообщение · #1

Вопрос к разбирающимся людям, есть машинка ASUS Eee Box B202. Возможно ли поменять одно из значений в bios не заходя туда? Подобная машина для экспериментов есть. Опция AI Overclocking в данном биосе имеет значения Auto, Level1, Level2, Level3. Интересует смена например с Auto на Level1.
Что пробовал:
С помощью cmossave.com делал дампы с переключая режимы. Ничего внятного не обнаружил. Потом убедился что cmosrest.com под XP не записывает.
Далее использовал HWDIRECT 1.88.0.08. Показывает она другие данные CMOS, но редактировать позволяет. Дампа не делает по этому искать изменения очень трудно...
Что посоветуете? Может не в ту сторону капаю или есть утилиты получше? Или тут другой подход нужен?



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 10 декабря 2010 20:10
· Личное сообщение · #2

rom.by копать там, по BIOS и CMOS люди там

-----
Реверсивная инженерия - написание кода идентичного натуральному


| Сообщение посчитали полезным: Coderess, ToBad

Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 10 декабря 2010 20:35 · Поправил: SaNX
· Личное сообщение · #3

Дык можно же как раньше, с портами работать. Только из под дровины

-----
SaNX





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 10 декабря 2010 21:30
· Личное сообщение · #4

Hexxx пишет:
rom.by копать там, по BIOS и CMOS люди там


Понял, спасибо! Интересный ресурс.


SaNX пишет:
Дык можно же как раньше, с портами работать. Только из под дровины


Ну HWDIRECT так и делает. Через дровину всё - по этому проблем нет под виндой.

Для себя хочу прояснить, сам BIOS это программа, а все настройки которые я могу делать Enable/Disable и т.д. по-любому должны сохранятся в CMOS? Сам CMOS память размером 7F или FF в зависимости от материнки. То есть мне не в биос лезть нужно, а просто найти несколько бит указывающих режим в CMOS и исправить с помощью того же HWDIRECT? Я правильно всё представляю?



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 10 декабря 2010 22:32
· Личное сообщение · #5

Code:
  1. Чтение: для чтения значения из ячейки, запишите значение в порт 70Н адрес интересующей вас ячейки, а затем считайте значение из порта 71Н - это и будет интересующие вас значение. 
  2. Запись: для записи значения в CMOS запишите значение адреса в порт 70Н, а затем новое значение в порт 71Н.



Code:
  1. 33H      Другая информация (специфич. для машин AT/PS-2 класса)
  2. 34Н-3FH  РЕЗЕРВ. Как показывает практика, эта область чаще всего свободна от системных данных (но не всегда!), поэтому можете записывать сюда свои личные данные (но не много J) для сохранения между перезагрузками)


Я думаю, тут надо искать.

-----
SaNX


| Сообщение посчитали полезным: ToBad


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 11 декабря 2010 01:10 · Поправил: ToBad
· Личное сообщение · #6

SaNX следуя совету написал утилитку которая вычитывает дамп. Использовал delphi + inpout32.dll Эксперементировал на своём компе с каким-то параметром у которого есть выбор: авто, 64, 128, 256, 512мб... Где находится значение - нашёл, написал утилитку записи. Записал другое значение, после перезагрузки получил CMOS по дефолту. Далее пригляделся и обнаружил CRC. Записал с CRC - всё получилось, значение поменял. Далее погуглил и заметил, что в кмосе несколько контрольных сумм, по адресу 32-33 - отвечает за область 10-31, и ещё как мне показалось 2E-2F. Мой тестовый параметр находится по адресу 55, а контрольная сумма этого участка по 7B-7C. Непонятно только одно - как считать. Пробовал разные онлайн CRC калькуляторы - и близко не то...
Буду благодарен если кто-то подскажет какой именно алгоритм используется. Знаю, что можно любой биос пореверсить, но мне кажется это долгий и тяжёлый путь...
Вот примеры:
Code:
  1. Addr:  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
  2. ----------------------------------------------------------------------   ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- ----------------------------------------
  3. Line1  53 90 06 00 23 48 05 10 12 10 26 42 00 80 00 00 00 CC F0 00 03 80 02 C0 FF 2F 2F 00 00 00 00 00 00 00 00 FF FF 00 FF FF 10 00 00 FE FF FF 0B 66 C0 FF 20 FF DE BF FF FF FF FF FF 0F FF D1 72 FF FE 00 10 00 00 01 01 01 01 01 10 00 21 00 18 18 01 12 31 02 00 00 00 00 00 00 00 10 00 1A 01 C8 80 00 00 00 00 28 02 2F 00 00 00 00 00 00 00 00 2F 00 00 00 00 00 00 00 00 FF FF 04 B5 FF FF FF
  4. Line2  09 90 16 00 23 48 05 10 12 10 26 42 00 80 00 00 00 80 F0 00 03 80 02 C0 FF 2F 2F 00 00 00 00 00 00 00 00 FF FF 00 FF FF 10 00 00 FE FF FF 0B 1A C0 FF 20 FF DE BF FF FF FF FF FF 0F FF D1 72 FF FE 00 00 00 00 01 01 01 01 01 10 00 21 00 18 18 01 10 31 02 00 00 00 00 00 00 00 00 00 0A 01 C8 80 00 00 00 00 22 03 00 00 00 00 00 00 00 00 00 2F 00 00 00 00 00 00 00 00 FC FF 04 7B FF FF FF
  5. Line3  33 90 11 00 22 48 05 10 12 10 26 42 00 80 00 00 00 CC F0 00 03 80 02 C0 FF 2F 2F 00 00 00 00 00 00 00 00 FF FF 00 FF FF 10 00 00 FE FF FF 0B 66 C0 FF 20 FF DE BF FF FF FF FF FF 0F FF D1 72 FF FE 00 10 00 00 01 01 01 01 01 10 00 21 00 18 18 01 12 31 02 00 02 00 00 00 00 00 10 00 1A 01 C8 80 00 00 00 00 28 02 2F 00 00 00 00 00 00 00 00 2F 00 00 00 00 00 00 00 00 FF FF 04 B7 FF FF FF
  6. Line4  54 90 14 00 22 48 05 10 12 10 26 42 00 80 00 00 00 CC F0 00 03 80 02 C0 FF 2F 2F 00 00 00 00 00 00 00 00 FF FF 00 FF FF 10 00 00 FE FF FF 0B 66 C0 FF 20 FF DE BF FF FF FF FF FF 0F FF D1 72 FF FE 00 10 00 00 01 01 01 01 01 10 00 21 00 18 18 01 12 31 02 00 03 00 00 00 00 00 10 00 1A 01 C8 80 00 00 00 00 28 02 2F 00 00 00 00 00 00 00 00 2F 00 00 00 00 00 00 00 00 FF FF 04 B8 FF FF FF
  7. Line5  07 90 18 00 22 48 05 10 12 10 26 42 00 80 00 00 00 CC F0 00 03 80 02 C0 FF 2F 2F 00 00 00 00 00 00 00 00 FF FF 00 FF FF 10 00 00 FE FF FF 0B 66 C0 FF 20 FF DE BF FF FF FF FF FF 0F FF D1 72 FF FE 00 10 00 00 01 01 01 01 01 10 00 21 00 18 18 01 12 31 02 00 04 00 00 00 00 00 10 00 1A 01 C8 00 00 00 00 00 28 02 2F 00 00 00 00 00 00 00 00 2F 00 00 00 00 00 00 00 00 FF FF 04 B9 FF FF FF
  8. Line6  38 90 50 00 22 48 05 10 12 10 26 42 00 80 00 00 00 80 F0 00 03 80 02 C0 FF 2F 2F 00 00 00 00 00 00 00 00 FF FF 00 FF FF 10 00 00 FE FF FF 0B 1A C0 FF 20 FF DE BF FF FF FF FF FF 0F FF D1 72 FF FE 00 00 00 00 01 01 01 01 01 10 00 21 00 18 18 01 10 31 02 00 05 00 00 00 00 00 00 00 0A 01 C8 80 00 00 00 00 22 03 2F 00 00 00 00 00 00 00 00 2F 00 00 00 00 00 00 00 C0 FC FF 04 80 FF FF FF
  9. ----------------------------------------------------------------------   ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- ----------------------------------------
  10. Байт 55: 0 - Авто, 2 - 64Мб, 3 - 128Мб, 4 - 256Мб, 5 - 512Мб
  11. CRC байты 7B и 7C.
  12. Line1 и Line6 - после изменения других настроек


3e7c_10.12.2010_CRACKLAB.rU.tgz - 2010.txt

p.s. Заметил что у HWDirect при рефреше данные разнятся. Думаю проблема с интервалах между записью значения адреса в порт 70Н и чтения результата из порта 71Н. Если поставить маломальскую паузу - вычитываются нули. Видимо таймаут существует и он очень мал. Дельфи тоже периодически 1-2 байта сбой даёт, не успевает. Для этого и нужно сверяться с CRC.

p.p.s. С CRC разобрался, помогло это. Банальная сумма всех байт диапазона.



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 11 декабря 2010 09:42
· Личное сообщение · #7

ToBad пишет:
С CRC разобрался, помогло это. Банальная сумма всех байт диапазона.

пока читал, хотел тебе об этом сказать. Потом увидел, что ты сам нашел

-----
SaNX





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 11 декабря 2010 13:15
· Личное сообщение · #8

SaNX пишет:
пока читал, хотел тебе об этом сказать. Потом увидел, что ты сам нашел


Ага, а я нашёл пока постил предыдущее. Ну знаешь как наоткрываешь сотню складок, перечитаешь часть, постишь и параллельно дочитываешь...
А самое прикольное когда что-то тупо не получается, решаешь спросить на форуме, а что-бы это сделать нужно всё по-человечески объяснить и разложить по полочкам. Пока пишешь рождаются новые идеи, проверяешь - дописываешь, а потом бах и всё получилось, постить уже нет смысла...



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 11 декабря 2010 14:57 · Поправил: SergX
· Личное сообщение · #9

Думаю, что это и так понятно, но на всякий случай напишу…
В каком формате хранятся настройки в CMOS и сколько, где и каких КС - зависит от версии BIOS. Если пишешь софт, который должен работать на разных компах, то придётся это учесть. Что-то универсальное сделать вряд ли выйдет.

Когда-то игрался с BIOS, получилось полностью пересобрать и засунуть вместо одного из блоков демку которая вызывалась хоткеем при запуске.




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 11 декабря 2010 16:10 · Поправил: ToBad
· Личное сообщение · #10

SergX пишет:
Если пишешь софт, который должен работать на разных компах


Не, не, под конкретную модельку. Я понял уже что в кмосе от конкретного биоса зависит...

SergX пишет:
Когда-то игрался с BIOS, получилось полностью пересобрать и засунуть вместо одного из блоков демку которая вызывалась хоткеем при запуске.


Круто! На http://rom.by люди тоже вытворяют много интересного. Кто новые пункты меню в биос вписывает, кто ещё что-то...




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 13 декабря 2010 00:02
· Личное сообщение · #11

Сделал много дампов на ASUS-e при разных положениях нужной опции, вычислил что меняется, а что нет. Нашёл где хранится нужная опция и где CRC, но не пойму какая часть туда включена, а какая нет.
CMOS в виде двух блоков по 128 байт, вычитываю из 70/71h и 72/73h.
Вот три примера, где самая верхняя строка это адрес, данные в виде двух строк где первая прочитана с 70/71h, вторая с 72/73h соответственно. Как известно в первой строке данные по адресам с 00 до 09 не учитываются. С 10 по 2D - CRC в виде суммы всех байтов хранится в 2E и 2F, 3E и 3F - CRC с подсчётом которого возникла проблема. Нужная мне опция живёт во второй строке по адресу 2F, а по адресу 17 второй строки кажется младший байт другого CRC который в свою очередь не влияет на подсчёт основного CRC с которым проблема. Известно точно, что на нужный CRC влияют так же байты первой строки от 4С до 50 включительно, от 5A до 5F включительно, 68, 69.
Буду очень благодарен за помощь в понимании формирования этого CRC и байта с адресом 2F второй строки!
Code:
  1. 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
  2.                                                                                                                                                                                            
  3. 03 09 56 58 18 18 06 11 12 10 2A 42 00 80 00 00 00 30 F0 30 0E 80 02 FF FF 2F 00 FF 3F 10 00 00 3F 00 00 00 00 00 00 00 00 30 47 47 47 47 06 E6 FF FF 20 A5 97 F7 03 00 30 00 00 53 55 00 1A B2 00 00 00 00 00 00 00 00 00 00 00 00 23 62 72 13 3B 55 01 FE 00 40 5E 5E ED B2 00 62 72 13 3B 55 30 80 0F 0C 00 00 00 00 10 32 54 76 98 BA 10 32 00 54 76 98 BA 00 50 00 00 7B 00 00 00 40 0F 00
  4. 10 08 1A 08 1A 1C 00 00 00 00 0C 20 24 00 40 00 F9 91 80 C0 A0 73 E7 33 00 A3 03 7E D9 78 DF C7 92 A9 60 00 07 20 21 0A 30 93 54 00 02 09 F3 46 99 FF 0F 02 00 7E F8 8E 2A C0 A6 E1 C1 BB DC 01 1A 30 02 FA 6E 4B EF EE 97 FB FB F9 5D 0D FE FF FB 50 FF FF F2 17 BF F9 DB F4 AD 83 D5 B7 FF DF FB 33 6E DC FF F7 FF F6 7A 47 77 07 FB E5 AE 8F FD 9B FB FD AF AF FF 6F B1 FB BB AF C3 DB FF 45
  5.  
  6. 45 09 35 58 19 18 06 11 12 10 2A 42 00 80 00 00 00 30 F0 30 0E 80 02 FF FF 2F 00 FF 3F 10 00 00 3F 00 00 00 00 00 00 00 00 30 47 47 47 47 06 E6 FF FF 20 A5 97 F7 03 00 30 00 00 53 55 00 1B E8 00 00 00 00 00 00 00 00 00 00 00 00 23 62 72 13 3B 55 01 FE 00 40 5E 5E ED B2 60 D8 5B 2B 22 D2 30 80 0F 0C 00 00 00 00 10 32 54 76 98 BA 10 32 00 54 76 98 BA 00 50 00 00 7B 00 00 00 40 0F 00
  7. 10 08 1A 08 1A 1C 00 00 00 00 0C 20 24 00 40 00 F9 91 80 C0 A0 73 E7 31 00 A3 03 7E D9 78 DF C7 92 A9 60 00 07 20 21 0A 30 93 54 00 02 09 F3 41 99 FF 0F 02 00 7E F8 8E 2A C0 A6 E1 C1 BB DC 01 1A 30 02 FA 6E 4B EF EE 97 FB FB F9 5D 0D FE FF FB 50 FF FF F2 17 BF F9 DB F4 AD 83 D5 B7 FF DF FB 33 6E DC FF F7 FF F6 7A 47 77 07 FB E5 AE 8F FD 9B FB FD AF AF FF 6F B1 FB BB AF C3 DB FF 45
  8.  
  9. 36 09 58 58 19 18 06 11 12 10 2A 42 00 80 00 00 00 30 F0 30 0E 80 02 FF FF 2F 00 FF 3F 10 00 00 3F 00 00 00 00 00 00 00 00 30 47 47 47 47 06 E6 FF FF 20 A5 97 F7 03 00 30 00 00 53 55 00 1B A3 00 00 00 00 00 00 00 00 00 00 00 00 00 D8 B6 AD 00 55 01 FE 00 40 5E 5E ED B2 00 62 72 13 3B 55 30 80 0F 0C 00 00 00 00 10 32 54 76 98 BA 10 32 00 54 76 98 BA 00 50 00 00 7B 00 00 00 40 0F 00
  10. 10 08 1A 08 1A 1C 00 00 00 00 0C 20 24 00 40 00 F9 91 80 C0 A0 73 E7 36 00 A3 03 7E D9 78 DF C7 92 A9 60 00 07 20 21 0A 30 93 54 00 02 09 F3 41 99 FF 0F 02 00 7E F8 8E 2A C0 A6 E1 C1 BB DC 01 1A 30 02 FA 6E 4B EF EE 97 FB FB F9 5D 0D FE FF FB 50 FF FF F2 17 BF F9 DB F4 AD 83 D5 B7 FF DF FB 33 6E DC FF F7 FF F6 7A 47 77 07 FB E5 AE 8F FD 9B FB FD AF AF FF 6F B1 FB BB AF C3 DB FF 45





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 13 декабря 2010 01:09 · Поправил: OKOB
· Личное сообщение · #12

Может поможет www.bioscentral.com/misc/cmosmap.htm

bochs.sourceforge.net/techspec/CMOS-reference.txt

-----
127.0.0.1, sweet 127.0.0.1





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 13 декабря 2010 01:50 · Поправил: ToBad
· Личное сообщение · #13

OKOB пишет:
Может поможет --> CMOS Memory Map and other <--


Это всё читал. У Асуса CMOS 256 байт, а большая часть у каждого производителя своими данными заполнена.

В принципе появилась идея, если менять всего один байтик (а мне больше и не нужно), то вычитываем текущее значение, вычисляем разницу между тем, что хотим установить, вычитываем CRC и корректируем его согласно этой разницы. Единственная загвоздка это байт по адресу 17H во второй строке. Он на CRC не влияет, но каждый раз меняется в диапазоне 31-36H. Блин, может они позицию в меню где последний раз был туда впихнули???




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 14 декабря 2010 14:30
· Личное сообщение · #14

Разобрался! Сделал как и написал выше: ...вычитываем текущее значение, вычисляем разницу между тем, что хотим установить, вычитываем CRC и корректируем его...
Байт по адресу 17H во второй строке в расчёте не участвует, им можно пренебречь.


 eXeL@B —› Основной форум —› Изменение CMOS под Windows XP
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати