AlexeyK
-
Постов
316 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
События
Сообщения, опубликованные AlexeyK
-
-
Lestat_vampire, свяжись с автором. Это вроде просто найден неиспользуемый байт в оперативке, и там сохраняется информация для патча. теоретически можно взять любой не используемый адрес.
-
Можно ещё к стандартным и дополнительным пунктам список из Java добавить. Это конечно не просто, но за то позволит вешать на кнопки мидлеты.
-
Ни одна революция не обходится без жертв. К сожалению, в данном случае тоже. В результате библиотека конфликтует с патчами: ED, GP, Мелодиями на абонента, а также всеми патчами, использующими таблицу в патче Мелодии на абонента (в частности, Talker, MMF_Player, KeyBacklightOff v2.0).
Прежлагаю в патч ExtendedAPI добавить изменение идентификатора прошивки, например на X10XEDG1E, это сразу избавит от проблем со старыми патчами.
Ещё не прохобы добавить несколько часто используемых функций: загрузкасохранение файла, вывод картинки, проигрывание мелодии, с учетом что патчи находятся за границей 0x40000. Естественно необходимо засписать весь интерфейс использования
-
eMOT, только если идею патча. А патч писать заново.
-
list, поставь офис или скачай этот файл из сети или другого компа с офисом, после чего зарегистрируй его в системе - regsvr32.exe mscomctl.ocx
-
EvgeniyZ, как сохраняешь? по ctrl+s или через меню, у меня вроде сохраняет
-
Clin, возьми из прошивки от X460 украинскую базу T9 и залей её на место немецкой в твоём телефоне.
или есть патч на обновление русской базы, там тоже есть украинские буквы
-
AlexeyK,
А почему ASM файл не сохраняется, пока не откомпилируешь его? Получается, что нажимаешь сохранить файл, и файл действительно изменен во столько то, когда нажал сохранить, но в нем ничего не сохраняется!
в версиях старше 2006.05.03 исправлено
-
Free-man, в принципе можно, но компиляция без прошивки вызовет определённые проблемы.
Можно так пока
.macro .mcc_return
.align 2
.mcc MCC_RETURN
.endm
и потом использовать
.mcc_return
-
Заметил еще один "жук" в компиляторе. Несмотря на заявленное понимание команды
add rd, hs ; rd=rd+hs
компилятор переделывает ее в
add rd, hs, 0
Тоесть команду ADD R0,SP пришлось вводить через .byte
"жук" отловлен и исправлен
на add r1 sp
получил ADD R1, SP R1 = R1 + SP
причём для R8-R12 и раньше нормально было.
-
(Почти в самом низу) Если код перенести вверх под .binid D500XEEG3 (а код ни с чем не связан, так что можно в исходнике прописывать где угодно), то генерируется совсем другой код (в тело патча вставляется странные 16 нулевых байт)
странно, посмотрю
.include e:datadownloadsnew26resmanpropatchesother0_5task.asmОпять ошибка с путями? В прошлых версиях не нужно было прописывать пути для файлов, лежащих в одном каталоге с основным ассемблерным файлом....
догадываюсь в чём проблема, пока можно убрать путь.
Так вот, тут нужна вторая Хотя, у меня она не работает (уже писал про это ).посмотрю
-
в новой версии переделан анализ строк. желательно писать завершающую кавычку и для строк в прошивке особенно после .byte, для .string не обязательно
для записи - , " - ", перевод строки - n, табуляция - t и некоторые другие число, xчисло
PS. В настройках можно отключить новый анализ.
-
EvgeniyZ, сначала надо просканировать меню. Это работает на прошивках sysol, немного на swift и не работает на agere
-
BSWhite, можно ещё воспользоваться компилятором. Например,
00А91394: .byte "Меню"
получишь то что хошешь
-
Если там ARM совместимый процесор то подойдёт. МСС - это только для Samsung Sysol или Swift.
Если тип автоматически не определился то надо установить или убрать галку в зависимости от кода.
PC. авто определение могу сделать только если у меня будет хотябы одна прошивка.
-
Mako, есть баг, в декомпиляторе. Компилируется вроде верно.
Судя по содержимому рисунка, ты пытаешься декомпилировать какойто ресурс данных, об этом говорят надписи - "возможно это ARM код" и некоторые другие ньюансы. но баг декомпилятора налицо, но не совсем "баг"
Дело в том, что нормальная команда BLX шифруется так для Little ??F???E? (BL - ??F???F?). То что ты привёл вообще не является командой процессора.
В другой теме спрашивал как это расшифровывается, объясню здесь.
bcFafgEd - F и E обозначают команду BLX, если бы было F и F, то была бы - BL
остальные формируют половину смещения 0xabcdef старший бит знаковый. реальное смещение получается PC+4+((0xabcdef << 1) and 0xFFFFFF) для a<8 или PC+4+(0xFFabcdef << 1) для a>=8
Смещение вычисляется в обратном порядке. Только для BLX дополнительно перед высислением смещения текущий адрес PC и адрес назначания округляются до кратных 4.
.org 0x102B4FD6BLX 0x10DBD754
Результат:
102B4FD6: 00F001E8
102B4FDC: 03B40148019001BD54D7DB10
EvgeniyZ всё правильно. команды BL и BLX могут адресовать только в диапазоне плюс/минус 0x400000 байт, переход указанный тобой значительно больше, компилятор пытается компенсировать его промежуточным переходом.
___rt_udiv=0x10DBD754 это адрес самой функции, поищи адрес для этой __rt_udiv
PS. Администраторы, почему у меня не работает быстрый ответ на форуме или это не только у меня? просто не удобно без него отвечать в связи с чем стараюсь не пропускать только серьёзные вопросы.
-
Хацкер я разбирал только основную базу (LDB) пользовательские базы (UDB) хранятся в flesh, размер вроде 1 кб для X600. с ними работает другой набор функций. Их не смотрел. Раньше думал что всё сохраняется в ANSII кодировке, по этому потом нельзя восстановить русский текст, но сейчас думаю по другому. Похоже там привязка к одному языку, так как пользовательская база одна. По умолчанию 0109 (English)
-
00034E90: A0A0 ADR R0, =0x35114 ;R0 = PC + #640 = "MID_ANI dx, dy .."
регистру R0 присваивается адрес строки "MID_ANI dx, dy : %u, %u.", т.е. 0x00035114
00035114: DCB "MID_ANI dx, dy : %u, %u." ;данные для комманды по адресу 0x34E90собственно сама строка в прошивке
-
AlexeyK, у меня вопрос. Почему при загрузке файла sym у меня не устанавливаются сигнатуры, т.е. в НЕХе слева нет подписей переход на мсс_ ...? Этот файл я скачал с портала sym и map файлов от Vadiks'а. А второй файл(у меня есть еще один, правда он немного стар) работает на отлично.
а в самих символах мсс_ присутствуют? это простой текстовый файл, можно поиском посмотреть. Возможно файл получен одной из первых версий SymCreater by Javer, там не было поиска эквивалентов для МСС.
-
Открываю ARM компилятор пишу BLX off_1063782C, он выдает ошибку: "Не определена переменная
off_1063782C". Как этот переход превратить в код?
.equ off_1063782C 0x1063782C BLX off_1063782C
или
BLX 0x1063782C
для установки адреса компиляции
.org 0xXXXXXXXX
перед кодом[/code]
-
Проблема сохранилась: Открываю прошивку (X700XEEK6), загружаю файл сигнатур (sym), открываю патч (Убрать нарастающий звонок) в "Редакторе патчей", перехожу по адресу патча (10122ED0), открываю вкладку МСС и прога виснет! (Тоже самое происходит, если даже не загружать файл сигнатур и не открывать патч, а просто перейти по этому адресу (10122ED0) и перейти на вкладку МСС.)
у меня нет этой прошивки, найди такойже адрес для X700XEEJ5. Пока не удаётся повторить глюк
-
AlexeyK, извиняюсь, что не по теме, но больше мне нигде не могут подсказать. Дело в том, что при создании патча, суть которого, в том, что при выходе из написания смс мы видим окно Вы уверены? Если нажать да (левый софт), то мы выходим на рабочий стол, здесь все работает как часы, но если нажать нет, то мы возвращаемся на написание смс, но если до этого был набран текст, то сейчас его уже нет. После нескольких операций было установлено, что при нажатии на клавишу вкл/выкл очищается или обновляется, точно не знаю, экран. Вот я и хотел бы попросить тебя помочь найти это “очищение”. Если можешь, то, пожалуйста, помоги.
Посмотри MCC_EDIT_S, а там обработку события нажатий кнопок.
-
EvgeniyZ, до какой версии обновил? последня на сегодня 2006.03.25 по ссылке в подписе.
У меня Cel 950 и 512 Mb. Остальное вроде не важно. Описанных глюков не обнаружил. Приведи пример с адресами желательно для EJ5 или FA1
-
вот что удалось накопать по прошивке от X140 по базам T9
за работу с базой отвечает непосредственно 6 функции
SetDataOffset ReadByte, ReadWord и ReadNibble - последовательное чтение и GetByte, GetLong - чтение по адресу
Единицей информации в базе является полбайта и SetDataOffset адресует к полу байту. для чтения 0x20 байта выполняется следующее
r0= указатель
r1=0x40
SetDataOffset
r0= указатель
ReadByte
получили в R0 значение 0x20 байта.
примерное описание функций
void SetDataOffset(word handle, word index)
word Read....(word handle)
после чтения из базы указатель установленный SetDataOffset смещяется на размер данных. т.е. если продолжить
r0=указатель
ReadWord
в R0 будут 0x21 и 0x22 байты, причём 21 будет младшим.
За чтение заголовка базы отвечает функция InitializeLDB (одинаковая в sysol, shift, agere, в siemens наверное тоже)
описание таблиц по возрастанию адресов
1. описание кнопок для T9
2. описание кнопок для ABC
3. Указатели (простые) как правило 2 числа. их количество определяется байтом 0x6B
Указатель равен смещению от начала таблицы данных T9 (последня)
4. Указатели (сложные) состоят из коэффициента (2 байта) и смещения. Полное смещнние вычисляется как роизведение коэффициента на index из базы плюс смещение.
5. таблица ValidKeys - по 3 полубайта на индекс
6. таблица корректировки символов по 2 бита на индекс.
7. таблица индексов Instructions по 2 байта на индекс
8. коды символов пунктуации (по ним определяется завершение слов) по 2 байта на символ.
9. непосредственно база данных.единицей записи явлется полубайт (4 бита). имеет примерно такую структуру:
Key - битовая маска кнопок (0 бит- цифра 1, 1 бит - 2 и т.д.)
Instruction_key1-1 - номер буквы на кнопке для цифры бит которой включён
Instruction_key1-2 - номер другой возможной буквы для этой цифры
....
Inctruction_key1-N - последний вариант для этой кнопки
Pointers - адрес следующей наборной комбинации для этой кнопки
Instruction_key2-1 - номер буквы на кнопке для цифры бит которой включён (следующая возможная кнопка)
Instruction_key2-2 - номер другой возможной буквы для этой цифры
....
Inctruction_key2-N - последний вариант для этой кнопки
Pointers - адрес следующей наборной комбинации для этой кнопки
... и так для всех возможных кнопок.
Для хранения чисел используется оригинальный подход
в заголовке есть так называемые базы (числа)
если индекс меньше первой базы, то он записывается как есть, если больше, то величина превышения расматривается как десятки, к которым потом прибавляется следуюжий полубайт и база. Тоже самое и для превышения 2 базы, но там уже разница будет сотнями.
Для разных данных свой набор баз.
Индексы могут быть определены непосредственно в самой базе, но сделано так, что больщинство из них берётся из таблиц.
Последняя инструкция для каждой кнопки отдичается старшим битом установленным в 1. т.е. максимальная первая база не может быть больше 7 для inctruction.
во вложении описание структуры заголовка баз T9 и немного структура данных по T9 применительно к X140
У каждой базы есть 2 контрольных числа.
1. OEM_ID - сдесь закладывается производитель и язык базы
2. validateLDB - контрольная сумма файла.
и то и другое легхко вычисляется.
PS. Это в краце всё, если что не понятно спрашивайте.
- 2
Задаем вопросы по теме "Создание патчей, для начинающих"
в Программирование и реверсинг
Опубликовано
Хацкер, всё верно
SP - это R13, а значение задаётся для разных процессов разное во время инициализации телефона. в конце оперативки. Для больщинства процессов не больше 0x400 байт
PC - R15
LR - R14