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

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Документация »   Програмный ремонт жёстких дисков HDD
RSS

Програмный ремонт жёстких дисков HDD

Програмный (и не только) ремонт классических жёстких дисков HDD /Seagate /Samsung /IBM /Hitachi /HGST /Western Digital

<<Назад  Вперед>> Страницы: 1 2 3 4 5 ... 35 36 37 38 39 * 40 41 42 43 .. 75 76 77 78 79 80
Печать
 
KALDYH
Advanced Member
Технонекромант

Откуда: Кемерово
Всего сообщений: 2355
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2009
i8088 написал:
[q]
А стоит вообще тогда это форматирование выполнять тогда, если IDNF-ы
не появились после переноса?
[/q]
Если не появились - не стоит. Даже если появились, можно попробовать просто затереть эти сектора обычной записью - вроде при этом заголовок тоже правильный переписывается.


Поверив в свои силы, считал дамп памяти с платы Jaguar и засунул в дизассемблер IDA Pro (напоминаю, ни пользоваться им, ни программировать я не умею). Попробую раскурить его и составить реальную таблицу команд на Conner. Кто-нибудь умеет идой пользоваться?
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
KALDYH написал:
[q]
Если не появились - не стоит. Даже если появились, можно попробовать просто затереть эти сектора обычной записью - вроде при этом заголовок тоже правильный переписывается.
[/q]
OK, и да обычная запись тоже помогает, я часто обычным dd из FreeBSD пользуюсь.


KALDYH написал:
[q]
Поверив в свои силы, считал дамп памяти с платы Jaguar и засунул в дизассемблер IDA Pro (напоминаю, ни пользоваться им, ни программировать я не умею). Попробую раскурить его и составить реальную таблицу команд на Conner. Кто-нибудь умеет идой пользоваться?
[/q]
Я пользуюсь DOS версией IDA 3.64, в основном для разбора x86 BIOS. В скриптах правда не силен
(да они еще неприятным образом различаются в разных версиях), но в общем во многих случаях
можно и без них обойтись. С Motorola правда не приходилось работать.

Чуть не единственная книга про IDA - это книга Криса Касперски, "Образ мышления - Дизассемблер
IDA", к сожалению недописанная.

Дизассемблерование начинайте со стартового адреса, далее видно будет, иногда может быть проще содержимое
ОЗУ реассемблировать, тут главное найти правильно точку входа (и адреса в адресном пространсве CPU). Для
примера, разборы BIOS удобно начинать с распакованного original.tmp (загрузив его по адресам 0xE0000 - 0xFFFFF,
и создав два сегмента, E и F), тогда не нужно раскручивать декомпрессор и создавать дополнительные сегменты.

Иногда можно просто искать кусочки осмысленного кода и раскручивать от них, так для x86 байт C3 это часто retn,
то есть конец подпрограммы, искать обращения к известным портам (здесь у HDD конечно тяжело), обращения
к последовательному приемопередатчику (вывод TMOS).

Байты текстовых строк сразу полезно преобразовать в строки (команда a), будет легче.

У дизассемблера этого много странностей/особенностей, но лучше него просто нет!
В общем пишите, попробую помочь чем смогу.
KALDYH
Advanced Member
Технонекромант

Откуда: Кемерово
Всего сообщений: 2355
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2009
Я скачал версию 6.8. Похожего процессора с 384 байтами ОЗУ я не нашёл, выбрал некий обобщённый. Автоанализ нашёл таблицу обрабочиков прерываний, и дальше танцуя от неё - некоторые функции. К сожалению, только небольшую часть. Далее я прошёлся по всему дампу и отметил текстовые строки. Строки очень похожи на сишные, нуль-терминированы. Между ними начали обнаруживаться подпрограммы. Удобно - преобразовал один байт как команду, разворачивает сразу целый немаленький блок. Протыкав так по всему дампу, определил его большей частью. Области адресации, ранее определённые как не содержащие памяти, скрыл - как заменить их на gap я не знаю. Затем довольно быстро нашёл функцию печати форматированной строки в терминал, обозвал её printf и поискал cross references. Их оказалось довольно много, и перед вызовом большинства из них стоил ldd #addr, где addr - адрес текстовой строки. Заменил адреса на автосгенерированные метки ранее найденных строк - код начал обретать читаемую форму, начало проясняться назначение отдельных процедур. Затем по рецету Шаклеина для коннергейтов нашёл таблицу уровней команд и от неё таблицы самих команд. Там очень просто - символ и за ним адрес подпрограммы. Пройдясь по ним, нашёл ещё несколько невыявленных блоков кода. Потом догадался пройтись по всему ранее обнаруженному мною коду и везде заменить адреса обращений к памяти на метки. Таким образом определил реальные границы ОЗУ (очевидно же, что в ПЗУ переменные храниться не могут), нашёл точки обращений к константам, ещё несколько форматированных строк и точки вызова большинства подпрограмм. Итого на данный момент известно строение 95% адресного пространства, далее пойдёт разбор формата текстовых строк, от них можно будет найти параметры, передаваемые подпрограмме печати строки и назначение некоторых переменных, также надо определить границы пространства ввода-вывода. Дальше: по коду видно различие процедур и функций, в начале идут функции. Можно попробовать их оформить. Основная задача - это, разумеется, установить назначение команд терминала, опираясь на уже известные, ну и переименовать соответствующие им процедуры. Также надо найти процедуру ввода и определить, какие и сколько параметров у каждой команды. Ещё задача - по командам работы с буферами найти механизм переключения банков памяти и узнать о нём всё: через какой порт переключается, в какое окно подставляется, где в них служебные данные найти (куски ПЗУ и серт). Практически неразрешимой частью остаётся карта портов ввода-вывода, но она особо и не нужна.

Пока основное затруднение - огромный объём монотонной ручной работы, которую хорошо бы автоматизировать, но я не знаю как.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Отлично!


KALDYH написал:
[q]
Пока основное затруднение - огромный объём монотонной ручной работы, которую хорошо бы автоматизировать, но я не знаю как.
[/q]
Это непростая задача, в случае разбора множества однотипных прошивок можно подумать о некоем скрипте, но при первом разборе
только интерактивно. К примеру возможна имитация декомпрессора (если есть), перемещения кода в ОЗУ и создания сегментов для него,
разбор неких таблиц по фиксированным адресам (актуально например при разборе BIOS плат расширения). Может еще (неуверен)
сигнатурный анализ, по характерной последовательности байт (но примеров таких скриптов не видел).

Ну а так сам анализ интерактивный по определению, в этом и достоинство IDA в сравнении с другими дизассемблерами,
которые пытаются сами интерпретировать код и спотыкаются в конце-концов.


KALDYH написал:
[q]
Дальше: по коду видно различие процедур и функций, в начале идут функции.
[/q]
Под функцией понимается подпрограмма возвращающая значения в регистре, под процедурой нет?
Я просто привык к Си, где только функции, а термин процедура отсутствует (это просто функция,
возвращающая void), ну а в ассемблере все это подпрограммы.

upd. Я забыл спросить - WD ROYL, это уже цветная серия, GREEN/BLACK/BLUE ? Процессор там уже не Marwell?
KALDYH
Advanced Member
Технонекромант

Откуда: Кемерово
Всего сообщений: 2355
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2009
К счастью, я анализирую микроконтроллер без сегментной организации, там обо всём что связано с сегментами можно забыть как страшный сон. Перемещение кода в ОЗУ на этом этапе не требуется - я работаю непосредственно с дампом адресного пространства. А вот работа с однотипными прошивками, я думаю потребуется. Попробую написать скрипт для автоматического поиска строк, автоматической подстановки меток и автоматического поиска цепочек подпрограмм, завершающихся call, jmp или rti.

i8088 написал:
[q]
Под функцией понимается подпрограмма возвращающая значения в регистре, под процедурой нет?
Я просто привык к Си, где только функции, а термин процедура отсутствует (это просто функция,
возвращающая void), ну а в ассемблере все это подпрограммы.
[/q]
Ну тут по сути тоже разделение чисто формальное. Я просто вижу, что подпрограммы в начале и конце заметно различаются по структуре, это должно что-то да значить.

i8088 написал:
[q]
upd. Я забыл спросить - WD ROYL, это уже цветная серия, GREEN/BLACK/BLUE ? Процессор там уже не Marwell?
[/q]
Граница довольно размыта. Некоторые серии могли иметь как старую, так и новую наклейку, например Atlantis, Pinnacle, Kermit. Процессор там Marvell, отличия чисто программные и они не слишком велики.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
KALDYH написал:
[q]
К счастью, я анализирую микроконтроллер без сегментной организации, там обо всём что связано с сегментами можно забыть как страшный сон.
[/q]
Да, это точно! Кстати вспомнилось, межсегментная передача управления в
AWARD BIOS исскуственно усложнена, полагаю для усложнения реверсирования.


KALDYH написал:
[q]
Граница довольно размыта. Некоторые серии могли иметь как старую, так и новую наклейку, например Atlantis, Pinnacle, Kermit. Процессор там Marvell, отличия чисто программные и они не слишком велики.
[/q]
Спасибо! А дл WD100BB-800BB старого поколения, с родным процессором WD, а также
родственных им Protege и Spartan из доступных средств только PC3000 или еще что есть?
KALDYH
Advanced Member
Технонекромант

Откуда: Кемерово
Всего сообщений: 2355
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2009
Для Caviar Cyl32 есть немного утилит от NazYura: http://nazyura.hardw.net/000006.htm
Дома у меня ещё что-то было, поищу.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Спасибо, посмотрю! Есть сложный случай с WD100 Protege, давно что-то я
пытался сделать с ним безуспешно, уже подзабыл. Как дойдет очередь до него,
попробую еще раз.

Успешно сделал перенос G->P на еще одном черном WD двухголовочном, было 8 remap
WDC WD800JD-60LUA0
WD-WMAMD3995947
FW 07.01D07
Unicorn

Над диском издевались видимо по полной, много царапин на корпусе и
Start_Stop_Count 7147; Power_On_Hours 49197
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Просматривая форумы, нашел упоминание, что у GALAXY вроде как появилась
команда A>P для переноса дефектов из G в P.

На недавно приобретенном GALAXY2D (250GB, PATA) есть один remap, решил проверить.


Age=50 Type=27 MxCyl=21C77 MxHd=2 MxSct=355 BSz=008M TCode=04040400 ThermFlts=0000

T>GALAXY2D - 2_Disk    3.AAE  08-31-06_10:00 AAE,GX_2D_4H_P,3A
Built for GALAXY2D,PITKIN,Redback,TI1810 PreAmp,Agere7531 PreAmp,McKinleyDT,2Disk,220 Servos,7200RPM,8Pole,133MHz,RwFeat=0002,VBAR

T>Eng Rev = .0G2
Compat/Hardware = .6D0
GALAXY2D - 2_Disk    3.AAE  08-31-06_10:00 AAE,GX_2D_4H_P,3A
CERT Rev = .0B5
.0B5
Mask Rom Rev = S-6B  
Orig Code = AAE3A0 TONKA2_GX_3A0.0G2.0B5        

T>V1
User Slip Defect List
Num Entries = 16C8    Checksum = 4508
Hd 0        Span Hd 1        Span Hd 2        Span
00000.0.000 000
                 00102.1.1F0 001
                 00103.1.1F0 001
....
....
                                  219F8.2.25B 001
                                  219F9.2.25B 001
SLIPPED = 176854 ALLOWED = 1800000
SLIPPED at Hd00 = 42691 Hd01 = 48086 Hd02 = 86077
T>V2
Reserved Slip Defect List
Num Entries = 0000    Checksum = 02FE
T>V4
Alt Defect List
Num Entries = 0001    Checksum = 5861
Hd 0      Offset     Hd 1      Offset     Hd 2      Offset    
                                          10B76.2.228 0000 Alt
T>/A
A>P
A>/
T>V4
Alt Defect List
Num Entries = 0000    Checksum = 23FD
T>V1
User Slip Defect List
Num Entries = 16C9    Checksum = 522A
Hd 0        Span Hd 1        Span Hd 2        Span
00000.0.000 000
                 00102.1.1F0 001
                 00103.1.1F0 001
....
....
                                  10B76.2.228 001
                                  10DEC.2.2E3 001
....
....
                                  219F8.2.25B 001
                                  219F9.2.25B 001
SLIPPED = 176855 ALLOWED = 1800000
SLIPPED at Hd00 = 42691 Hd01 = 48086 Hd02 = 86078
T>


Осталось проверить, нужен ли пересчет транслятора/форматирование после этого, завтра
поставлю на чтение всей поверхности.
KALDYH
Advanced Member
Технонекромант

Откуда: Кемерово
Всего сообщений: 2355
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2009
i8088, благодарю за проверку!
Команда добавлена в список.
<<Назад  Вперед>> Страницы: 1 2 3 4 5 ... 35 36 37 38 39 * 40 41 42 43 .. 75 76 77 78 79 80
Печать
Полигон-2 »   Документация »   Програмный ремонт жёстких дисков HDD
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS