motofan logo
       
> 

МегаFAQ по Созданию, Портированию и Применению Патчей ! только в этой теме !, новых тем НЕ создавать - будут удаляться !

VanyaS
сообщение 13.2.2006, 12:46


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 12.1.2006
Пользователь №: 65 421
Модель телефона: C390

Рейтинг: 3



Инструкция по портированию патчей
Софт который нам понадобится:
SHXCoDec и какой-нибудь hex редактор, я использую русифицированный WinHEX

И так:
1) Нам понадобятся две прошивки: та под которую уже существует патч, назовём её firm1 и вторая та, под которую мы портируем патч, назовём её firm2
2) Разбираем обе прошивки на кодовые группы в SHXCoDec, нам понадобятся только CG1, остальные файлы можно удалить
3)Возьмём для примера такой патч под firm1
[Patch_Code]
003D5510: 12AB

т.е. по адресу 0065C730 мы записываем два байта 12AB

Открываем firm1_cg1.smg в winhex, нажимаем Alt+G, вводим адрес 003D5510, мы попали в то место где меняет данные патч. Мы видим, что раньше там находились байты 9A0F. Теперь нам надо найти где эти байты находятся в firm2. Открываем firm2_cg1.smg в winhex, если мы будем искать байты 9A0F то мы найдём тысячи адресов, поэтому надо выбрать паттерну побольше, выделяем в firm1_cg1.smg около 10 байт начиная с 9A0F, это 9A0F90039205889A21001C, теперь ищем эту паттерну в firm2_cg1.smg, для этого нажимаем alt+ctrl+f и копируем туда нашу паттерну и жмём ОК, мы нашли её по адресу 003D5798 это и есть наш новый адрес.
4) Исправляем патч на

[Patch_Code]
003D5798: 12AB

Всё патч портирован!

В качестве firm1 использовалась 6fr, а вместо firm2 - 70r. Gfnx был написан произвольно, чисто для примера.

Прошу не судить строго.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Splash.666
сообщение 30.4.2006, 18:42


Интересующийся
**

Группа: Пользователи
Сообщений: 90
Регистрация: 24.5.2005
Пользователь №: 43 036
Модель телефона: iPhone 3Gs 16Gb
Прошивка: 4.0

Рейтинг: 33



Автор: Hex
RISC процессоры применяются во многих маленьких девайсах типа PDA, мобильных телефонах, умных кофеварках и т.д. Разновидностей процессоров - море. Но я хотел бы рассказать про ARM, т.к. именно ARM7 процессор используется в моей мобиле.


Начнем с архитектуры ARM. ARM процессоры имеют 18 регистров. 3 из которых можно назвать служебными, т.к. их можно использовать и как любые другие:
PC - указатель на текущую команду. Ничем не отличается от других регистров, в него можно писать обычным mov
LR - Link register, специальный регистр для хранения адреса возврата при вызове процедур. Т.е. в стэк он не сохраняется, а просто ложится в регистр.
SP - типа указатель на стэк, но стэковая передача это последнее, что используется в ARM ассемблере.

У ARM процессоров есть 2 режима ARM и THUMB. ARM - режим, это 32-битный режим, а THUMB - 16 битный. Набор команд в обоих режимах практически одинаковый. Команды THUMB режима имеют длину 2 байта, ARM - 4 байта.
Описание команд thumb и ARM режима можно взять тут: http://www.atmel.com/dyn/resources/prod_do...nts/doc0673.pdf
Особенно итересно то, что многие команды оперируют сразу с несколькими регистрами. Например:
ADD R3, SP, #4
что соответствует:
R3:=SP+4
Или вот например команда сохранения регистров в стэк:
PUSH {R2-R4,R7,LR}
Это не аналог pushad из ассемблера x86. Просто в ARM ассемблере можно вот так запихивать список регистров стэк.

Данные в памяти могут быть как little endian(как у intel), так big endian (как у моторолы). Так что исследуя код стоит определиться с типом данных - это сэкономит вам кучу времени.

Для разработки программ для ARM довольно много компиляторов:
http://heanet.dl.sourceforge.net/sourcefor...ude-arm-win.exe гнушный компилер со всеми вытекающими последстивиями.
http://www.goldroad.co.uk/grARM.html - простенький ARM ассемблер.
http://www.arm.com/support/downloads/index.html - официальный набор инструментов для разроботки под ARM. Тут его не возьмешь - только покупать. Ищите в сети Edonkey.
http://www.iar.com/ - альтернативное IDE для ARM. Предлагают триальный 30-дневный вариант.

Особенности ARM ассемблера генерируемого C++ ARM компиляторами
Естественно при анализе кода различных прошивок сталкиваешься не с кодом написаным на чистом ассемблере, а на коде сгенерированом сишным ARM компилятором, и естественно тут есть чему удивиться человеку привыкнувшему к ассемблеру x86.

Вызовы функций
Конвенций вызова (cdecl, stdcall и т.д) нет! Все функции используют конвенцию похожую на борладновский fastcall. Т.е. сначала регистры, а если их не хватает то параметры передаются через стэк.

Например:
ROM:0001F4E2 MOV R0, SP
ROM:0001F4E4 MOV R2, #6
ROM:0001F4E6 ADD R1, R4, #0
ROM:0001F4E8 BL memcmp

Порядок передачи параметров соответсвует номерам регистров т.е. R0 - первый, R1 - второй, R2 - третий.
То есть для
int memcmp(
const void *buf1,
const void *buf2,
size_t count
);

buf1 = R0
buf2 = R1
count = R2

Значение возвращаемое функцией передается через R0:
ROM:0001F4E2 MOV R0, SP
ROM:0001F4E4 MOV R2, #6
ROM:0001F4E6 ADD R1, R4, #0
ROM:0001F4E8 BL memcmp
ROM:0001F4EC CMP R0, #0
ROM:0001F4EE BNE loc_1F4F4

Вызов с передачей через стэк:
ROM:000BCDEC MOV R2, #0
ROM:000BCDEE STR R2, [SP]
ROM:000BCDF0 MOV R2, #128
ROM:000BCDF2 MOV R3, #128
ROM:000BCDF4 MOV R1, #14
ROM:000BCDF6 MOV R0, #0
ROM:000BCDF8 BL FillBoxColor
То есть R0-R3 содержат координаты, а пятый параметр (цвет) - записывается в стэк.

Количество операндов можно определить только аналитически т.е. приходится анализировать вызов функции и ее пролог. Частично получить информацию о количестве аргументов исходя из того какие регистры в начале функции сохраняются в стэк. Например в THUMB режиме процессор оперирует регистрами R0-R7 и служебными. Т.е. увидев функцию начинающуюся с
ROM:00059ADA getTextBounds
ROM:00059ADA PUSH {R4-R7,LR}

можно предположить что она получает аргументы через r0,r1,r2,r3 и SP. Далее уже по вызову:
ROM:0005924E ADD R0, SP, #0x14
ROM:00059250 ADD R1, SP, #0x6C
ROM:00059252 ADD R2, SP, #0x68
ROM:00059254 ADD R3, SP, #0x64
ROM:00059256 BL getTextBounds
Видим что используются только R0-R3. То есть передается 4 параметра.

Переходы
Переходы aka jumps как обычно бывают условные и безусловные. Сами переходы могут быть как относительные так и регистровыми. Причем регистровые часто используются для переключения между THUMB/ARM режимом. Безусловные короткие переходы реализуются как команда B (branch). А длинные через регистровый переход BX (Branch with exchange). Вызовы функций делаются через BL (Branch with link), т.е. переход с сохранением адреса возврата в LR. Еще можно менять адрес выполнения записывая в регистр PC:
ADD PC, #0x64
Но компиляторы Си так себя обычно не ведут. Запись в PC они используют только в ветвлениях.

Ветвления
Они же switch. Реализуются весьма оригинально:
ROM:0027806E CMP R2, #0x4D ; 'M'
ROM:00278070 BCS loc_27807A
ROM:00278072 ADR R3, word_27807C
ROM:00278074 ADD R3, R3, R2
ROM:00278076 LDRH R3, [R3,R2]
ROM:00278078 ADD PC, R3
ROM:0027807A
ROM:0027807A loc_27807A
ROM:0027807A B loc_278766
ROM:0027807C word_27807C DCW 0xAA, 0xBE, 0xC6, 0x180, 0x186; 0
ROM:0027807C DCW 0x190, 0x1A0, 0x1A8, 0x1DE, 0x1E4; 5
ROM:0027807C DCW 0x1B0, 0x212, 0x276, 0x1FE, 0x294; 10

