PDA

Просмотр полной версии : Восстановление телефона с убитой Flash-памятью



sergione
17.01.2009, 04:29
Q: Восстановление телефона "MOTOROLA" с убитой Flash-памятью


Бывает, с нашими моторолками случается такое, что им уже ничего не помогает.
Это случается если у вас "сломалась" flash-память, в которой хранится прошивка и вся остальная программная начинка" телефона.
Против этого не помогает ПРАКТИЧЕСКИ НИЧЕГО - ни один из описанных на Мото-софте способов не помог, ВКЛЮЧАЯ ТЕСТПОИНТ! Но, однако, есть один прием, с помощью которого можно поднять телефон ДАЖЕ С УБИТОЙ flash-памятью (дальше просто флешкой)!

Симптомы:
- Ramldr при стирании выкидывает ERR Г
- MFF и PST не прошивают ничего, а только сообщают об ошибках и частично очищает память тела.

Для того, чтобы восстановить телефон, нам понадобится следующее:
- Труп телефона с убитой флешкой - 1 шт.
- Бэкап этого же телефона в рабочем состоянии - 1 шт.
- Заряженная батарейка - чем больше, тем лучше или питание от USB - датакабеля
- Программа Ramldr by Vilko (ramldr.exe) - 1 шт.
- Загрузчик к проге Ramldr (ldr_*.bin) - 1 шт.
- Любой нормальнай HEX-редактор (я пользуюсь XVI32) - 1 шт.
- Руки - чем прямее, тем лучше - 2 шт.

На самом деле, сама починка не так уж трудна, но тут есть одно противопоказание:
Если ячейки убитой флешки приходятся на критические для прошивки участки, то у
нас ничего не выйдет. У меня, к счастью, запоролся только ДРМ

Итак, план наших действий:
п0. ТП (можно без него, это на всякий случай: есть гарантия - не делайте)
п1. Поиск сломанных ячеек
п2. Деление бэкапа на куски
п3. Финальнай этап восстановления
п3а. Создание своих ldr_part*.bin'ов
п3б. Стирание и восстановление кусков бэкапа

п0. Как сделать ТП я объяснять не буду, думаю, вы без труда найдете соответствующие
статьи на Мото-софте.

п1. Поиск сломанных ячеек.

Берем ldr_*.bin, открываем его hex редактором, "прыгаем" (в XVI32 - [Ctrl]+[G])
на адрес F8 (это начало стираемой памяти), ставим значение 10 00 00 00 (4 байта подряд)
То же самое проделываем с адресом FC, только байты там будут: 12 00 00 00.
Сохраняем файл.

Коннектим телефон, загоняем в бут, в ramldr нажимаем send ramldr -> и выбираем наш
измененный ldr_*.bin(далее просто ldr)
Когда увидите err:
берете и делите область стирания (10 00 00 00 - 12 00 00 00) на два равных участка, и
изменяете ldr в соответствии с полученными адресами, чтоб было понятнее, вот пример:

Исходная область: 10 00 00 00 - 12 00 00 00
1 участок: 10 00 00 00 - 10 FF FF FF
2 участок: 11 00 00 00 - 12 00 00 00

И таким образом, можно найти "сломанные адреса", для этого нужно довольно много раз
делить ошибочную область пополам и пропускать области где все стирается как надо.

Я таким образом нашел свою область: 10 F3 FF FF - 10 F6 00 00

п2. Деление бэкапа на куски.

Так, с ячейками мы разобрались, теперь пора "порвать" бэкап.
Подсказка: адрес 10 00 00 00 в телефоне соответствует адресу 00 00 00 00 в бэкапе, и
и так для всего бэкапа.
(Прим.: "начало ошибок" - начало сбойного блока памяти, "конец ошибок" - соответственно,
конец такого блока).
Резать его надо так:
1 часть - от адреса 00 00 00 00 (10 00 00 00) до адреса ([начало ошибок] - 10 00 00 00),
называем файл part1.bin
2 часть - от адреса ([конец ошибок] - 10 00 00 00) до адреса 02 00 00 00 (12 00 00 00),
называем файл part2.bin
Все вычисления с hex - числами можете проводить в стандартнои виндовом калькуляторе
calc.exe, только поставьте "Вид"->"Инженерный" и "Режим"->"HEX"
Я не исключаю, что частей может быть больше (все зависит от того, как вы сломали вашу
флешку )

п3. Финальнай этап восстановления

п3а. Создание своих ldr_part*.bin'ов

Теперь мы должны создать ldr'ы, с помощью которых мы будем лить наш бэкап "кусками"
Делаем несколько копий нашего файла ldr и теперь называем их так (это надо только для
удобства):
ldr_part1.bin
ldr_part2.bin
и если надо делайте еще ldr'ы, мне же надо было только 2(т.к. у меня был 1 блок ошибок)
Адреса пишем так:
1). В ldr_part1.bin по адресу F8 пишем 10 00 00 00, а по FC - [начало ошибок]
2). В ldr_part2.bin по F8 - [конец ошибок], а по FC - 12 00 00 00

п3б. Стирание и восстановление кусков бэкапа.

Мы имеем на руках несколько ldr_part'ов, теперь запускаем ramldr, подключаем наш труп,
загоняем его во флешмод, отправляем ("Send Ramldr") файл ldr_part1.bin, нажимаем
"erase", ждем ACK ERASE, вводим в "base addr" число "10000000", нажимаем "send binary"
и отправляем в телефон part1.bin, потом перезагружаем тел (мне пришлось делать это
вручную, с помощью вытаскивания аккума и замыкания 4 и 5 контактов)
Аналогично поступаем с ldr_part2.bin/part2.bin, а потом пытаемя включить телефон.
Если убитый блок был некритичен, то все у нас заработает! Таким способом,
уже был восстановлен (лучше сказать "воскрешен") телефон, и теперь он 100% рабочий,
только он теперь работает ТОЛЬКО с ramldr'ом во флеш-режиме, т.к. официальнай софт
вызовет стирание его памяти

Да, я возможно ошибся насчет адресов, но какое это имеет значение, у вас все равно
они будут другие.

Прикладываю сюда программу Backup Codec Tool, которая хоть
как-то, возможно, поможет вам в нашем нелегком МОТОРОЛЬНОМ деле.