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

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Задаем вопросы по теме "Создание патчей, для начинающих"


Рекомендуемые сообщения

Зачем городить огород и тратить место,если есть готовые промежуточные переходы

В принципе в настройках компилятора есть пункт "Искать адреса редиректов для длинных переходов". во многих случаях компилятор сам сможет найти нужный редирект и сделать вызов через него.

 

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

  • Like 6

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 1,4 тыс
  • Создана
  • Последний ответ

Топ авторов темы

На вариантах которыя я сам проверял вроде работало, но мало статистики.

Сейчас откомпилил... адреса редиректов для длинных переходов нашлись все :laugh3:

  • Like 1

Пожертвования отправлять сюда R256859050930

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

D780XEHE1.

 

Надо выделить память (около 3-5кб),

затем прочитать туда файл (размер файла неизвестен, но более 3кб не нужно)…

потом, когда данные в памяти уже не нужны - эту память надо как-то освободить…

 

Как вообще это делается ?

 

Смотрел в мастерпатч, талкер, и прочих где есть загрузка - у всех совсем по разному реализовано.

 

LoadCFG:;208476AC
PUSH	{R1-R5,LR}
MOV	R4, #0x1
LSL	R4, R4, #10;R4 = R4 << 10 = 0x400 (1024)
MOV	R0, R4
BL	off_20963548;Это видимо выделение памяти ?
MOV	R5, R0

ADR	R0, =0x20847710;R0 = PC + #84 = "/a/user"
ADR	R1, =0x20847718;R1 = PC + #88 = "settings.cfg"
BLX	off_2096A7D4
CMP	R0, #0x1
BEQ	loc_208476D0
MOV	R0, R5
MOV	R1, R4
BLX	off_20964498
B	loc_208476DE

loc_208476D0:
LDR	R0, =0x21455C60
LDR 	R0, [R0];R0 = адрес "/a/user"
ADR	R1, =0x20847718;R1 = PC + #64 = "settings.cfg"
MOV	R2, R5
MOV	R3, R4
BLX	off_2096A5A0 

loc_208476DE:
MOV	R0, R5
POP	{R1-R5,PC}

 

Вот в LoadCFG - какая тут логика ?

Сначала загружает конфиг, а если не получилось - то создаёт новый ?

Или наоборот, сначала создаёт, а если файл уже есть - то загружает ?

Или вообще всё совсем не так как я предпологаю ?

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Вот в LoadCFG - какая тут логика ?

Сначала загружает конфиг, а если не получилось - то создаёт новый ?

Или наоборот, сначала создаёт, а если файл уже есть - то загружает ?

Да, примерно так и есть, только создает конфиг - SaveCFG.

 

Тебе же надо сделать следующее:

;1) узнаем размер файла
mov r0,0
str r0,[sp,4]
mov r0,r5 ;папка
mov r1,r4 ;файл
add r2,sp,4 ;свободное место в опере или стек
bl mmigfs1_7GetFileSize
;2) производим запрос памяти
ldr r1,[sp,4]
str r1,[r7]
mov r0,0x23 ;если надо 3 Кб, то смотри и выбирай самый маленький блок DynMem Pool'а (таблица есть в Look Test'е)
bl Rtk50_11GetDynMemory
;3) чтение файла
str r0,[r7,4] ;r0 - адрес полученный ф-цией Rtk50_11GetDynMemory
mov r0,r5
mov r1,r4
ldr r3,[r7]
ldr r2,[r7,4]
bl mmigtfs4_ReadFile
...
;после того, как сделаешь все дела - освобождай блок:
add r0,r7,4
bl mmigfs3_28FreeMemory

код из патч Java Voodoo ex Machina
© 2006-2007 by Freeman

 

Вот так делал великий Freeman :ad:

  • Like 2
Ссылка на комментарий
Поделиться на другие сайты

;2) производим запрос памяти
ldr r1,[sp,4]
str r1,[r7]
mov r0,0x23 ;если надо 3 Кб, то смотри и выбирай самый маленький блок DynMem Pool'а (таблица есть в Look Test'е)
bl Rtk50_11GetDynMemory
;3) чтение файла
str r0,[r7,4] ;r0 - адрес полученный ф-цией Rtk50_11GetDynMemory
mov r0,r5
mov r1,r4
ldr r3,[r7]
ldr r2,[r7,4]
bl mmigtfs4_ReadFile
...
;после того, как сделаешь все дела - освобождай блок:
add r0,r7,4
bl mmigfs3_28FreeMemory

Не понятно, что за add r0,r7,4 перед mmigfs3_28FreeMemory.

Может там надо типа LDR R0,[R7,4] ?

 

Или в Rtk50_11GetDynMemory возвращается не адрес реальной памяти, а какой-то хэндл ?

 

И что за странная проверка в коде mmigfs3_28FreeMemory ?

mmigfs3_28FreeMemory:;D780XEHE1
2094C178:	10B5	PUSH	{R4,LR}
2094C17A:	041C	MOV	R4, R0
2094C17C:	2068	LDR 	R0, [R4]
2094C17E:	0028	CMP	R0, #0x0
2094C180:	03D0	BEQ	loc_2094C18A
2094C182:	E7F64AEC	BLX	off_20833A18
2094C186:	0020	MOV	R0, #0x0
2094C188:	2060	STR 	R0, [R4]
loc_2094C18A:
2094C18A:	10BD	POP	{R4,PC}

Она читает начало указанной памяти, и если там ноль - то функция игнорируется!

Таким образом, если например я в память прочитал файл у которого в начале 0x00000000 - то потом такая память не освободится ???

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Не понятно, что за add r0,r7,4 перед mmigfs3_28FreeMemory.

Может там надо типа LDR R0,[R7,4] ?

 

Или в Rtk50_11GetDynMemory возвращается не адрес реальной памяти, а какой-то хэндл ?

Нет, "реальный" адрес.

А вот для mmigfs3_28FreeMemory указывается адрес, по которому находится "реальный" адрес :)

5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

И всё-таки файл прочитать не могу ;)

 

При вызове mmigfs1_1ReadFile мобила мгновенно перезагружается.

А если закоментировать один только BL mmigfs1_1ReadFile - то весь код выполняется правильно.

 

Но ведь в мастерпатче - это же mmigfs1_1ReadFile используется… И логика вроде такая-же как у меня.

Что я тут не так делаю ???

 

;D780XEHE1 
.equ mmigfs1_7GetFileSize 0x201B4458
.equ Rtk50_11GetDynMemory 0x20963570
.equ mmigfs1_1ReadFile 0x201B43DC
.equ mmigfs3_28FreeMemory 0x209A6458
.equ RtkGetMemory 0x20963548
.equ RtkReleaseMemory 0x20963550

;узнаём размер файла
MOV	R0, 0
STR	R0, [SP,4]	
ADR	R0, ="/c/"; путь
ADR	R1, ="File.txt"; имя файла
ADD	R2, SP, 4
BL	mmigfs1_7GetFileSize

LDR	R7, [SP,4]; R7 = размер файла
MOV	R2, 20; 20 - нижняя граница размера
MOV	R3, 160
LSL	R3, R3, 4; 2560 - верхняя граница размера 

CMP	R7, R3
BPL	err_size; возврат, выше предела
CMP	R7, R2
BMI	err_size; возврат, ниже предела

;запрос памяти	
;ADD	R1, R7, 50; запросим памяти с запасом +50
;MOV	R0, 0x23; какой-то код неизвестный.
;BL	Rtk50_11GetDynMemory
ADD	R0, R7, 50
BL	RtkGetMemory

;чтение файла
MOV	R3, R7; сколько читать
MOV	R2, R0; куда читать
ADR	R0, ="/c/"; путь
ADR	R1, ="File.txt"; имя файла
BL	mmigfs1_1ReadFile;mmigtfs4_ReadFile

;BL	prog1

;освобождение памяти
;STR	R2, [R2]	
;MOV	R0, R2
;BL	mmigfs3_28FreeMemory
MOV	R0, R2
BL	RtkReleaseMemory

 

Память выделяется - проверял… Вобщем абсолютно не понимаю в чём тут может быть проблема.

Изменено пользователем f2065

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

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

Сложность программы растет до тех пор, пока не превысит способности программиста!!!
Ссылка на комментарий
Поделиться на другие сайты

ADR R0, ="/c/"; путь

В мастер-патче слеша на конце нет...

И еще, после BL mmigfs1_1ReadFile регистр R2 будет испорчен, ты не сможешь работать с выделенной памятью.

 

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

В еепром, читается функцией HEE_ReadAlarm.

  • Like 1
5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

1. А как задаётся цвет для текста в lk4_10WriteWindow ?

Адрес насколько я понял - 0x304C197C (D780XEHE1).

Но вот в каком формате там цвет ???

Экспериментально - не могу понять:

0x7F7F7F7F = голубой (G+B)

0xFFFFFFFF = белый (R+G+B)

0x0000FF00 = красный ®

0x000000FF = синий (B)

0xFFFF0000 = чёрный! Хотя по логике должен быть зелёный…

0x00000000 = чёрный…

 

2. Где узнать цвет текста в соответствии с темой ? А то в одной теме фон тёмный и соответственно текст надо выводить светлый, а в другой теме наоборот цен белый и текст надо тёмным делать. Вот как это понять ?

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