Сначала идет проверка номера case. Он должен быть меньше 0x4D. Если номер case выше идет переход на default case, т.е. на loc_27807A.
Далее берется адрес таблицы переходов word_27807C. В этой таблице лежат не адреса переходов а смещения! А дальше по индексу case извлекается нужное смещение и прибавляется к PC. То есть для case 0 произойдет переход к адресу
0x278078(текущее значение PC) +0xAA(смещение из таблицы) + 0x4(!!!) = 0x278126.
Приходится прибавлять 4 изза особености ARM процессоров: когда происходит операция с регистром PC - результат будет на 4 больше, как пишут в документации: "to ensure it is word aligned".

Доступ к памяти
В Thumb режиме процессор может обращатся к памяти в пределах +/- 256 байт. Поэтому доступ к памяти происходит не напрямую, а через регистровую загрузку. Т.е. нельзя напрямую обратиться к адресу 0x974170, но можно через регистр. Например:
ROM:00277FF6 LDR R0, =unk_974170
ROM:00277FF8 LDR R0, [R0]

Получили значение по адресу 0x974170. Но и это еще не все! Сам адрес переменной (0x974170) хранится тут же рядом в пределах 256 байт:
ROM:00278044 off_278044 DCD unk_974170
То есть опкод команды LDR на самом деле содержит смещение операнда для команды LDR относительно текущего адреса.

Еще есть хитрая особеность оптимизации. Если какой-то адрес в можно получить относительно другого уже использованного в текущей функции, то его получают через арифметические операции или косвеный доступ. Это означает, что если функция к примеру хочет использовать одну переменную по адресу 0x100000, а другую по адресу 0x100150. То компилятор может сделать доступ как через два отдельных адреса, так и через такой код:
LDR R0, =0x100000
ADD R0, #0xFF
ADD R0, #0x51
LDR R0, [R0]
В x86 такое можно было бы трактовать как обращение к подструктуре в переделах другой структуры. А тут это обычная оптимизация. Зачем это надо? Для того чтобы минимизировать доступ к памяти. Т.е. арифметика работает быстрее загрузки данных. Да и вообще весь код ARM ассемблера изобилует разными регистровыми вычислениями, для того их и сделали аж 16 штук, чтобы как можно реже обращаться к памяти и стэку. Изза этого стэковые переменные встречаются только в очень больших функциях. Работа со стэком ничем не отличается от x86.

Переход между режимами ARM и THUMB:
Переход в THUMB делается через вызов BX, операндом которой является регистр с выставленым в 1 битом состояния.
Переход в ARM делается через вызов BX, операндом которой является регистр с выставленым в 0 битом состояния.

Процессорный модуль IDA довольно примитивен и очень часто в попытке анализа таких переключений, большое количество THUMB кода превращает в ARM и наоборот. Вручную переключить режим кода можно нажав ALT-G и в поле Value ввести 0 для ARM режима, и 1 - для THUMB.


взял это дело из базы знаний по Assembler.

А это немного не по теме- про самсунги...но всёж..

Автор: Hex
Долго не писал и все-такое, но были на то причины. Был весь в исследованиях и теперь наконец могу поделиться инфой.


Мне удалось пересмотреть прошивки всех поколений Samsung (включая CDMA), кроме смартфонов. Во всех телефонах samsung используется ARM-совместимый процессор с набором команд ARM7TDMI. Прошивки строятся на основе трех ОС: RTCX, RTK и Nucleus. И компилировались на разных компиляторах. Я встречал прошивки скомпилированые на ADS (SDT) и IAR.
Поколения самсунгов именуют на форумах абсолютно по-разному, кто-то любит делить просто на "Гуми"/"Сувон"(два города в Корее), кто-то делит на кодовые названия "Sysol", "Agere", "VLSI", "Conexant" и "Древние". Я пришел к выводу что правильнее делить их по процессору телефона.

Процессор - Модели
OM6357(aka Sysol) - E100, E700, E720, E800, E820, S50x, X100, X460, X60x
M46 (aka Conexant) - A100, A110, A200, A300, A400, M100, T208
SkyWorks (aka Conexant) - C100, C108, C110, P510, P518
ONE-C (aka VLSI) - R2XX, Nxxx, Txxx (кроме T208)
Trident (aka Agere) - Dxxx, Qxxx, Sxxx(кроме S50x), Vxxx, C200, E105, E310, E400, E600, E710, E810, X105, X400, X42x, X450 и т.д.
MSMxxxx - все CDMA

Если какую-то модель не туда записал поправьте, только аргументировано.
Соответственно, прошивки поколений очень похожи друг на друга, а иногда просто вообще близнецы с перебитыми строками версий. Например, в x100 есть следы от E100/E700/X600, иначе зачем в прошивке есть код для работы со вторым дисплеем, камерой и IRDA которых у него в жизни не было ? :)
Естественно и OS выбирается одна на все поколение:
OM6357 - RTK OSE
M46 - RTCX
SkyWorks - RTCX
ONE-C - RTK OSE
Trident - Nucleus
MSMxxxx - неизвестно, какая-то ОС от Qualcomm известно только, что собирают их в ADS/SDT.

Если вы собрались разбираться в низком уровне, то конечно же SDK от соответсвующей ОС будет как никогда к стати. Еще очень поможет символьная информация которая встречается в некоторых архивах с прошивками. Иногда попадаются прошивки с файлами lst, sym, map, out, которые содержат информацию о прошивке очень сильно помагающую в исследованиях. В частности такие файлы встречаются практически во всех прошивках c100, s500. Для остальных моделей все более запущено и приходится довольствоваться сигнатурами сделаными с символов какой-нить прошивки из этого же поколения. Так, для M46 я смог найти только одну прошивку с символами, это была прошивка от A110. Но сигнатуры, сделаные с нее, прекрасно ложатся на A200, A300 и т.д.

Интерпретация символьной информации
Формат MAP
Map файлы содержат информацию о модулях которые вошли в прошивку и имеют вид типа:

Base Size Type RO? Name
0 20 CODE RO AAA_vectors from object file obj/isr.o
20 38e8 CODE RO C$$code from object file ../../src/t9latin.o
3908 30 CODE RO C$$code from object file obj/mmi_date.o
3938 5a4 CODE RO C$$code from object file hw_slow.o
3edc 874 CODE RO C$$code from object file rtkgo.o
и т.д.

Base - это смещение в файле прошивки.
Size - длина.
Type тип региона.
RO? - тип доступа к региону.
Name - имя оригинального файла, часть которого вошла в прошивку

Как это интерпритировать? Например так(вторая строка): Начиная со смещения 20 идет блок кода(CODE) длиной 38e8 доступ к блоку Read Only. То, что блок имеет атрибут CODE далеко не означает, что можно эту область ВСЮ сделать кодом. На самом деле это код + данные. Точно также если у блока тип DATA. Это не означает, что нужно ее делать всю данными. Без файла имен/символов эту информацию можно применять разве, что только для определения размера кода прошивки (т.е. чтобы не залезть на графику). Поэтому, рассмотрим формат SYM

Формат SYM
Sym файлы это просто кладезь информации. Имеют вид типа:
Symbol Table

AAA_vectors$$Base 000000
AAA_vectors$$Limit 000020
VectorMap$$Base 1006a3c
VectorMap$$Limit 1006a60
isr$$Base 12774c
isr$$Limit 127bb0
gl_MaskIT 1000078
Rtk_RegionCount 100564c
rtk_WorthItSched 10056a0
Rtk11_Schedule 11f5c8
и т.д.
Здесь немного проще. Соответствие имя - адрес. Но вот с адресами есть некоторые заморочки. Есть набор имен, которые содержат знак доллара, они имеют особый статус.
Символы заканчивающиеся $$Base - начало области виртуального адресного пространства, $$Limit - конец. Т.е. это информация о сегментам. Из этих сегментов можно составить карту памяти и увидеть как раскидываются части бинарника на различные адреса.
Начинать строить карту памяти надо с вот таких символов:
Image$$RO$$Base 000000
Image$$RO$$Limit 1afef4
Image$$RW$$Base 1000000
Image$$RW$$Limit 107dad4
Image$$ZI$$Base 1006a60
Image$$ZI$$Limit 107dad4
RO - Read Only т.е. это адреса где располагается код.
RW - Read/Write т.е. это RAM.
ZI - Zero Initialized, опять RAM которую забивают при включении мобилы нолями.

Т.е. можно смело создавать сегменты по этим адресам. Теперь идем дальше
AAA_vectors$$Base 000000
AAA_vectors$$Limit 000020
C$$code$$Base 000020
C$$code$$Limit 127310
C$$code$$__call_via$$Base 127310
C$$code$$__call_via$$Limit 127320
Example$$Base 127320
Example$$Limit 127324
HAL_boot$$Base 127324
HAL_boot$$Limit 12735c
RtkCode$$Base 12735c
RtkCode$$Limit 127408
SysSupportCode$$Base 127408
SysSupportCode$$Limit 12744c
boot$$Base 12744c
boot$$Limit 127654
clib$$Base 127654
clib$$Limit 12774c
isr$$Base 12774c
isr$$Limit 127bb0
C$$constdata$$Base 127bb0
C$$constdata$$Limit 1afef4
C$$data$$Base 1000000
C$$data$$Limit 1005a38
Stacks$$Base 1005a38
Stacks$$Limit 1006a3c
VectorMap$$Base 1006a3c
VectorMap$$Limit 1006a60
C$$zidata$$Base 1006a60
C$$zidata$$Limit 107dad4

Вот так интересно они друг за другом идут. Если хочется - можно поразделять на сегменты по соответствующим адресам. Но это чисто логическое разделение. Только вот в sym файле эти строки раскиданы черти как. И еще рано или поздно возникает вопрос: "почему размер кода 1afef4, если длина файла прошивки 1b6950, куда девать еще 6a60 байт?". Смотрим опять на начальную карту памяти:
Image$$RW$$Base 1000000
Image$$RW$$Limit 107dad4
Image$$ZI$$Base 1006a60
Image$$ZI$$Limit 107dad4
RAM заканчивается адресом 107dad4, блок 1006a60 - 107dad4 Zero Initialized, а чем же инициализируется блок 1000000-1006a60 размер которого, как раз 6a60? Правильно, вот теми самыми оставшимися байтами. Если проанализировать стартовый код ОС, то в процедуре инициализации RAM вы найдете это самое копирование.

В более новых прошивках можно встретить вот такие надписи:
Load$$IRAM$$Base 639a74
Image$$IRAM$$Base 2010000
Image$$IRAM$$Length 0015a4
Это следует понимать так: данные длиной 15a4 грузятся с файлового смещения 639a74 по адресу 2010000.

Продолжаем анализ символов со знаком доллара:
x$litpool$ - Literal Pool, это куски данных от функций. В конце многих функций лежат указатели, строки, константы - вот x$litpool$ указывает на начало таких констант.
x$litpool_e$ - конец Literal Pool.
$T - чисто для дебагера это адреса где происходит изменение регистра PC. Т.е. по этим адресам есть команды перехода BL/BEQ/B/BX и т.д.
$$ - адреса где происходит смена режима ARM/THUMB.
Есть еще символы C$$code, что это такое определить не смог.
Остальные имена без знака доллара - это имена констант и функций. Их можно смело юзать.
Если в архиве с прошивкой идет и MAP и SYM, то это идеальный вариант т.к. когда задаешь имя взятое из Sym можно проверить лежит ли оно в области кода по данным из Map. Если да то можно смело делать ее кодом не боясь, что будут неправильно определено код/данные.

Формат LST
Это вообще рай для реверсера в этих файлах лежит все сразу. Состоят они из пяти частей:
Image Symbol Table - символы... их смысл пока не понял
Local Symbols - понятно из имени.
Global Symbols - аналог sym файла.
Memory Map of the image - карта памяти! Вся и сразу!
Image component sizes - аналог map файла.
Информация настолько подробная, что даже указан режим процессора для каждой функции.

Формат OUT
Встретил только прошивках на Nucleus. Там могут быть два файла tlink.out и tsymb.out.
tsymb.out - обычный SYM
tlink.out - MAP файл к которому примешана какая-та, большей частью бесполезная, информация линкера.

Теперь таки вооружившись символьной информацией можно грузить прошивку в IDA.

Что делать если символов нету вообще
"Когда зубной щетки нет под рукой..." правильно, берем IDA и эмулирующий дебагер и мозги в руки.
Эмулирующий отладчик для ARM можно взять тут: http://www.lauterbach.com называется Trace32. IDA - это "must have". Для начала грузим прошивку в IDA на адрес 0. Т.е. всю прошивку грузим на адреса поумолчанию. Дальше смотрим что по адресу 0.

BOOT:00000000 B ResetHandler
BOOT:00000004 B loc_3B4
BOOT:00000008 B loc_410
BOOT:0000000C B loc_42C
BOOT:00000010 B loc_488
и т.д.

Код начинается в любом случае с нулевого адреса. Во всех samsung, и как я догадываюсь в не самсугах тоже, прошивка начинается с векторов прерываний. Это 8 команд B в ARM режиме. Т.е. 8 векторов. Адрес 0 - это вектор нулевого прерывания т.е. перезагрузки или старта прошивки. Это нулевое прерывание просто стартует мобилу, соответственно в обработчик должен вести в загрузчик системы:
BOOT:00000048 ResetHandler ; CODE XREF: BOOT:loc_0j
BOOT:00000048 MRS R0, CPSR
BOOT:0000004C BIC R0, R0, #0x1F
BOOT:00000050 ORR R0, R0, #0x13
BOOT:00000054 ORR R0, R0, #0xC0
BOOT:00000058 MSR CPSR_cxsf, R0
BOOT:0000005C LDR R3, =(InitialHWConfig+1)
BOOT:00000060 MOV LR, PC
BOOT:00000064 BX R3

