Ремонт: Ноутбуков, Компьютеров
https://vlab.su/

LENOVO G50-70-20351 (NM-A271 REV 1.0) К вопросу о DMI.
https://vlab.su/viewtopic.php?f=58&t=80957
Страница 1 из 1

ZZZ7ZZZ [ 29 сен 2018, 01:23 ]
Заголовок сообщения:  LENOVO G50-70-20351 (NM-A271 REV 1.0) К вопросу о DMI.

Предположительно, после долгого лежания села в ноль батарея. Неизвестно, в каком состоянии был оставлен бук - во сне, гибернации или будучи выключен.
От БП включался, работал, заряжал батарею, после включения работал от батареи. Но от батареи, без БП, только кратковременный старт с подъёмом всех напряжений и отключение через пару секунд. Без памяти - аналогично, только что не отключался.
Остановился на прошивке. Программатора для мульта под рукой не было, ограничился основным.
В архиве семь дампов, с основных этапов. На случай, если кому-то охота будет поковырять для общего развития.
25B64BSIG(UC3).bin - оригинал, версия 25.
001.bin - слит после обновы на 31-й под виндой, поведение не изменилось. Есть отличия в области DMI, этот момент не совсем понял. Например, два "LENV" превратились в "LENV1" и "LENV2". В дампе 31-й версии от другой машины (его нет в архиве) всё выглядит нормально.
Clean ME - 28-й viewtopic.php?p=498920#p498920
От батареи стартует на пару секунд, есть зарядка, от БП норма. Ошибка при попытке обновления, видимо из-за мульта, который уже имел 31-ю версию.
backup_SPI_001.bin - "Clean ME - 28" слитый после включения. Настройки БИОС не менялись.
Найдены отличия начиная с 006A0000 (это там, где "LENV") и 006CE000 (где, кроме прочего, ещё и MAC). Диапазон уточнялся по оригинальному дампу.
31-1.fd - нарезка с офсайта.
31-2.fd - с офсайта + 006A0000-006A1FFF от 25-го оригинала. От батареи поднимаются только дежурки, сам не отключается, от БП работает, нет зарядки.
31-3.fd - с офсайта + 006A0000-006A1FFF + 006CE000-006D6777 от 25 оригинала. Рабочий.
Реакция на кнопку и включение от БП всегда были нормальные. После каждой прошивки отключалась батарейка RTC и делался сброс перемычками. Изредка двухсекундный старт от батареи был с самого начала, с первого включения, но обычно только со второго и последующих.
Эффекты от промежуточных вариантов шитья - нет включения от батареи, тормоза (из-за ME), нет зарядки. В разных сочетаниях.

Вложение:
LENOVO_G50-70-20351(4-bad).rar

Lex66 [ 03 окт 2018, 07:52 ]
Заголовок сообщения:  Re: LENOVO G50-70-20351 (NM-A271 REV 1.0) К вопросу о DMI.

Может стоило нарезать чистый с сайта Lenovo, залить его, увидеть, что всё хорошо, кроме DMI и потом обновить DMI утилитой и после этого снять дамп - и там уже смотреть отличия?
Ты проделал большую работу, конечно. Но её можно было и сократить существенно

ZZZ7ZZZ [ 03 окт 2018, 08:57 ]
Заголовок сообщения:  Re: LENOVO G50-70-20351 (NM-A271 REV 1.0) К вопросу о DMI.

Lex66, чистый с батареи не запускался. Вот в это и упёрся. Потом было: 31-2.fd - с офсайта + 006A0000-006A1FFF от 25-го оригинала. От батареи поднимаются только дежурки, сам не отключается, от БП работает, нет зарядки.
Проще было залить комплект "основной+мульт" одинаковых версий, но не было возможности.

Lex66 [ 06 окт 2018, 09:31 ]
Заголовок сообщения:  Re: LENOVO G50-70-20351 (NM-A271 REV 1.0) К вопросу о DMI.

читал где-то что леново закрывает блок DMI маской XOR. Попадётся эта мать, проверю

Ciber SLasH [ 29 окт 2018, 05:06 ]
Заголовок сообщения:  Re: LENOVO G50-70-20351 (NM-A271 REV 1.0) К вопросу о DMI.

DMI-блок начинается в этих дампах с адреса 0x6A0000

Разобрал, как смог структуру записи переменных:
[ DMI ]
LENV = сигнатура
4 байта = не разобрался чего
4 байта = количество переменных
0x00 = 1 байт нулей
XOR-byte = байт, которым заксорены данные (в одном дампе ксор 28, в другом ксор DF)
2 байта = Checksum-16 заксоренных данных: начиная со следующего байта до конца блока (впритык пойдёт следующий блок DMI с сигнатурой LENV). Пример суммы: A16F -> 6F A1 (hex)
--
Со смещения 0x10 от начала DMI (сигнатура LENV) до конца блока DMI нужно расксорить данные. Т.е. первые 16 байт от начала DMI пропускаем, остальное копируем в WinHex, выделяем всё и делаем Edit\Modify Data...\* XOR [XOR-byte].
17 байт = не разобрался чего
0x00*15 = 15 байт нулей
:loop
55570EC26911564CA48A9824AB43 = маркер начала переменной
2 байта = тип данных (SN/ProductName/UUID/MB NAME/WINKEY...) - (прим. RsM)
1 байт = длина данных (исключая 7 нулей)
0x00*7 = 7 байт нулей
data = данные
goto loop
--------------------------------------------------------------------------------
Если нужно поправить данные, то правим расксоренные данные, заксориваем, подсчитываем сумму, прописываем сумму и обновлённые ксор-данные в дамп.

ЗЫ: написал программу DMI_decrypter для полуавтоматической правки таких DMI - тут.

Страница 1 из 1 Часовой пояс: UTC + 4 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/