1. А как задаётся цвет для текста в lk4_10WriteWindow ?

Адрес насколько я понял - 0x304C197C (D780XEHE1).

Но вот в каком формате там цвет ???

Цвет в формате 18b_SF или в 16-ти битном, в зависимости от дисплея.

Разобраться с кодировкой тебе поможет IFG_RW by Pako777 :59:

 

И еще...

;освобождение памяти
;STR	R2, [R2]	
;MOV	R0, R2
;BL	mmigfs3_28FreeMemory
MOV	R0, R2
BL	RtkReleaseMemory

Вот тут у тебя RtkReleaseMemory, а нужна mmigfs3_28FreeMemory, т.к. пямять ты выделял через Rtk50_11GetDynMemory. RtkReleaseMemory применяется при использовании RtkGetMemory.

Ссылка на комментарий
Поделиться на другие сайты

Вот тут у тебя RtkReleaseMemory, а нужна mmigfs3_28FreeMemory, т.к. пямять ты выделял через Rtk50_11GetDynMemory. RtkReleaseMemory применяется при использовании RtkGetMemory.

Нет, в обоих случаях память высвобождает RtkReleaseMemory. Посмотри код mmigfs3_28FreeMemory - там просто вызов RtkReleaseMemory.

З.Ы. А в примере том используется таки RtkGetMemory :59:

5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

Вот раскопал как цвет текста в соответствии с темой задавать, например для lk4_10WriteWindow.

 

.binid D780XEHE1
.equ f_color 0x304C197C

; определение цвета в соответствии с темой
MOV	R3, 0;R3, R2, R1 бывают самые разные, что-то они значат, но я пока незнаю.
MOV	R2, 0
MOV	R1, 0
; входный аргументы в R0:
; 0 = цвет почти как фон, очень плохо читаем
; 1 = во всех темах выдаёт черный
; 2 = цвет такой как верхняя статусная строка в главном меню
; 3 = во всех темах выдаёт белый
; 4 = цвет почти как фон, очень плохо читаем
; 5 = очень контрастный цвет
; 6 = цвет как в подписях главного меню, вобщем обычно это и надо
MOV	R0, 6
BL	0x2135C8C8
LDR	R1, =f_color
STRH	R0, [R1]; f_color

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

я хочу научиться делать простенькие патчи для E200XEGJ2. Хочу начать с простого

 

Есть идея убрать из списка выбора цветовой схемы (чтобы её нельзя было поменять) и тем самым освободить место в тфс.

 

С чего начать?

Ссылка на комментарий
Поделиться на другие сайты

я хочу научиться делать простенькие патчи для E200XEGJ2. Хочу начать с простого

 

Есть идея убрать из списка выбора цветовой схемы (чтобы её нельзя было поменять) и тем самым освободить место в тфс.

 

С чего начать?

С этого,а потом можешь и эту темку прочесть!

Алё-алё Хопчик

Долблю Quallcomm)

Прошивка u900/u800

Установка Java на Qualcomm 1/2

Ссылка на комментарий
Поделиться на другие сайты

я хочу научиться делать простенькие патчи для E200XEGJ2. Хочу начать с простого

 

Есть идея убрать из списка выбора цветовой схемы (чтобы её нельзя было поменять) и тем самым освободить место в тфс.

 

С чего начать?

 

Ну если чесно то таким сособот ты много места не освободиш))) п.с. да и смысл оставлять 1 цвет схему, еслбы патч тем был вот тада да :)

 

А толку что ты с тфс удалиш 1 мерт картинок никакого, :ap:

 

Но портировань все же учись, этому никода не поздно)) :)

Ссылка на комментарий
Поделиться на другие сайты

Ну если чесно то таким сособот ты много места не освободиш))) п.с. да и смысл оставлять 1 цвет схему, еслбы патч тем был вот тада да :)

 

А толку что ты с тфс удалиш 1 мерт картинок никакого, :ap:

 

Но портировань все же учись, этому никода не поздно)) :)

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

Ссылка на комментарий
Поделиться на другие сайты

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

 

Ну яж на русском написал что метр -2 не более)) Я патч писал на то чтоб картинки регулировки звука и радио в фоне считывались только с белой темы, типа чтоб черные удалить но как показала практика освободил лш 235 кб)))

:) сешно правда?

Ссылка на комментарий
Поделиться на другие сайты

я хочу научиться делать простенькие патчи для E200XEGJ2. Хочу начать с простого

 

Есть идея убрать из списка выбора цветовой схемы (чтобы её нельзя было поменять) и тем самым освободить место в тфс.

 

С чего начать?

Я недавно поднимал этот вопрос, мне объясняли, но я так и не понял до конца, почитай, может разберешься. Я кстати удалил из тфс все не используемые файлы, не только от белой цветовой схемы, и получилось примерно 24 метра свободных.

X100+10Mb->E200+1Gb->M3510+2Gb->S5230 Star+2Gb->S7230 Wave+4Гб->Galaxy S GT-i9003+8Гб

Ссылка на комментарий
Поделиться на другие сайты

Кто-нибудь может выложить отсканированное меню на E200XEGJ2? А то уменя BinEdit не сканирует как положенно (хотя на X100 все нормально сканируется).

Я сам себя не уважаю, когда моих сообщений больше чем нажатий кнопки "Спасибо!".

 

неSAMSUNG 3310 "Кирпич" => SAMSUNG X100 => SAMSUNG E200 => SAMSUNG D980 Duos

Ссылка на комментарий
Поделиться на другие сайты

Цитата(Дамир)

 

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

 

В еепром, читается функцией HEE_ReadAlarm.

Ошибочка вышла, все-таки в памяти.

Читаем так:

 

	MOV   R2, #0			   ; 0-будильник, 1-сигнал 1 и т.д.
MOV   R1, #1
ADD   R0, SP, #8
BL	RTC_GetAlarm

ADD   R6, SP, #8
ADD   R5, R6, #0
ADD   R5, #0x20

LDRB  R1, [R6, #0x12]	 ; month
LDRB  R0, [R6, #0x13]	 ; day
LDRB  R2, [R5, #2]		   ; hour
LDRB  R3, [R5, #1]		   ; min

  • Like 2
5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

Привет всем знатокам своего дела. Ессть проблемка одна.Делаю патч Add new password

Есть в опциях(мультимедия) подменю Блокировать(файл) я на него жму файл заблокирован. Теперь удаляю файл жму удалить он выкидует сразу окно Защищённый элемент удалить? Я хочу сделать что перед этим окном был запрос пароля. Я снял этот адрес 202E9E9C. Теперь идёт запрос в мультимедии что на Защищённые элементы что на простое удаление. Я снал адрес окна Удалить и там тот же адрес 202E9E9C. Как найти адрес окна Защищённый элемент

удалить?

202E9E9C  4A 59 2D00 FFFF 0100 00000000 0203 0000  MCC_QUESTION
202E9EAC  18 08 0100 0D00 0000 04C51221 0000 0000  Если x1=8 x2=1 x3=13 то переход на 0x2112C504
202E9EBC  18 08 0100 0E00 0000 04C51221 0000 0000  Если x1=8 x2=1 x3=14 то переход на 0x2112C504
202E9ECC  36 02 0000 0000 0000 00000000 0000 0000  MCC_REDUCE_CALL_STACK
202E9EDC  17 35 1900 0100 0000 00000000 0000 0000  Выполнить 0x35 x2=25 x3=1 x4=0 x5=0 x6=0
202E9EEC  19 08 0100 0F00 0000 1CA32E20 0000 0000  Или если x1=8 x2=1 x3=15 то переход на 0x202EA31C
202E9EFC  1C 00 0000 0000 0000 A4C61221 0000 0000  Переход на адрес 0x2112C6A4

P.S. D780XEHE1

Mac OS X 10.9/ IOS 7

Перешёл на Macintosh

Я vkontakte, Я в myspace, Я в facebook

УШЕЛ

Ссылка на комментарий
Поделиться на другие сайты

zizu,

Оно в thumb-недрах команды MCC_QUESTION определяется… Надо копать по адресу 212C9BA4… искать там переход по условию 0x59, потом по 0x002D и т.д.…

  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Подскажите адресочки (для D780XEHE1):

1. Удержания красной кнопки (вкл/выкл)

2. короткое нажатие красной кнопки

OS: 2.2.1

Core: 2.6.29

Mod: CM 6.1

Ссылка на комментарий
Поделиться на другие сайты

Подскажите адресочки (для D780XEHE1):

1. Удержания красной кнопки (вкл/выкл)

2. короткое нажатие красной кнопки

1.Удержание красной кнопки - оно подозреваю как-то аппаратно перехватывается, на совсем другом уровне;

 

2.Ну а всё прочее - 2019CB50 - обработчик десктопных кнопок. Переходы по номерам сканкодов. Сканкоды у д780/д880 такие:

01 - C-удержание

02 - C

03 - Цифровые кнопки клавиатуры

04 - Up

05 - Down

06 - Left

07 - Right

08 - Green

09 - Red

0A - "0"

0B - "*"

0C - "#"

0D - OK

0E - L-Soft

0F - R-Soft

12 - Vol+

13 - Vol-

14 - Foto

18 - Headset

1B - SIM-Select

  • Like 2

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти



×
×
  • Создать...