Если прыжок с адреса 0 идет на несуществующий адрес - это означает что остальной код прошивки мапится на какие-то другие адреса. На какие можно довольно легко определить. К примеру есть вот такое начало:
BOOT:00000000 B 0x4003CE
А кода по адресу 4003CE нет. Смотрим тогда по смещению 3СE. Видим ARM-код. Значит получается что остальная часть прошивки смещена на 0x400000. То есть надо скопировать кусок прошивки с обработчиками перерываний, загрузить их по адресу 0, а дальше грузить прошивку с адреса 400000. Теперь код наместе. Идем дальше. Надо узнать где RAM и область портов ввода вывода. Порты обычно находятся либо в конце (адреса в районе e0000000 и выше) либо в начале памяти (до 0x200000), в зависимости от того куда грузится прошивка. Областей RAM может быть несколько. Первым делом идет инициализация портов:
BOOT:00000588 MOV R1, #1
BOOT:0000058A LDR R0, =0xE0006000
BOOT:0000058C LSL R1, R1, #0x1B
BOOT:0000058E STR R1, [R0]
BOOT:00000590 STR R1, [R0,#0x10]
BOOT:00000592 STR R1, [R0,#0x20]
BOOT:00000594 LDR R1, =loc_20102
BOOT:00000596 LDR R0, =0xE0003040
BOOT:00000598 STR R1, [R0,#4]
BOOT:0000059A LDR R1, =0x20003
BOOT:0000059C STR R1, [R0,#8]
BOOT:0000059E LDR R0, =0xE0003000
BOOT:000005A0 MOV R1, #0xC
BOOT:000005A2 STR R1, [R0,#0x24]

То есть примерно начиная с E0000000 это область портов ввода вывода, размер ее не больше сегмента поэтому можно создать сегмент размером 0x10000. Теперь идем дальше. В любой прошивке есть в RAM область, которая инициализируется нолями и область которая заполняется начальными настройками которые берутся из прошивки. Ищем циклы копирования для этого нам и понадобится дебагер.
Вот и копирование:
BOOT:000000D4 LDR R0, =0x63B018
BOOT:000000D8 LDR R1, =0x1000000
BOOT:000000DC LDR R3, =0x1045B38
BOOT:000000E0 CMP R1, R3
BOOT:000000E4 BEQ loc_F8
BOOT:000000E8
BOOT:000000E8 loc_E8 ; CODE XREF: BOOT:000000F4j
BOOT:000000E8 CMP R1, R3
BOOT:000000EC LDRCC R2, [R0],#4
BOOT:000000F0 STRCC R2, [R1],#4
BOOT:000000F4 BCC loc_E8

Копируется блок из прошивки с адреса 63B018 на 1000000. Длина = 45B38. Это первая область RAM. Теперь ищем вторую, ее инициализация нолями должна быть рядом:
BOOT:000000F8 LDR R1, =0x11ED9E4
BOOT:000000FC MOV R2, #0
BOOT:00000100 CMP R3, R1
BOOT:00000104
BOOT:00000104 loc_104 ; BOOT:00000108j
BOOT:00000104
BOOT:00000104 STRCC R2, [R3],#4
BOOT:00000108 BCC loc_100

Так и есть, забивают область с 1045B38 по 11ED9E4 нолями вот и вторая часть. Если есть какие-то области, значит будет еще инициализация нолями или копированием.
Остальные кусочки памяти можно будет находить только аналитически но основа уже есть.
Дальнейшее исследование зависит от наличия символов/сигнатур. Если есть то, все сводится к поиску нужной функции в списке имен. Что делать если нету? Для начала нужно примерно определить пределы кода и по возможности найти в коде функции. Самый примитивный и действенный способ - искать команду push, с которой начинается 60% кода в прошивке. Код прошивки обычно состоит на 90% из Thumb кода так что надо искать байт B5 (push) и пытаться сделать его кодом. Код прошивки обычно занимает менее 50 % размера, дальше идут графика и языковые ресурсы. Еще могу сказать, что очень часто в конце кода встречаются строки копирайтов, типа "Samsung corp 199x-200x ARM ADS 1.2". Кое какой код проявился, где-то 20% будет загажено самой идой, т.к. она часто не справляется с переходом THUMB/ARM. А дальше надо брать то что плохо лежит, т.е. то что оставили программисты. А что они оставили? Оставили Trace и Assert. А любой trace и assert не обходится без sprintf/printf. Надо ее найти. Найти sprintf/printf легко, нужно просто поискать строку "%s". И найти такую которая явно содержит шаблон сообщения об ошибке. По Xref находим где используется эта строка, это как раз будет sprintf, а следующая после нее будет Trace или Assert. Дальше можно исходя из сообщений об ошибках именовать функции, т.е. пройдясь по xref на функцию Trace/Assert можно найти вывод почти половины ошибок. Дальше именовать функции можно сделав поиск следующих слов:
Bad
Fail
Incorrect
Invalid
Error
Memory
File
Null
No
Critical
Abnormal
и т.д.
Вы найдете еще несколько функций вывода ошибок. Таким образом постепенно обретете информацию не основываясь ни на чем кроме самой прошивки.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
juicedddd
сообщение 28.4.2007, 19:01


Опытный
***

Группа: Пользователи
Сообщений: 123
Регистрация: 5.4.2006
Из: Сыктывкар
Пользователь №: 77 458
Модель телефона: ~E398~
Прошивка: Dream a reality_79R

Рейтинг: 169



Вот решил написать более подробный мануал по портированию патчей (со скринаим)

На примере патча для 373...49R (Корелеты в списке Java)
Будем его портировать на 46r v0.4alpha4


Имеем:
Код
[Patch_Info]
Firmware=373...49R
Description=Отображает корелеты в списке ява, позволяя запускать, удалять и устанавливать их с карты памяти
Author=Rek>pth        Идея:Valleo    Портировал:bigserg555
Version=1.0

[Patch_Code]
17BC52: 46C046C0
1AB7BE: E004
1AC460: 46C046C0
1B7096: 46C046C0
1F5624: 46C046C0


Для портирования нам потребуется:
-любой Хекс редактор, я пользуюсь WinHex 11.6
-CG1 с 49R
-CG1 с 46R v0.4alpha4

Открываем в WinHex обе CG1
Изображение

Смотрим пока 49
[Patch_Code]
17BC52: 46C046C0
1AB7BE: E004
1AC460: 46C046C0
1B7096: 46C046C0
1F5624: 46C046C0
Где -17BC52, 1AB7BE...-это офсеты (нам именно их надо найти для 46)
-46C046C0, E004...-это хекс значения (их нам менять не надо)

Нажимаем Alt+G (позиция =>перейти к смещению)
Вставляем 17BC52
Изображение

Выделяем 4 хекс значения (т.е 8 цифр)
Изображение

Нажимаем правой кнопкой мыши => Правка => Копировать блок => Hex значения

Переходим на вкладку с 46
- Нажимаем Ctrl+Alt+F (Поиск => Hex значений)

Вставляем то что мы скопировали, и ставим галочку «Сохранить позиции вхождений» (не обязательно)
Изображение

Жмем ОК
Изображение

Найдено 75 раз,sad.gif нас такое не устраиваетsad.gif

Возвращаемся на 49 и выделяем уже не 4 а к примеру 6 хекс значений (т.е 12 цифр)
Изображение

Также копируем их, переходим на 46, поиск хекс значений, вставляем, жмем ОК=> получаем
Изображение

Найдено 3 раза, вот это уже по Божески! smile.gif

Переходим на 49 и постараемся запомнить что ни будь поблизости, что бросается в глаза!!!(на скрине видно что именно)
Изображение

Запомнили!!!
Переходим на 46, опять поиск хекс значений (там уже вставлено то что мы искали до этого) просто убираем галочку «Сохранить позиции вхождений», жмем ОК, видим
Изображение

Видим что того что мы запомнили здесь не встречается !!! Жмем F3 (продолжить поиск)
Видим
Изображение

И здесь ни чего подобного нет!!! Жмем F3
Видим
продолжение в следующем посте...

Добавлено позже (28.4.2007, 23:03):
Продолжение....
Изображение

А вот тут мы как раз видим то что мы запоминали!!! Ура!!!

Жмем на надпись Offset правой кнопкой => Копировать (только не с (десятич))
Изображение

Вставляем в патч вместо 17BC52 то что получили мы т.е 514E96
Первый оффсет найден!!!
Далее надо найти для 1AB7BE

Переходим на 49.Так же переходим на адрес 1AB7BE, выделяем 2 хекс значения, копируем.
Изображение

Переходим на 46. Поиск хекс значений, ставим галочку «Сохранить позиции вхождений»
Жмем ОК
Изображение

Найдено аж 259 раз, ужас!!!
Переходим на 49 и выделим к примеру аж целую строку! И сразу запомним что нибудь!
Изображение

Переходим на 46, поиск хекс значений.
Изображение

Найдено 1 раз, и мы как раз видим то что мы запоминали!!!
Поставим курсор там где 05С0 (т.е на 05 т.к он первый) т.к нам нужен именно этот оффсет!
Жмем на надпись Offset правой кнопкой => Копировать (только не с (десятич))

Вставляем в патч вместо 1AB7BE то что получили мы т.е 508E7E

По такой же схеме ищем и остальные оффсеты.
После того как все найденно мы получим:
Код
[Patch_Info]
Firmware=[46r v0.4alpha4]
Description=Отображает корелеты в списке ява, позволяя запускать, удалять и устанавливать их с карты памяти
Author=Rek>pth        Идея:Valleo    Портировал: juicedddd
Version=1.0

[Patch_Code]
514E96: 46C046C0
508E7E: E004
509A02: 46C046C0
51D19E: 46C046C0
52E0F8: 46C046C0


Применяем патч смотрим работает или нет, если нет то значит что то не так, какой то офсет найден неправильно, это может быть и один оффсет, а может и все. Я например делаю так: если портирую патч, а он не работает, то я его сразу удаляю и пытаюсь проделать все заново только более четко просматривать все!!!

Внимание!!! Если в патче который вы хотите портировать встречается FxxxFxxx где «х» любые цифры или буквы, то этот патч уже через хекс редактор не портировать, нужен BinEdit.

Надеюсь мой мануал вас не утомил!

Скачать мануал в формате doc (570Кб)

Сообщение отредактировал juicedddd - 28.4.2007, 19:03
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
SlavUser
сообщение 29.4.2007, 15:47


Опытный
***

Группа: Пользователи
Сообщений: 138
Регистрация: 30.12.2005
Пользователь №: 63 921
Модель телефона: Motorola L6
Прошивка: R3511_G_0A.52.45R_A

Рейтинг: 14



Отличный мануал.

Спасибо.

Жаль только что подходит он для портирования "универсальных" патчей.
Может напишет кто-нибудь манул по портированию патчей через BinEdit?
Уверен что плюсы обеспеченны.






Osta
Учимся Патчить Прошивку! C помощью проги Binedit

Сообщение отредактировал Osta - 30.4.2007, 6:58
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 12.5.2007, 11:14


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



имхо надо 2 вида мануалов.
1. Портируем патч ресурсов (которые не меняются от прошивки к прошивке, например клавиши разблокирования, бутскрин, цвета в яве). Подойдет любой хексредактор.

2. Портируем патчи функций (как правило, патч содержит код 46С0, это команда NOP - "ничего не делать" - например, не проверять права доступа, не менять стиль оповещения, и т.д.). Здесь исходный код (который меняем) может меняться от прошивки к прошивке (т.к. содержит адреса переходов, разные для каждой прошивки). Для портирования чаще всего нужно дизассемблировать прошивку. (хексредактором в принципе можно, но долго - и как повезет.)

В обоих случаях подходы к поиску разные.

P.S. постараюсь мануальчик с примерами наваять smile.gif

ВОт сделал живой пример

Сообщение отредактировал AlexKooper - 14.5.2007, 5:53
Прикрепленный файл PortUSB.zip   ( 219.75 килобайт ) Кол-во скачиваний: 520
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nosik
сообщение 14.5.2007, 6:57


Новичок
*

Группа: Пользователи
Сообщений: 1
Регистрация: 14.5.2007
Пользователь №: 134 807
Модель телефона: Motor E1
Прошивка: 49R

Рейтинг: 0



FlashBackup 2.62

1. Подключаем телефон к компьютеру, устанавливаем драйвера.
2. Делаем Бекап (Обязательно!).
Изображение
3Переходим на вкладку [color=Blue][size=4]"патчи прошивок" и отключаем проверку РСА (кнопка Убрать РСА) .
Изображение
4. Выбираем фаил патча и в низу нажимаем: Создать патч отката, затем нажимаем: "Применить патч" дальше если строчка застряла на Чтении данных, или стирание памяти, То не выдергиваем шнур! Всё ровно применение патча продолжится.
Изображение
5. После того как патч установился, смотрим нет-ли никаких багов. Если вы обнаружили баг, то просто ставьте патч отката ( создаётся при применение патча

FlashBackup 3.0.058

1. Заходим в программу, выбираем профиль, устанавливаем драйвера.
Изображение
2. Делаем бекап (на всякий случай), Переходим на вкладку "Патчи прошивок", (во Flash&Backup 3 надо переходить во вкладку Другие функции) нажимаем на патчи, выбираем файлы патчей, наконец нажимаем применить патч!
Изображение
3.остальное написано выше.
Пока Всё. Если есть вопросы пишите!
С уважением Nosik.

Сообщение отредактировал Nosik - 14.5.2007, 8:17
Прикрепленный файл flashbackup_2.62.rar   ( 496.61 килобайт ) Кол-во скачиваний: 1074
Прикрепленный файл 275_fb3install.rar   ( 688.08 килобайт ) Кол-во скачиваний: 357
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Valeo
сообщение 14.5.2007, 7:57


Going eternally
*****

Группа: Почётные мотофаны
Сообщений: 459
Регистрация: 22.7.2005
Из: Україна. м. Чернігів
Пользователь №: 46 805
Модель телефона: 1
Победитель конкурса 2008


Настроение:
Дата поощрения/наказания



Рейтинг: 1003



Nosik,
Цитата(Nosik @ Сегодня, 8:57)

2. Делаем Бекап (на всякий случай!).
*


Вот когда на всякий случай - так и плохо. Надо БОЛЬШИМИ КРАСНЫМИ БУКВАМИ писать бекап ОБЯЗАТЕЛЕН .
Цитата(Nosik @ Сегодня, 8:57)

3Переходим на вкладку "патчи прошивок" и отключаем проверку РСА (кнопка Убрать РСА) .
*


Угу. Для каких телефонов???
А для версии ФБ 3.04 как?

Сообщение отредактировал Valeo - 14.5.2007, 8:01
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
gger
сообщение 15.5.2007, 8:58


Мастер
****

Группа: Пользователи
Сообщений: 275
Регистрация: 11.12.2005
Из: Н.Новгород
Пользователь №: 61 642
Модель телефона: Motorola (r)
Прошивка: Самая последняя ;)

Рейтинг: 54.5



Цитата(Valeo @ 14.5.2007, 11:57) *

А для версии ФБ 3.04 как?

поддерживаю! там все по другому! и к тому же как представитель телефона л2 требую внести поправки: для телефонов л2 и л6 ОБЯЗАТЕЛЬНО обновить версию для ФБ3 до 3.0.4, иначе можно получить труп.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Kostroma forever666
сообщение 5.7.2007, 7:42


Интересующийся
**

Группа: Пользователи
Сообщений: 89
Регистрация: 2.6.2006
Из: Kostroma
Пользователь №: 85 963
Модель телефона: Motorola L7
Прошивка: L7 Coolmp Stedt

Рейтинг: 24



Ohotnic ,
вот
Ассемблер, Бейсик, C / C++ , C#, Delphi & Kylix, Java, Java Script, Pascal, Perl, PHP, Visual Basic, VB.NET, Другие языки
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Neomoto
сообщение 5.7.2007, 8:52


Ветеран
*****

Группа: Разработчики
Сообщений: 615
Регистрация: 2.3.2006
Из: Белгород
Пользователь №: 72 604
Модель телефона: MotoZINE ZN5
Прошивка: sym X beta

Рейтинг: 481



Ohotnic,
http://realcoding.net
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Ohotnic
сообщение 5.7.2007, 12:29


Интересующийся
**

Группа: Пользователи
Сообщений: 37
Регистрация: 26.5.2007
Пользователь №: 136 129
Модель телефона: RAZR V3i, Boot 0A.30
Прошивка: R4441D_G_08.03.03R

Рейтинг: 2.5



Всем спасибо про ассемблер инфа есть.
Теперь, может быть кто-нибудь выложит сюда пример простенкого патча с комминтариями от начала м до конца, как его делали.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Neomoto
сообщение 5.7.2007, 12:34


Ветеран
*****

Группа: Разработчики
Сообщений: 615
Регистрация: 2.3.2006
Из: Белгород
Пользователь №: 72 604
Модель телефона: MotoZINE ZN5
Прошивка: sym X beta

Рейтинг: 481



Цитата(Ohotnic @ Сегодня, 16:29)

Теперь, может быть кто-нибудь выложит сюда пример простенкого патча с комминтариями от начала м до конца, как его делали.
*


Вот это и я бы хотел увидеть. Кто может, напишите пожалуйста.

Добавлено позже (5.7.2007, 17:48):
http://wasm.ru/toollist.php?list=22, только что нашел, сборник образовательных программ по ассемблеру, даже в игровой форме есть!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Ohotnic
сообщение 5.7.2007, 23:34


Интересующийся
**

Группа: Пользователи
Сообщений: 37
Регистрация: 26.5.2007
Пользователь №: 136 129
Модель телефона: RAZR V3i, Boot 0A.30
Прошивка: R4441D_G_08.03.03R

Рейтинг: 2.5



Neomoto,
Спасибо.

Но все-таки, может кто то перестанет жабиться и выложит пример патчика с подробным описанием, как его делали...

Добавлено позже (6.7.2007, 12:39):
Почитал ассемблер и понял... чушь. Просто знать ассемблер и дизассеблирование прошивки, не помогут. Ведь я же не медиум. Ковыряться в машинном коде можно хоть всю жизнь. Все таки у когото из крутых патчеров на этом форуме, должна быть хоть какая та документация по архитектруре прошивки.
Надо делиться опытом и знаниями, господа патчеры!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 6.7.2007, 7:12


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



Ohotnic, возьми готовый патч и попробуй его понять. Для начала - неплохой способ обучения. Сразу увидишь, что где как меняется в коде и что это меняет в работе телефона.
Разумеется, патч надо брать не смену символов при наборе (ресурс) - а меняющий код. Например, неудаление звонков при смене сим и т.д.

Сообщение отредактировал AlexKooper - 6.7.2007, 7:14
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 6.7.2007, 8:19


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



господа , обьединил кучу тем в одну
просьба не создавать новые с просьбами научить/показать

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

со своей стороны тоже постараюсь что-то наваять о патчах
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Ohotnic
сообщение 6.7.2007, 8:41


Интересующийся
**

Группа: Пользователи
Сообщений: 37
Регистрация: 26.5.2007
Пользователь №: 136 129
Модель телефона: RAZR V3i, Boot 0A.30
Прошивка: R4441D_G_08.03.03R

Рейтинг: 2.5



Почитал мануал AlexKooper, нормально можно понять. Но хотелось бы подробный мануал и для тех ето знает ассемблер (или будет знать), то есть портирование патчей с помощью дизассеблирования.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 6.7.2007, 13:34


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Как создавать патчи с 0-вым знанием и без Иды.
Это фак для начинающих патчеров чтобы на выходных заняться чем было :-)
В коде прошивки большинство чувствует себя как слепые котята: мало что говорит куча
цифробуквенносимвольных данных СG1, открытой в НЕХ-редакторе..
Однако нам на помощь прийдут как не странно наши LangPack и DRM. Да-да, именно они.
Вначале бёрем программу SHXCoDec и в ней Utilites - и выбираем файл вашего Ленга
( ххCG4.smg или ххCG4.bin ) и нажимаем Open LangPack (см. рисунок)
Прикрепленное изображение
в поле Languages появились языки, которые содержит ваш LangPack.
Выбираем Русский (Id 23) и нажимаем Parse Language. В поле Text появились фразы русского
языка с Id строк и их содержанием. Нажимаем SaveString - Russian.txt - Save (см. рисунок)
Прикрепленное изображение
таак.. :-) открываем этот Russian.txt в блокноте и видим примерно такое:
Код

это ID | это фраза телефона
-----------------------------------------  
0001 | Память переполнена
0002 | 0 минут
0003 | за 1 день
0004 | 1 час
0005 | за 1 час

.....и т.д. (фразы и ID вашей прошивки будут другими !)
что же мы получили ? а получили мы указатели на фразы, только в прошивке они идут
в виде 01 00 хх хх где хх хх - это ID строки из ленг пака ! Давайте к примеру поищем
где у нас идёт в прошивке фраза "Прим. как анимац. при вкл." , смотрим по Russian.txt ...ага
"153A | Прим. как анимац. при вкл." тоесть её ID=15 3А открываем CG1 от прошивки в НЕХ-редакторе
и задаём поиск 01 00 15 3А таак.. нашло 2 раза.. :-) и во второй раз интересно так (см. рисунок)
Прикрепленное изображение
что это ? этот указатель окружен другими указателями на фразы из вашего ленгпака !
скопируем эти указатели и поищем-ка соответствия в нашем Russian.txt по ID фразы :
01 00 09 2D - таак ищем значит 092D в Russian.txt - получается 092D | Фон дисплея
01 00 16 85 1685 | Фон при открытии
01 00 16 84 1684 | Фон при закрытии
01 00 08 79 0879 | Заставка дисплея
01 00 0B 0D 0B0D | Стартовая анимация
01 00 15 40 1540 | Запись справочника
01 00 03 56 0356 | Отправить
01 00 15 42 1542 | Отправить в сообщ.
01 00 15 28 1528 | Отправить в Blog
01 00 17 02 1702 |
01 00 14 91 1491 | Просм. альбом
00 00 00 00
01 00 15 44 1544 | Перекл. устр. хран.
01 00 08 7E 087E | Только сохранение
01 00 15 3D 153D | Применить как фон
01 00 16 B8 16B8 | Устан. как открытый фон
01 00 16 B7 16B7 | Устан. как закрытый фон
01 00 15 3C 153C | Применить как заставку
01 00 15 3A 153A | Прим. как анимац. при вкл.
01 00 15 6F 156F | Применить к справочнику
00 00 00 00 00 00 00 00
01 00 14 57 1457 | Съемка с таймером
00 00 00 00 00 00 00 00
01 00 16 A4 16A4 | Уст. контрастности
01 00 16 42 1642 | Стиль картинки
01 00 16 9C 169C | Добавить рамку картинки
01 00 16 A1 16A1 | Изменить рамку картинки
01 00 16 9E 169E | Имя картинки
01 00 03 89 0389 | Масштаб
01 00 15 13 1513 | Изм. разм. картинки
00 00 00 00
01 00 08 75 0875 | Картинка
01 00 14 93 1493 | Альбом картинок
01 00 05 7F 057F | Параметры
01 00 16 A0 16A0 | Параметры изменения
01 00 08 77 0877 | Переименовать
01 00 01 C9 01C9 | Удалить
01 00 01 CF 01CF | Редактировать
01 00 0A 37 0A37 | Упорядочить
01 00 15 26 1526 | Переместить
01 00 01 C4 01C4 | Копировать
01 00 15 24 1524 | Метка
01 00 15 25 1525 | Отметить все
01 00 01 CA 01CA | Удалить всё
01 00 0A C8 0AC8 | Категории
01 00 15 3E 153E | Назначить категории
01 00 15 41 1541 | Настройка камеры

таак .. это у нас значится менюшечки и судя по наборам - это меню из
картинок и камеры, хорошо.. можно что-то поменять, к примеру
вместо 01 00 15 42 ( Отправить в сообщ. ), что идёт первым
в меню сохранения фото из камеры поставить 01 00 08 7E ( Только сохранение ).
Но тогда возникает проблема в меню списка картинок, там тоже поменяется вместо
Отправить в сообщ. будет Только сохранение , что некрасиво и нерабочее, но
методом проб получаем, что если поставить 01 00 08 75 ( Картинка ), то
она будет первой и в сохранении камеры (и при нажатии её фото сохраниться)
и в картинках (при нажатии на неё инициализируется камера) что уже удобнее!
пишем патч: смотрим смещение нашей фразы Только сохранение в НЕХ-формате
Прикрепленное изображение
и ставим его в патче после него двоеточие и указатель на строку Картинка, получается:
Код

[Patch_Code]
2E1C5C: 01000875

у вас и смещение и указатель будут другими ! для вашей прошивки !
сохраняем в kart.fpa и патчим во FlashBackup. Всё, у нас первым идёт не Отправить в сообщ.
Прикрепленное изображение + Прикрепленное изображение
а Картинка :-) , но можно пойти ещё хитрее, у меня например не было Масштаба, тогда я
заменил 01 00 15 25 ( Отметить все ) на 01 00 03 89 ( Масштаб ) и он заработал !
Таким поиском указателей на фразы Ленгпака можно находить некоторые функции,
которые уже становятся не обезличенным набором знаков, а более знакомым кусочком.
Таким образом возможно не только перестроить некоторые менюшки, а и добавить
некоторый отсутствующий функционал в них. Возможно понадобиться правка в seem 0032..
не у всех же есть Изм. разм. картинки или Добавить рамку картинки ?
Hа этом я устал и про DRM расскажу в следующий раз. Faq-и будут становиться сложнее,
так что желательно пробовать Вам сначало с простенького. Программы указанные в посте
Прикрепленный файл SHXCoDec_______editor.rar   ( 1.26 мегабайт ) Кол-во скачиваний: 321

ссылка на тему как работать с программой Shxсodec

Сообщение отредактировал Osta - 13.7.2007, 12:12
Прикрепленный файл SHXCoDec_______editor.rar   ( 1.26 мегабайт ) Кол-во скачиваний: 321
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 13.7.2007, 13:03


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



после выхода моего FAQ "Как создавать патчи с 0-вым знанием и без Иды" я получил
много писем в ПМ и в сообщений в асю типа "а как патчить с помощью DRM?"
Тоесть меня неправильно поняли, своими постами я пытаюсь ответить на вопрос
Цитата(Ohotnic @ 6.7.2007, 1:34)

Почитал ассемблер и понял... чушь. Просто знать ассемблер и дизассеблирование прошивки, не помогут. Ведь я же не медиум. Ковыряться в машинном коде можно хоть всю жизнь.
*


Я расписываю указатели, чтобы прошивка и процедуры в ней стали более менее "находимы"
в коде, чтобы прошивка не казалась просто набором цифр и знаков. С помощью указателей
на ленг можно находить функции, где они задействованы. Тоесть слова
"Во время записи голосового комментария, удерживайте клавишу Голос" не будут находиться
около процедур Веб-браузера, а будут около Диктофона. :-)
Также можно находить функции с
помощью указателей на DRM картинки в CG1 и делать мелкий патчинг. Сами процедуры
процентов на 60 начинаются сo значения B5 и найдя указатель на ленг вида 01 00 хх хх
или указатель на DRM можно поиском вверх выражения B5 найти связанные функции.

