|  | # www.oSLIK.ru :: Second Generation ::

Часовой пояс: UTC + 4 часа

Предыдущее посещение: 30янв 02, 2014 5:11 pm | Текущее время: 30янв 02, 2014 10:06 pm

Сообщения без ответов | Активные темы Новые сообщения | Ваши сообщения

## FAQ начинающего прошивкокопателя.

Модераторы: Шамиль Рандуев, Werefox, Admin, Советники

| [ Сообщений: 35 ] | На страницу 1, 2, 3 След.

Автор | Сообщение
--- | ---
Vovan888 |
Заголовок сообщения: FAQ начинающего прошивкокопателя. Добавлено: 30фев 01, 2006 3:04 am
Z-Team member
Зарегистрирован: 30авг 19, 2004 2:32 pm Сообщения: 897 |
======================================================================== Итак нам понадобится : 1. IDA Pro 4.8 (ищем в инете) + WinHEX 2. Документация по архитектуре ARM (12 метров дока !!!) http://dsl.ee.unsw.edu.au/dsl-cdrom/ref ... erence.pdf 3. Документация на процессор OMAP 5910 (качаем с сайта ti.com, эта документация в большинстве своем справедлива для нашего OMAP310) 4. WSSFXBI.exe - прога от Папуаса для выковыривания из свупа бинарников прошивки. (Внизу поста ссылка) 5. Программа от FCA00000 - FCAMem с установленным патчем к ней. ( см раздел Патчи ) 6. Список функций прошивки от FCA00000 - наверное самое важное в копании прошивки. O2_14_symbol.rar 7. Также пригодится SDK Симбы с плугином от сименса - SMTK. 8. Эмулятор ARM - simarm. Для детального анализа программ и прошивки. 9. Желательно знание и понимание языка С++, обьектов и тп. 10. Прямые руки (hands.dll) - обязательно. 11. Желание и свободное время - необходимо как воздух. Мои скрипты и некоторые проги: idc_files.zip Чтобы не качать SDK для работы скрипта rename.idc можно взять необходимые файлы здесь: objdump.rar cygwin1.zip sx1_sdk_libs.exe Все нижесказанное относится к прошивке WinSWUP fw 15 UK-DE-RU ======================================================================== 0 - Прежде всего: - читаем документацию по архитектуре процессора ARM, чтоб понятно было какие регистры есть, какие команды, какие условия переходов и тд. - ставим патч для FCAMem - желательно посмотреть на схему SX1, его омаповской части, чтоб представлять что к чему подключено. ======================================================================== 1-Делаем полный образ диска Z. Для этого есть два пути. --------------------------------------------------------------------------- Первый (если есть ММС) - воспользуемся прогой от FCA00000 - FCAMem. С ее помощью считываем области памяти, каждую в отдельный файл. После сохранения каждого файла переименовываем mem.bin в чтото типа mem50000000.bin. 0x50000000 длина 16Mb (0x01000000) - сам диск Z 0x58000000 длина 6кб - регистры 0x58002000 длина 26кб - регистры 0x58009000 длина 2кб - регистры 0x5800A000 длина 2кб - регистры 0x5800B000 длина 2кб - регистры 0x5800C000 длина 16кб - регистры 0x40000000 длина 8кб - память ядра 0x41000000 длина 8кб - память ядра 0x80000000 длина 32кб - память ядра 0x80400000 длина 64кб - память ядра --------------------------------------------------------------------------- Второй путь - использовние программы WSFFXBI.exe от PapuaSoft. Открываем в меню File -> Open -> WinSWUP + XB?.exe файл SWUP прошивки. Далее File -> Save -> XBI file (xbi). Мы получили файл, содержащий в себе все части прошивки OMAP. Далее распаковуем на части с помощью XBI_Extract (Serrge, Oslik.ru), получим следующие файлы: - 07102004-K1_core.img - диск Z1 - 07102004-K1_SiemensvA114_z2.plf - диск Z2 - 07102004-K1_SiemensvA114_rolf.plf - образ ROLF (диск A) - ibootcore_1_8.plf - iBoot - K1_cdriv_cd_new_fsy.plf - LFFS (чистый диск С) - SX1_15.xbz - сжатая прошивка EGold (телефонного процессора), c хешами и сигнатурами, распаковке пока не поддается. Эти файлы имеют заголовки, в которых указаны адреса с которых они загружаются. Для img файла заголовок занимает 0x100 байт, для plf - 0x0C0 байт. Поэтому при загрузке в иду заголовки удаляем. --------------------------------------------------------------------------- Рекомендую скомбинировать оба пути чтоб иметь в иде и диск Z и содержимое оперативы. Осторожно - после загрузки всего диска в Иду база будет занимать больше 100метров ! Не забывайте делать бекапы ! Рассмотрим карту памяти SX1 - физические (реальные) адреса. //flash1 - CS0 0x0000 0000 - Z1 drive (Core-Img) 0x00F0 0000 - Z2 drive (Var) 0x00FF FFFF - Z2 drive end (Var) //flash2 - CS1 - old phones 0x0400 0000 - iBoot (iBoot) 0x040A 0000 - drive A (ROLF) 0x0442 0000 - drive C (Lffs) 0x047F FFFF - drive C end карта памяти SX1 - виртуальные адреса (в симбе). //flash1 0x5000 0000 - Z1 drive (Core-Img) 0x50F0 0000 - Z2 drive (Var) 0x5800 0000 - регистры омапа мапятся сюда Немного об ибуте. Назначение ибута - выполнить прошивку телефона с компьютера по USB интерфейсу. Plf образ который в прошивке нарезан на сегменты. К счастью в этом образе осталась отладочная информация - имена функций и переменных, по которым можно разбиратся с ибутом. Запускается он при нажатии дж.центр + красная кнопка, также если TP3008 = 1 или TP3007 = 1. ======================================================================== 2 - загружаем файлы в IDA. Полученные на предыдущем этапе файлы загружаем в иду по их адресам. Первым в Иде открываем самый большой файл - от диска Z, ставим "Processor Type" в ARM, нажимаем Set, затем OK, далее Ида предлагает создать сегменты, ставим ROM start adress в 0x50000000, ROM size = 0x01000000, Loading adress = 0x50000000. Жмем ОК и ждем пока файл загрузится. Дальше File->Load file->Additional binary file загружаем дополнительные части (Z2, содержимое оперативы и тд.). Дальше рекомендую применить мои скрипты - поставить на ночь rename.idc - после этого примерно 50 процентов кода прошивки будет распознано и можно будет начинать чтолибо копать. ======================================================================== 3 - Немного моих скриптов. (Внизу поста ссылка). - rename.idc - скрипт размечает все файлы диска Z, для исполняемых размечаются таблицы экспортируемых функций, причем их названия берутся из СДК (не для всех конечно, а для тех, для которых они есть). Работает очень долго, поэтому лучше ставить на ночь Возможно придется подправить путь к lib файлам в скрипте ! - standart_regs.idc - скрипт обзывает все регистры OMAP.(см доки об OMAP5910) - virtual_regs.idc - скрипт обзывает все регистры OMAP в виртуальном адресном пространстве. - swi.idc - помечает адреса процедур обработчиков софтварного прерывания SWI. Не стесняйтесь и заглядывайте в скрипты, в некоторых надо менять пути к файлам данных. В связи с релизом файла со списком адресов всех функций для прошивки O2_14 от FCA00000, нужно использовать прежде всего его. Он подходит для нашей прошивки практически полностью. Только надо сравнивать начало файла в списке с началом в нашей прошивке - и если они не совпадают учитывать разницу. ======================================================================== 4 - Структура диска Z 5000 0000 - "Буткор симбы" эта область при включении телефона находится с адреса 0, он и получает управление при включении, здесь настраивается все оборудование, частота процессора, тайминги памяти, проверяются нажатые клавиши, нужно ли запускать ибут, так же настраивается виртуальная память, и наконец запускается Симба, предположительно ekern.exe. При нажатии на клавиши форматирования диска С происходит стирание первого сектора флеша диска С (128 К), что является признаком необходимости форматирования. 5000 0080 - здесь лежит структура TRomHeader, ее описание находится в СДК, в e32rom.h, там же лежит описание заголовка исполняемых файлов с диска Z (TRomImageHeader). 5000 4000 - ekern.exe vectors. Сдесь находятся векторы прерывания для виртуального режима, также они находятся по виртуальному адресу 0. 5000 4040 - ekern.exe .... 50F0 0000 - variant image 50F2 4538 - каталог диска Z Основные системные файлы, драйверы устройств, скомпилированы в режиме ARM, поскольку привелигерованные режимы работают только в нем. А остальные проги могут быть и в режиме Thumb. Через команды SWI осуществляется вызов функций ядра из euser.dll, то есть связь юзермода с кернелмодом. Если в патче необходимо сделать чтолибо в режиме ядра то можно использовать SWI. Так сделан патч на переключение частоты процессора из симбы. Программа вызывает функцию User:SetDebugMask, которая как мне кажется не используется ни в одной программе, далее обработчик этой функции патчится чтоб вызывать SWI 0xEB, которое не используется в системе. А уже в обработчике этого прерывания можно делать все что угодно со всеми регистрами и всей памятью. Еще одна проблема - как найти свободное место для размещения своего кода для патчей. Для маленьких вставок я использовал неиспользуемые места в прошиве. Но лучше для своих патчей взять какой либо файл, который не используется или не очень нужен, как например какая либо из стандартных мелодий. ======================================================================== 5 - Пример работы для написания простого патча. Пример моих действий при написании патча номер 61 - ; * Отменить очистку списков вызовов при смене SIM* ; * Disable_clear_logs_after_SIM_change* В данном случае все просто, просматривая список функций в Sysap.app, я обратил внимание на интересное название, которое говорит само за себя. 50854844 ; CSysApAppUi::DoSimChangedFromPreviousBootL(void) 50854844 sub_50854844 ; CODE XREF: sub_50852460+332p 50854844 10 B5 PUSH {R4,LR} 50854846 03 F0 BL j_NewL__11CSimChanged ; CSimChanged::NewL(void) 5085484A 04 1C ADD R4, R0, #0 5085484C 03 F0 BL j_CleanShared__11CSimChanged ; CSimChanged::CleanShared(void) 50854850 00 2C CMP R4, #0 50854852 05 D0 BEQ loc_50854860 50854854 20 68 LDR R0, [R4] 50854856 82 68 LDR R2, [R0,#8] 50854858 20 1C ADD R0, R4, #0 5085485A 03 21 MOV R1, #3 5085485C 02 F0 BL sub_508571F8 50854860 loc_50854860 ; CODE XREF: sub_50854844+Ej 50854860 10 BC POP {R4} 50854862 01 BC POP {R0} 50854864 00 47 BX R0 Далее делаем пробный патч для отключения данной функции, для этого нам надо произвести немедленный возврат из нее. Заменяем инструкцию по адресу : 50854846 BL j_NewL__11CSimChanged ; CSimChanged::NewL(void) заменяем на возврат из процедуры, код берем здесь же, в конце процедуры : 50854860 10 BC POP {R4} 50854862 01 BC POP {R0} 50854864 00 47 BX R0 чтоб получить строку патча, нужны исходные данные - что заменять. Их берем из окна HEX view в Иде, для надежности нужно брать не менее 16 байт. Получаем - replace:03F01BFF041C03F01EFF002C05D0:10BC01BC0047 Далее прошиваем телефон с этим патчем и удостовериваемся что он работает. _________________ Google Nexus 4 + Siemens SX1 McLaren
Вернуться к началу |

Werefox |
Заголовок сообщения: Добавлено: 30фев 01, 2006 1:53 pm
Z-Team moder
Зарегистрирован: 30янв 30, 2003 1:25 am Сообщения: 3206 Откуда: Kiev.UA |
Тупые вопросы и сообщения в стиле "вау", "круто", "а как это сделать" итд Запрещены!!! Вопросы можно задавать только по теме! Учимся, делимся опытом, спрашиваем по теме. _________________ У носорога плохое зрение, но это вовсе не его проблемы ... ... Только ValeraVi имеет право распространять исходники своей программы. Он есть правообладателем и единственным автором! Все вопросы к нему.
Вернуться к началу |

-=ZoRn=- |
Заголовок сообщения: Добавлено: 30фев 02, 2006 5:38 am
Местный
Зарегистрирован: 30июн 29, 2005 6:09 am Сообщения: 279 Откуда: с. Кневичи |
Вот та инфа которой мне когдато не хватало. А я обычно один файл загружаю - тот который расковырять надо. Вчера нашел хороший ресурс http://sobakator.samsfan.ru/knows_dissasembly.html Все хорошо рассказано в двух словах, и не надо качать 12 метров (небось еще на английском) Вопрос: rename.idc пишет имена функций или только ординалы ?
Вернуться к началу |

Komsomolets |
Заголовок сообщения: Добавлено: 30фев 02, 2006 9:07 am
Уважаемый
Зарегистрирован: 30окт 04, 2005 4:55 pm Сообщения: 537 Откуда: СССР Минск |
Было бы неплохо еще ссылки на все вышеописанные программы.
Вернуться к началу |

Nik2005 |
Заголовок сообщения: Добавлено: 30фев 02, 2006 11:01 am
Местный
Зарегистрирован: 30дек 13, 2005 4:49 pm Сообщения: 102 |
Я как понял, при использовании FCAMem. Сначало прошится надо чистой прошивкой, чтоб не каких изменений (установленных патчей) не было. А потом сливать bin. Валожи плиз ссылку на mem.bin из 15 прошивки. IDA pro 4.8 http://www.mobile-world.ru/modules.php? ... les_id=339 FCAMem http://www.siemens-mobiles.org/componen ... tach,18198
Вернуться к началу |

-=ZoRn=- |
Заголовок сообщения: Добавлено: 30фев 02, 2006 11:06 am
Местный
Зарегистрирован: 30июн 29, 2005 6:09 am Сообщения: 279 Откуда: с. Кневичи |
FCAMem можно на любую прошивку ставить (патченую/непатченую). Он сам из себя патч представляет, а прога это типа дополнение. На самом деле я так и не нашел ему практического применения, проще юзать WSFFXBI & XBIExtract. А за символы ему огромное мерси
Вернуться к началу |

Nik2005 |
Заголовок сообщения: Добавлено: 30фев 02, 2006 4:02 pm
Местный
Зарегистрирован: 30дек 13, 2005 4:49 pm Сообщения: 102 |
Значит XBI выдернул, заголовки отрезал. При загрузке в IDA, на какие адресса загружать: 07102004-K1_SiemensA114_z2.plf 07102004-K1_SiemensA114_rolf.plf ibootcore_1_8.plf K1_cdriv_cd_new_fsy.plf я как понял: 07102004-K1_core.img---0х50000000 07102004-K1_SiemensA114_z2.plf---0х50F00000 а остальные куда??? может: ibootcore_1_8.plf---0х54000000 07102004-K1_SiemensA114_rolf.plf---0х540A0000 K1_cdriv_cd_new_fsy.plf---0х54420000 Я прав? Попрате если не так.
Вернуться к началу |

Vovan888 |
Заголовок сообщения: Добавлено: 30фев 04, 2006 2:43 am
Z-Team member
Зарегистрирован: 30авг 19, 2004 2:32 pm Сообщения: 897 |
Nik2005 писал(а): я как понял: 07102004-K1_core.img---0х50000000 07102004-K1_SiemensA114_z2.plf---0х50F00000 а остальные куда??? Это правильно. Остальные файлы надо рассматривать отдельно. ibootcore_1_8.plf - это образ ибута,немного запакованный, он работает независимо от симбиана и рассматривается отдельно, прошивается с адреса 0х04000000 (физического) 07102004-K1_SiemensA114_rolf.plf, K1_cdriv_cd_new_fsy.plf - это загружать никуда не надо _________________ Google Nexus 4 + Siemens SX1 McLaren
Вернуться к началу |

-=ZoRn=- |
Заголовок сообщения: Добавлено: 30фев 04, 2006 10:55 am
Местный
Зарегистрирован: 30июн 29, 2005 6:09 am Сообщения: 279 Откуда: с. Кневичи |
Все таки мне больше нравится по одному файлу исследовать... Преимущества - анализ намного быстрее и список функций не так велик (не очень удобно искать не зная что среди 60000 строк). Назовите мне хоть одно преимущество загрузки всего дампа. Подборка необходимого файла для пофайлового анализа: Символы для uk-de-ru Конвертилка и скрипт В архиве сконвереный O2_14.symbol для uk-de-ru прошивки, сама конвертилка и скрипт именующие функции в файле. В скрипте ничего менять не надо, он сам спросит путь к файлу символов при первом запуске (а также если этого файла там потом не окажется). Для анализа требуется все го лишь загрузить файл с убранным Enabled в Analysis, скрипт сам анализирует его в THUMB режиме. ЗЫ. Уже поменялась Последний раз редактировалось -=ZoRn=- 30фев 13, 2006 4:26 am, всего редактировалось 2 раз(а).
Вернуться к началу |

DeadMan |
Заголовок сообщения: Добавлено: 30фев 04, 2006 4:10 pm
Уважаемый
Зарегистрирован: 30окт 08, 2003 10:12 am Сообщения: 585 Откуда: Екатеринбург |
маленькое предложение, тем кто смог правильно выгрузить память и загрузить все в иду с применением этих скриптов, не поленитесь выложите свою базу для начинающих, этим отпадет сразу куча вопросов и эта тема будет страницы на 3-4 меньше по опыту со сликом _________________ Siemens SL45/Siemens SX1 FW15 (спёрт)/SonyEricsson P910i - MegaFon (Уральский Джи Эс Эм)
Вернуться к началу |

Vovan888 |
Заголовок сообщения: Добавлено: 30фев 11, 2006 2:44 am
Z-Team member
Зарегистрирован: 30авг 19, 2004 2:32 pm Сообщения: 897 |
Зачем загружать сразу всю прошивку ? Для того чтобы все ссылки были связаны, то есть нажимая в Иде ENTER на ссылке которая ведет в другой файл (через заглушку конечно), попадаем сразу в этот файл, нет необходимости загружать еще одну иду. И делая поиск в такой базе поиск происходит сразу по всем файлам. Но конечно каждый работает как ему удобно Вот мой скрипт для списка от FCA00000 :rename_fca.zip Вот исходник патча для онлайн изменения частоты проца - overclock_omap_v2_3.sxp overclock_2_3_src.zip Компилится в Keil Vision 3. _________________ Google Nexus 4 + Siemens SX1 McLaren
Вернуться к началу |

Vovan888 |
Заголовок сообщения: Добавлено: 30мар 07, 2006 2:21 am
Z-Team member
Зарегистрирован: 30авг 19, 2004 2:32 pm Сообщения: 897 |
Вот на досуге написал прогу для тех кто хочет редактировать ресурсы с диска Z. Назад упаковать можно с помощью reszip мз СДК. GUI версия. (для просмотра, показывает реальные идентификаторы ресурсов, если он есть) RscUnpack.zip Консольная версия. Она просто сохраняет в несжатый формат. RscUnpackCon.zip _________________ Google Nexus 4 + Siemens SX1 McLaren
Вернуться к началу |

-=ZoRn=- |
Заголовок сообщения: Добавлено: 30мар 09, 2006 4:52 am
Местный
Зарегистрирован: 30июн 29, 2005 6:09 am Сообщения: 279 Откуда: с. Кневичи |
Мини прожка для групповой распаковки ресурсов. Выбираем SourceDir, DestinationDir и все Проверка на запакованность проверяется сначала так *.r?? а потом первый байт проверяется на 4 (не все ресурсы на З: запакованы). В DestinationDir сохраняется структура каталогов SourceDir... Для работы необходим RSCUnPackCon GroupRSCUnPack.rar
Вернуться к началу |

VasilyK |
Заголовок сообщения: Добавлено: 30мар 09, 2006 2:20 pm
Уже Не Новичок
Зарегистрирован: 30окт 11, 2005 9:13 pm Сообщения: 41 |
Хорошая дока по ARM-программированию http://kokornov.pisem.net/ARM.rar
Вернуться к началу |

Wozik |
Заголовок сообщения: Добавлено: 30мар 15, 2006 2:58 pm
Уже Не Новичок
Зарегистрирован: 30дек 08, 2004 6:07 pm Сообщения: 37 Откуда: Minsk-Vilnius |
ìîæåò ó êîãî åñòü äîêè ïî àðõèòåêòóðå ñìàðòôîíîâ, ñàìà òåîðèÿ? èëè îñíîâíûå ìîìåíòû àðì ïðîöåâ? õì. èùó ïðèíöèïû, áåç îñîáûõ óãëóáëåíèé
Вернуться к началу |

Показать сообщения за: Поле сортировки

| [ Сообщений: 35 ] | На страницу 1, 2, 3 След.

Часовой пояс: UTC + 4 часа

#### Кто сейчас на конференции
Сейчас этот форум просматривают: Grifon07 и гости: 0

| Вы можете начинать темы Вы можете отвечать на сообщения Вы можете редактировать свои сообщения Вы можете удалять свои сообщения Вы можете добавлять вложения

Найти: |
Перейти:

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Black by Daz (FI) :: Ported to phpBB3 by NeXur.
Русская поддержка phpBB
[ Time : 0.062s | 11 Queries | GZIP : Off ]