Перейти к содержанию
Old Phone Forum

NeO_2kX

SGH Open Club
  • Постов

    363
  • Зарегистрирован

  • Посещение

Весь контент NeO_2kX

  1. Пароль остается тем же. Хотя, как мне кажется, он и не обязан меняться, так как официально Imei прошивается один раз на заводе.
  2. Проверил сейчас еще на одном eeprom'е х700. Код там оказался другой. Получается, что код прописывается исходя из каких-то данных на заводе. Скорее всего из imei и серийного номера под аккумулятором. При этом обязательно восьмизначный. Будем разгадывать...)
  3. Преамбула С каждым годом все растет технический прогресс, создается новая техника и многое другое. Но остается неизменным лишь одно звено - человек. Хоть он и двигает этот технический прогресс, но сам остается на месте. Он всегда способен совершить ошибку или забыть что-то. Производители мобильных телефонов также придерживаются этого мнения и, поэтому, встраивают различные секретные коды для быстрого спасения забывчивых пользователей. По народу давно ходят слухи о неких супер-кодах сервисных центров, с помощью которых можно быстро разблокировать телефон, защищенный кодом телефоном или попросту 'Phone lock'. Думаю, что не все верили в такие байки. Я тоже не верил, но ,однажды, обнулив eeprom и запустив телефон, было заметил, что телефон разрешает вход по коду 8х0 даже в случае смены этого кода. При этом код полностью сбрасывался на 8х0 и старый не подходил. Стало интересно. Получается, что существует некий код, который хранится в eeprom и сбрасывает пароль на стандартный. Обычная проверка Исследования проводятся на примере прошивки d500xeed2. Так выглядит обычная проверка пароля в телефоне: mcc_set_check_pw: DCM MCC_INIT_RESTORE DCM MCC_EBUF DCM MCC_TASK 0x4 0x14 0x415 DCM MCC_EDIT_START 0xA 0x29 0x400 0x97E 0 0x230A DCM MCC_IF 0x9 0x1 0xF 0 mcc_sec_clear_return_menu1 DCM MCC_ELSEIF 0x9 0x1 0x1 0 mcc_sec_clear_return_menu1 DCM MCC_ELSEIF 0x9 0x1 0x9 0 mcc_sec_exit DCM MCC_IF 0x2 0x19 0x1 0 mcc_set_reset_pw_short DCM MCC_IF 0x2 0x13 0 0 mcc_set_reset_pw_wrong DCM MCC_EDIT_END DCM MCC_RETURN Инициализируется окно, создается окно ввода, обрабатывается нажатие клавиш, а после - самое интересное: проверяется длинна пароля и его валидность. Заглянем в MCC_IF 0x2 0x13. loc_1085F8C4: ; CASE 0x0013 MOV R1, SP MOV R0, #0x3 BL _Acc_GetUnlockKey ; получаем реальный пароль MOV R0, R7 BL _Sec_GetIntPasswd ; переводим пароль из буфера текста в числовую форму LDR R1, [sP] CMP R0, R1 ; сравниваем оригинальный пароль с посчитанным BNE loc_1085F8DC MOV R0, #0x1 ; если не равны, то подтверждаем ошибку пароля B loc_1085F8DE loc_1085F8DC: MOV R0, #0x0 loc_1085F8DE: LDRH R1, [R5, #4] ; у нас R1 = 0 CMP R0, R1 BNE loc_1085F8E8 MOV R4, #0x1 ; ошибка B loc_1085F912 loc_1085F8E8: MOV R4, #0x0 ; ошибки нет B loc_1085F912 Рассмотрим Acc_GetUnlockKey. Ниже приведен сокращенный вариант Acc_GetUnlockKey для кода с параметром 3. Acc_GetUnlockKey: PUSH {R4,R7,LR} SUB SP, SP, #0x84 MOV R4, R1 ; R4 = *назначение LDR R0, =0x00000806 ADD R0, #0x5 ; 0x80B - ID кода телефона BL ReadBlockNameInRamImage ; получаем адрес участка памяти MOV R1, R0 ADD R0, SP, #0x78 MOV R2, #0xC BLX memcpy ; копируем участок из памяти в стек LDR R0, [sP, #0x78] STR R0, [R4] ; записываем число из стека ADD SP, SP, #0x84 POP {R4,R7,PC} Рассмотрим Sec_GetIntPasswd. Sec_GetIntPasswd: PUSH {R4,LR} MOV R3, #0x1 ; множитель = 1 MOV R1, #0x0 ; счетчик = 0 LDRB R2, [R0, R1] CMP R2, #0x30 ; 0x30 = '0' BCC loc_10B98298 ; если число < '0', то переходим CMP R2, #0x39 ; 0x39 = '9' BHI loc_10B98298 ; если число > '9', то переходим MOV R4, R3 MOV R3, #0xA MUL R3, R4 ADD R3, R3, R2 SUB R3, #0x30 ; R3 = R3 * 10 + (R2 - '0') ADD R1, #0x1 ; инкремент счетчика CMP R1, #0x8 BLT oc_10B9827E loc_10B98298: MOV R0, R3 BL _Sec_ChangePasswd ; добавляем 0x9a1d85 POP {R4,PC} Алгоритм довольно простой. Для большей наглядности перепишу его на языке высокого уровня Python без добавления числа 0x9a1d85. def Sec_GetIntPasswd( s ): m = 1 for i in xrange(8): ch = ord( s[i] ) if ch not in range( ord('0'),ord('9') + 1 ): break m = m * 10 + ch - ord('0') return m Если функцию вызвать как Sec_GetIntPasswd('00000000'), то получим 100000000. Если как Sec_GetIntPasswd('12345678'), то 112345678. То есть число преобразуется в 10-ю СС с добавлением единицы в начале. После к полученному числу добавляется 0x9a1d85 для большего устрашения. Из этого следует вывод, что при обычной проверке ничего странного не происходит. Пароль просто сверяется с оригиналом в несколько модифицированной форме. Проверка при включении Так выглядит проверка при включении: mcc_acc_phone_lock: DCM MCC_LOCK_FLAG 0 0x1 0 0x4 DCM MCC_INIT_RESTORE DCM MCC_DISPLAY_INDICATOR 0 0x1 DCM MCC_EBUF DCM MCC_TASK 0x4 0x14 0x838 0x4B DCM MCC_EDIT 0x4 0x9 0x400 0x838 0 0x2301 DCM MCC_IF 0x9 0x1 0xF 0 mcc_acc_sos DCM MCC_IF 0x4 0x20 0x1 0 mcc_acc_passwd_short DCM MCC_IF 0x4 0x23 0 0 mcc_acc_passwd_verify_err DCM MCC_LOCK_FLAG 0 0 0 0x4 DCM MCC_BS 0x2 0x4 0x4000 DCM MCC_INIT_RESTORE DCM MCC_REPORT 0x1 0x1 0x4 0x836 0 0x4 DCM MCC_EXIT Даже по mcc видно, что она отличается от обычной: например, другие скрипты обрабатывают проверку валидности пароля. Заглянем в MCC_IF 0x4 0x23. loc_10F70A64: ; CASE 0x0023 LDR R0, =input_pwd BL _Sec_GetIntPasswd ; переводим пароль из буфера текста в числовую форму MOV R5, R0 ; R5 = введенный код LDR R0, =0x00000804 BL ReadBlockNameInRamImage ; сразу идет считывание неизвестного ранее блока MOV R1, R0 ADD R0, SP, #0x4 MOV R2, #0xC BLX memcpy ; копирование этого блока LDR R6, [sP, #0x4] ; R6 = неизвестный код LDR R0, =0x00000804 ADD R0, #0x7 ; 0x80B - ID кода телефона BL ReadBlockNameInRamImage ; считываем блок с кодом MOV R1, R0 ADD R0, SP, #0x10 MOV R2, #0xC BLX memcpy ; копирование этого блока LDR R0, [sP, #0x10] ; R0 = код MOV R1, #0x1 LSL R1, R1, #14 CMP R5, R0 ; сравниваем введенный код с кодом BNE loc_10F70AA6 MOV R0, #0x3 STRB R0, [R7, #0xC] LDR R0, [R7, #0x14] BIC R0, R1 STR R0, [R7, #0x14] B loc_10F70ADA ; ошибки нет loc_10F70AA6: CMP R5, R6 ; сравниваем введенный код с неизвестным кодом BNE loc_10F70ACE MOV R0, #0x3 STRB R0, [R7, #0xC] LDR R0, [R7, #0x14] BIC R0, R1 STR R0, [R7, #0x14] MOV R1, #0x0 MOV R0, #0x1 LSL R0, R0, #14 BL _Sec_SetLockLevel ; устанавливаем уровень блокировки ? LDR R0, =0x068FFE85 ; 0x068FFE85 = 100000000 + 0x9a1d85, то есть это - закодированные 8х0 STR R0, [sP, #0x10] LDR R0, =0x00000804 ADD R1, SP, #0x10 ADD R0, #0x7 ; 0x80B - ID кода телефона BL SaveBlockNameInRamImage ; Записываем новый код телефона B loc_10F70ADA ; ошибки нет loc_10F70ACE: MOV R4, #0x1 ; ошибка B loc_10F70ADA loc_10F70ADA: MOV R0, R4 ADD SP, SP, #0x1C POP {R4-R7,PC} Вывод Вот и нашлась эта самая проверка. Производитель действительно позаботился о 'запасном ходе'. Вытащить его не слишком сложно. Хак-патч Для x700 был написан небольшой 'хак-патч'. После его применения на дисплее вместо imei выводится 'секретный код'. Ниже приведен его исходный код. .equ ReadBlockNameInRamImage 0x109b7358 .equ lk3_0InitEditBuffer 0x1056fd48 .equ DisplaySSReport 0x1094f710 .equ lk3_2WriteEditBuffer 0x109d9138 .equ _sprintf 0x104c0828 .start 0x10e97fcc bl lk3_0InitEditBuffer ldr r0, =0x804 bl ReadBlockNameInRamImage ldr r2, [r0] adr r1, ="%X" add r0, sp, #0 bl _sprintf add r0, sp, #0 bl lk3_2WriteEditBuffer bl DisplaySSReport b 0x10e97e00 Для x700 'секретный код' оказался равным 0x6e54471. Преобразуем его в нормальный вид: 0x6e54471 - 0x9a1d85 = 0x64B26EC = 105588460 => код = 05588460 Коды для других телефонов (не проверены) E730 - 40205192 D500 - 38298753 D600 - 37417600 D900 - 89286480
  4. Патч: United FileSystem Версия: 1.0 Раздел: Другое Описание: Объединяет память телефона и память ява-приложений. Несовместим со всеми версиями патча 'Размер папки Java'! United_FileSystem_040608.rar
  5. Я, конечно, не хочу рушить мечты, но для того же SX1( смарт кстати ) и прочих сименсов есть документация по процессору, в то время как для Philips Nexperia, используемых самсами, нет документации. Тоже касается и многого другого.
  6. Патч: JavaMediaVolume Версия: 1.0 Раздел: Java Описание: Исправляет проблему с громкостью в Java при проигрывании mp3 и др. Теперь громкость звука в Jimm и других приложениях изменяется корректно. Требует установки патча 'Перенос заставок браузера'! JavaMediaVolume_v1.0_280508.rar
  7. По поводу TrueVision. Не хотелось мне это говорить, но раз... В общем какие тут дела. Патч не сложный и просто перетащить его проблем не составляет. Оригинал патча мягко говоря не слишком грамотно написан. Я не хочу использовать оригинальный исходный код. Поймите меня правильно, я хочу сделать качественный продукт... -------------------------------------- В настоящее время ведется работа по освоению программного средства для написания патчей. Также, как указано выше ВОЛК_MAN , скоро сдавать на права. ------------------------------------- И, чтобы не быть голословным, скрин календаря из будущего графического патча(там пока есть мелкие недочеты, но общая концепция видна ). ЗЫ: все еще будет )
  8. Патч: NewGreeting Версия: 1.1 Раздел: Другое Описание: Расширяет функциональность приветствия. Полностью заменено меню 9.2.2 на более функциональное c возможностью отключения вывода приветствия, сети. Расширено количество символов для неанглийских языков. Требует установки патча 'Перенос заставок браузера'! Версия 1.1: 1) Добавлен украинский язык(спасибо ВОЛК_MAN) NewGreeting_v1.1_040508.rar
  9. Патч: NewGreeting Версия: 1.0 Раздел: Другое Описание: Расширяет функциональность приветствия. Полностью заменено меню 9.2.2 на более функциональное c возможностью отключения вывода приветствия, сети. Расширено количество символов для неанглийских языков. Требует установки патча 'Перенос заставок браузера'! NewGreeting_v1.0_030508.rar
  10. Продолжаем патчить яву Патч: Подсветка в JAVA Версия: 4.0 Раздел: Java Описание: Исправляет работу подсветки экрана при работе ява приложений. Также полностью рабоспособен эконом режим подсветки в ява. JavaLight_v4_300408.rar
  11. Поправил работу в ява окнах со стандартной софтполосой, но без заголовка. Патч: G_Java_trans Версия: 2.1 Раздел: Java Описание: Полностью исправляет проблему прозрачности отображения иконки сети в ява. Также при использовании EDGE выводится соответствующая иконка. Требует установки патча 'Перенос заставок браузера'! G_Java_trans_v2.1_290408.rar
  12. Патч: G_Java_trans Версия: 2 Раздел: Java Описание: Полностью исправляет проблему прозрачности отображения иконки сети в ява. Также при использовании EDGE выводится соответствующая иконка. Требует установки патча 'Перенос заставок браузера'! G_Java_trans_v2_290408.rar
  13. micha, насколько я понял, сброс настроек связан с X-Status'ами. Так что их лучше не менять Иначе кроме статуса придется переставить и все остальные настройки.
  14. Любителям собирать свои прошивки посвящается...) В архив входит патч и карта прошивки для редактирования цветовых схем. Патч: Реструктуризация цветовых схем оформления Версия: 1.0 Раздел: Интерфейс Описание: Реструктуризация цветовых схем оформления телефона. Не совместим с CalendarColorFix, т.к. полностью его заменяет. Использовать совместно с Resource Manager v.5.6 и выше. RestructingColorThemes_020408.rar
  15. Спасибо Lexa-700 за тестирование. Патч: Настройка времени окон информации Версия: 1.0 Раздел: Интерфейс Описание: Теперь в дополнительных настройках телефона (Меню-9-2-6) можно устанавливать время отображения окон информации. Возможные варианты: 250, 500, 750, 1000, 1250, 1500, 1750 и 2000 мс. Перед установкой удалить все альтернативные патчи. Необходима установка патча '-=Мастер патч=-', 'Перенос заставок браузера'! Несовместим с патчем 'Вибрация при дозвоне v1' ! WinTime_v1.0_310308.rar Скриншот:
  16. Патч: Русский ввод в Java Версия: 3 Раздел: Java Описание: Патч добавляет возможность ввода текста на русском языке в Java, что необходимо, например, для ICQ-клиентов. После установки патча необходимо в мидлет, в котором нужен русский ввод, добавить папку com с необходимым классом. Требует установки патча 'Перенос заставок браузера'! Отдельная благодарность SergeyL за помощь в раскрытии загадок самсунга касательно Java MIDP 2.0 P.S. В основе патча лежит идея, придуманная dan_av еще для X100, за что ему тоже выражается благодарность. Версия 3: 1)Добавлен показ текущего языка; 2)Исправлен глюк Samsung с начальным выводом режима ввода в Java; 3)Исправлены координаты иконок ввода; 4)Убрана полоса софт-клавиш при вводе символа. RusInput_v3_230308.rar
  17. Патч: Иконки в меню мультимедиа Версия: 1.1 Раздел: Интерфейс Описание: Добавляет иконку к каждому пункту в меню 'Мультимедиа'. Требует установки патча 'Перенос заставок браузера'! Идея и предоставленные иконки: Frag Staaler. Версия 1.1: Добавлен переход по пунктам меню с помощью цифровой клавиатуры. MultimediaMenuIcons_v1.1_250308.rar
  18. Патч: Убрать иконку GPRS в ява Версия: 1 Группа: Java Описание: Убирает иконку GPRS в ява-приложениях. Remove_GPRS_Icon_in_Java_v1_240308.rar
  19. Патч: Иконки в меню мультимедиа Версия: 1 Группа: Интерфейс Описание: Добавляет иконку к каждому пункту в меню 'Мультимедиа'. Требует установки патча 'Перенос заставок браузера'! Идея и предоставленные иконки: Frag Staaler. Скриншот: MultimediaMenuIcons_v1_240308.rar
  20. Патч: Перенос заставок браузера Версия: 1 Группа: Другое Описание: Переносит стартовые заставки браузера в файловую систему телефона. Файлы заставок находятся в папке 'images' телефона с именами 'wap_openwavelogo.icn' и 'wap_connecting.icn'. Разрешения заставок - 176x180. Сделан для высвобождения места под патчи. Transfering_Browser_Logos_v1_230308.rar
  21. По просьбам трудящихся... Патч: Графический фон для информационной полосы Версия: 1 Раздел: Интерфейс Описание: Добавляет возможность ставить графический фон для информационной полосы при наборе номера и др. Для замены стандартной полосы следует положить графику в папку images файловой системы телефона. Имя файла с графикой - 'ind_0X.icn', где X-номер цветовой схемы. Разрешение графики - 176x17. При остутствии графики выводится стандартный белый фон. Скриншот: Graphic_Inf_Bg_060308.rar
  22. ВОЛК_MAN, запатчил ты свою прошивку до безобразия...)) Пересобирай
  23. Исправил еще и верхнюю полосу в календаре Патч: CalendarColorFix Версия: 2 Описание: Исправляет глюк верхней и нижней полосы в календаре на первой и второй цветовых схемах. Скриншоты(до и после): CalendarColorFix_v2_030308.rar
×
×
  • Создать...