Указатель на DRM в прошивке прописан в виде 12 00 хх хх где хх хх - это число в НЕХ значении
номера картинки из DRM. Вы, с помощью программы drmport от нашего мотофановца lucrece ,
можете разобрать свою прошивку (File - open) и найти все картинки из DRM в папке программы
по пути диск\drmport\binary1\drmpack\gifs. Там находятся gif файлы и в их имени идёт номер.
Этот номер нужно перевести в НЕХ формат
(в программе drmport пока нет выбора как нумеровать gif в DEC или НЕХ )
возьмем к примеру картинку Будильника под № 496 (на вашей прошивке № будет другой !)
вот она Прикрепленное изображение . Переведём её в НЕХ формат. Включаем Калькулятор Windows
ставим Вид - Инженерный пишем 496 и ставим точку на НЕХ, получается 1F0
подставляем в указатель на DRM = значит нам нужно искать 12 00 01 F0 ... хорошо..

Открываем CG1 от нашей прошивки в НЕХ-редакторе и Seach - Find - HEX String - 12 00 01 F0
найдено 2 совпадения. Возьмём второе. Прикрепленное изображение
чуть ниже видны даже слова типа "Будильник .. напоминание .. формировать контекст.."
значит это наша иконка будильника, которая высвечивается при срабатывании будильника :-)
вот она Прикрепленное изображение может заменим на прикольную и побольше?
в DRM её менять нельзя (помните на неё 2-ва указателя !) первый указатель 100% в списке будильников,
тоесть замена в DRM повлечёт за собой косяк неотображения этого значка в списке будильников.

Что делаем : ищем в Drm неиспользуемую картинку, к примеру под № 148.gif Прикрепленное изображение
вы её когда-то видели ? я - нет. Её то мы и используем. Меняем её в DRM на побольше и прошиваем её.
Как менять картинки в DRM описано в теме поддержки программы В Помощь Drm-мастеру Замена Shxcodec
Заменили картинку и прошили DRM ? Тогда пишем патч - меняем указатель вместо будильника на
картинку № 148. Переводим 148 в НЕХ формат = 94

Код

[Patch_Info]
Firmware=R365_G_0B.D3.08R
Description= new picture AlarmClock
Author=Osta

[Patch_Code]
8DFA4: 12000094

[Patch_Undo]
8DFA4: 120001F0

прошиваем патч в телефон и видим, что у нас в списке будильников осталась иконка старая,
а при срабатывании будильника - Прикрепленное изображение

Вот и так оказывается можно искать нужные функции и мелко патчить нашу прошивку :-)
№ картинок из DRM и Адреса для патчей на вашей прошивке будут другими, отличными от указанных !!

Всем удачного поиска и патчинга !

Сообщение отредактировал Osta - 13.7.2007, 13:09
Прикрепленное изображение Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 13.7.2007, 13:41


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Ой гигабайтный тебе спасибо, Osta. Очень ждал.

Сообщение отредактировал DmT - 13.7.2007, 13:41
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Zakk_Wilde
сообщение 18.7.2007, 14:23


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 15.2.2007
Из: ODESSA
Пользователь №: 122 584
Модель телефона: Motorola E398=>E1&Z3
Прошивка: MpxFinal 373...49R

Рейтинг: 0



Ну и ну, прочитал 2 раза вниматочно smile.gif . Первый FAQ чего-то до меня не дошёл окончательно, особенно
Цитата(Osta @ 6.7.2007, 16:34) *

............................................................................................к примеру
вместо 01 00 15 42 ( Отправить в сообщ. ), что идёт первым
в меню сохранения фото из камеры поставить 01 00 08 7E ( Только сохранение ).
Но тогда возникает проблема в меню списка картинок, там тоже поменяется вместо
Отправить в сообщ. будет Только сохранение , что некрасиво и нерабочее, но
методом проб получаем, что если поставить 01 00 08 75 ( Картинка ), то
она будет первой и в сохранении камеры (и при нажатии её фото сохраниться)
и в картинках (при нажатии на неё инициализируется камера) что уже удобнее!



Со 2-м FAQ вроде всё понятно. Thanks за то что не поленился всё это расписарить. Respect from Odessa!!!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
~Gangs2er~
сообщение 18.7.2007, 21:26


MotoSkinner
****

Группа: Разработчики
Сообщений: 248
Регистрация: 4.8.2006
Из: Екатеринбург
Пользователь №: 93 787
Модель телефона: (M) E398
Прошивка: У вас такой нету))

Рейтинг: 217.5



Osta! Супер! огромное спасибо. хотелось бы ещё понять, как находить адреса, чтобы например убрать всплывающее окно блокировки.
ну и как удалять пункты меню! ато пробовал нулями забивать, но тогда остаётся пустая строка(:
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
SpyHEX
сообщение 18.7.2007, 22:06


Мастер
****

Группа: Пользователи
Сообщений: 175
Регистрация: 9.7.2007
Из: страны непуганных идиотов
Пользователь №: 140 861
Модель телефона: -=/\/\=-
Прошивка: -=]|[=-

Рейтинг: 48



Цитата
ну и как удалять пункты меню! ато пробовал нулями забивать, но тогда остаётся пустая строка(:


Для удаления пункта меню находим в лэнге пустую строчку например:
Цитата
...
1701 | Спорт
1702 |
1703 | Verizon CDMA
...

Далее, например, у нас по адресу:
Цитата
2E1014: 01000877 ; Переименовать

меняем на
Цитата
2E1014: 01001702

Теперь пункт удален.

З.Ы.: Искать значения пустой строки надо сперва в лэнге. Они различаются. Данное значение 1702 для прошивок 2.2FR/3.08R может и для других 365-ых. Так же где-то видел что на 49R для удаления пункта меню использовали значение 0100116F ; Отправить в blog, но на 2FR это не сработало: Появилось меню Отправить в blog (даже два, т.к. я хотел удалить два пункта), при выборе которого вылетаешь обратно в Мультимедиа.
2. Удаляться могут не все пункты (сам пока не проверял).

Сообщение отредактировал SpyHEX - 18.7.2007, 22:49
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
~Gangs2er~
сообщение 19.7.2007, 16:49


MotoSkinner
****

Группа: Разработчики
Сообщений: 248
Регистрация: 4.8.2006
Из: Екатеринбург
Пользователь №: 93 787
Модель телефона: (M) E398
Прошивка: У вас такой нету))

Рейтинг: 217.5



SpyHEX, спасибо конешно. но так тоже не катит. всё равно остаётся пустая строка.
Two all, ну кто нить хоть, дайте ответы на 21 пост.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 20.7.2007, 6:33


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(~Gangs2er~ @ 18.7.2007, 23:26)

ну и как удалять пункты меню!
*


или как написал SpyHEX, или переделывай все ненужные пункты
в меню на такой же ненужный типа "Отправть в blog" и отключай
этот blog в seem 0032
SEEM 0032_0001, Смещ-е 73 h/115d, Бит 1 (Абс.бит 921): BLOG_AVAILABLE - вЫкл


Цитата(~Gangs2er~ @ 18.7.2007, 23:26)

бы ещё понять, как находить адреса, чтобы например убрать всплывающее окно блокировки.
*


ну методы нет.. если конкретно убрать окно блокировки,
то возьми патч на 365_08R
Код

[Patch_Info]
Firmware=R365_G_0B.D3.08R
Description=no block info
Author=Osta

[Patch_Code]
00FA5F2: 46C046C0

и CG1 от этой прошивки части CG1 популярных прошивок для портаций патчей
открой эту 08R и перейди на адрес указанный в патче ( 00FA5F2 )
набери в поиске B5, нажми искать вверх, найдёт - жми Mark block,
потом нажми искать вниз, найдёт - жми Mark block. Тоесть ты выделишь
всю эту процедуру, где выплывает окно блокировки.. а может ещё что-то в ней, неважно.
Вот так получиться Прикрепленное изображение
Затем смотришь в своем ленге № фразы "Нажмите Меню, затем * для блок./разбл."
это номер 0291 .
Открываешь CG1 от своей прошивки и в поиске задаёшь указатель на эту фразу
01 00 02 91 у меня на R373_G_0E.30.49R нашло эти байты дважды. Но и на прошивке 08R
этих указателей тоже 2-ва. А патчиться между ними. Маркируем все байты между этими
двумя указателями. Становимся на второй указатель.
Смотрим, что стоит перед байтами, которые патчаться в 08 - это 1С 29 1С 20
Задаём в поиске вверх 1С 29 1С 20. Нашли - Прикрепленное изображение
и потом проверяем своими патчами, подставляя только свои адреса, т.к. в изначальном патче
вносимые изменения ( 46C0 46C0 ) - это 2-ва NOPa, тоесть "пустышки"

Код

[Patch_Info]
Firmware=R373_G_0E.30.49R
Description=no block info
Author=Osta

[Patch_Code]
4592CA: 46C046C0

патчим и смотрим..

Сообщение отредактировал Osta - 20.7.2007, 8:05
Прикрепленный файл 49R_no_block_info.zip   ( 295 байт ) Кол-во скачиваний: 314
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
~Gangs2er~
сообщение 20.7.2007, 8:05


MotoSkinner
****

Группа: Разработчики
Сообщений: 248
Регистрация: 4.8.2006
Из: Екатеринбург
Пользователь №: 93 787
Модель телефона: (M) E398
Прошивка: У вас такой нету))

Рейтинг: 217.5



Osta, спасибо! только вот про первое если я хочу удалить общий сброс и общую очистку, как это сделать?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 20.7.2007, 9:20


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(~Gangs2er~ @ Сегодня, 10:05)

если я хочу удалить общий сброс и общую очистку, как это сделать?
*


я так понял, что ты хочешь удалить из меню эти пункты ?
я пробовал, не получилось удалить их, а получилось так :
Комната Тестирования Патчей. Нужны быстрые тестеры
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 21.7.2007, 17:27


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Я нашёл способ окончательно удалить строчку.
Вот только он немного геморойный biggrin.gif
Нужно перестроить меню так чтобы удаляемый пункт меню оказался последним.
Затем на месте удаляемого пункта вместо 0100xxxx пишем 02000000.
Всё. Пункт не отображается.
Если после удаляемого пункта есть ещё пункты, то они тоже удалятся.
На общей очистке не пробовал. Но это пока.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
~Gangs2er~
сообщение 25.7.2007, 20:50


MotoSkinner
****

Группа: Разработчики
Сообщений: 248
Регистрация: 4.8.2006
Из: Екатеринбург
Пользователь №: 93 787
Модель телефона: (M) E398
Прошивка: У вас такой нету))

Рейтинг: 217.5



Osta, про окно блок, разблок, нужные байты патчаца( закрываются нопами), их находить методом тыка, то есть между указателями лэнга? Или есть др способ, найти где патчить?

Добавлено позже (25.7.2007, 23:56):
И ещё вопрос! Решил тут в яве при нажатие на красную кнопку менюшку местами поменять! Сделал пункт возобновить первым, но при нажатие на него выполняеться ф-я пункта приостановить. Как переписать ф-ю на Возобновить?

Добавлено позже (25.7.2007, 23:57):
И ещё вопрос! Решил тут в яве при нажатие на красную кнопку менюшку местами поменять! Сделал пункт возобновить первым, но при нажатие на него выполняеться ф-я пункта приостановить. Как переписать ф-ю на Возобновить?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 25.7.2007, 20:59


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



~Gangs2er~,
А разве не достаточно просто поменять указатели на строки ленга местами? ph34r.gif
Мне казалось так и строится все меню.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
~Gangs2er~
сообщение 25.7.2007, 21:56


MotoSkinner
****

Группа: Разработчики
Сообщений: 248
Регистрация: 4.8.2006
Из: Екатеринбург
Пользователь №: 93 787
Модель телефона: (M) E398
Прошивка: У вас такой нету))

Рейтинг: 217.5



DmT, нет. Нет, не везде! Напр в яве при нажатие на красную кнопку.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 26.7.2007, 6:54


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(~Gangs2er~ @ Вчера, 22:50)

Osta, про окно блок, разблок, нужные байты патчаца( закрываются нопами), их находить методом тыка, то есть между указателями лэнга? Или есть др способ, найти где патчить?
*


я же написал выше :-(
Цитата(Osta @ 20.7.2007, 8:33)

ну методы нет..
*




Цитата(DmT @ Вчера, 22:59)

А разве не достаточно просто поменять указатели на строки ленга местами?
Мне казалось так и строится все меню.
*


о, нет. Прошивку собирают люди со многих стран и с разными (странными) мировозрениями, как писал Vilko :-)
Простая замена Id строк ленга действует только в Картинках, Мелодиях, Видео .. может ещё в Темах и Браузере.

Сообщение отредактировал Osta - 26.7.2007, 6:55
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 26.7.2007, 7:01


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Хм, спасибо Osta за пищу для размышления... А вот ты не знаеш как тогда менять местами пункты?
И ещё такой вопрос - вот про ленг и про дрм мы префиксы поняли там (0100xxxx и 1200xxxx), а вот как быть со скинами? ph34r.gif Наверняка там тоже какое нибудь число после него номер картинки... shuffle.gif Подскажи, пожалуйсто.
ЗЫ это для порта патча FullScreenPictureViewer + FullScreenSlideShow






________________ Osta ______________________
увы , со скринами столкнулся только неделю назад,
сам в них чайник , надеюсь пока...

Сообщение отредактировал Osta - 26.7.2007, 8:54
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 5.11.2007, 10:31


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Очень хочется узнать:
Как найти программный код(в иде) зная лишь строчку ленга соответсятвующую нужной операции?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 6.11.2007, 8:23


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



DmT, строчку ленга с номером 0х0ABC ищи по коду 0х01000ABC
Но не все строки явно заданы. Бывает что задана одна, а соседние получаются прибавлением небольшого числа к её коду. также если строка работает в меню вида вкл/выкл, то скорее всего в явном виде не найдешь, там другой тип указателя, не привязанный к номеру строки в ленге... т.е. он привязан, но непонятно (мне) как
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 6.11.2007, 8:55


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(DmT @ Вчера, 12:31)

Очень хочется узнать:
Как найти программный код
*


вам пора загнать в иду файл от е398 и после его дизамба искать функции. С названием события установки темы помогу.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 18.11.2007, 6:34


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



Цитата(DmT @ 26.7.2007, 10:01) *

И ещё такой вопрос - вот про ленг и про дрм мы префиксы поняли там (0100xxxx и 1200xxxx)


С разрешения Vilko выкладываю расширенное описание префиксов

Пример применения:
структура пунктов меню аудиоплеера на 373 платформе

это описание состояний счетчика(таймер) - выкл, осталось времени, прошло времении, всего времени... здесь указатель имеет вид 0C00хххх

ROM:103CA5DC DCD 0xC000268 ; RES_ID_CONTENT_MMC_TIMER_OFF
ROM:103CA5E0 DCD 0xC000267 ; RES_ID_CONTENT_MMC_TIMER_REMAINING_TIME
ROM:103CA5E4 DCD 0xC000266 ; RES_ID_CONTENT_MMC_TIMER_ELAPSED_TIME
ROM:103CA5E8 DCD 0xC000269 ; RES_ID_CONTENT_MMC_TIMER_REMAINING_TIME


а вот собственно пункт меню "счетчик"
ROM:103CA5EC DCD 0x33D0711
; некий порядковый номер (2 байта) + оффсет сима 4А (2 байта)
ROM:103CA5F0 DCD 0x100063B
; Таймер (это ид. строки в ленге, но ПОЧЕМУ_ТО смена этого ид. ни на что не влияет)
ROM:103CA5F4 DCD 0xD00020D
; RES_ID_FIELD_DESC_MMC_TIMER - а вот здесь указатель формата 0D00хххх
; Он определяет вывод надписи Таймер: вкл
ROM:103CA5F8 DCD dword_103CA5DC ;
; это адрес вариантов всплывающих окон 0С00хххх (см. выше)

Таким образом, пункт меню описан следующим образом
1) некий счетчик + оффсет сима
2) 0100хххх ид. ленга для названия пункта (не используется?)
3) 0D00xxxx ид. пункта, у которого есть состояния (счетчик)
4) адрес вариантов вспылвающих окон состояний

5) 0C00xxxx вариант состояния 1 (изменено: таймер выкл)
6) 0C00yyyy вариант состояния 2 (изменено: прошло времени)
7) 0C00zzzz вариант состояния 3 (изменено: осталось времени)

Причем соответствие в ленге номера строки "таймер" или "прошло времени" с хххх в указателях вида 0D00xxxx 0C00xxxx мне пока не ясно. Оно нелинейно smile.gif
Если изменить 0С00хххх на джругое, то изменится ТОЛЬКО текст во всплывающем окне, которое появлется после того, как на пункте таймер нажали, вошли в меню вида:
таймер:
выкл
прошло
осталось

и выбрали какой-то пункт.

Если менять пункты не заходя в это меню (просто джойстиком вправо-влево) то всплывающее окно не появляется. и соотв. до указателей 0С00хххх дело не доходит.

Сообщение отредактировал AlexKooper - 18.11.2007, 15:07
Прикрепленный файл drm_resources.zip   ( 144.53 килобайт ) Кол-во скачиваний: 623
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
RADIONMC
сообщение 26.1.2008, 16:33


Интересующийся
**

Группа: Пользователи
Сообщений: 55
Регистрация: 16.7.2007
Из: Кишинёв
Пользователь №: 141 566
Модель телефона: DEFYmb526, XOOM MZ604
Прошивка: 4.5.1-134_DFP-139

Рейтинг: 4.5



Портировал патч с помощью мануала от juicedddd но у меня вопрос: Как конвертировать в формат FPA для приминения через Flash&Backup
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 28.1.2008, 7:29


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(RADIONMC @ 26.1.2008, 18:33)

Как конвертировать в формат FPA для приминения через Flash&Backup
*


если у тебя файл .smp, открой его в Редакторе Патчей и сохрани в fpa
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
___РЕНАТ__
сообщение 7.2.2008, 5:27


Мастер
****

Группа: Пользователи
Сообщений: 296
Регистрация: 25.11.2006
Из: !KZN CITY!
Пользователь №: 108 142
Модель телефона: L9,К1,c650,L7e,Z3,L7

Рейтинг: 25



по мануалам которые есть в этой теме можно портировать патч с одной модели на другую?например с е398 на L7.



+Osta
только простые патчи , т.н. "некодовые"
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
МегаFAQ по Созданию, Портированию и Применению Патчей ! только в этой теме !, новых тем НЕ создавать - будут удаляться ! · Патчи и всё для них · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16.6.2025, 8:28

Форум живёт: