Jump to content
Old Phone Forum
  • Login

    You are currently not logged in to the forum.

    To comment, upload files, subscribe to answers - you need to login.

Recommended Posts

полдня убил на поиск непонятного глюка в патче… оказалось - виноват BinEdit:

 

.equ r6_calladdr 0x20

MOV R2, r6_calladdr

 

и вот что он из этого компилирует:

20BD6440: 321C MOV R2, R6


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

Share this post


Link to post
Share on other sites

А почему вот BinEdit не делает подмену своих собственных длинных переходов ?!

Где именно не подменяет? Вроде раньше подменял. Или это в редакторе патчей? Если возможно необходим пример патча.

 

Да,все хотел попросить сделать и подмену для своих же переходов..

Также хочу пару хотелок подбросить...

1) Компилирование патча в поле запуска кода...

Это планировалось, возможно скоро будет, только тут есть своя специфика, код должен компилироваться как плагин.

Кстати,хочу заметить, что в последней версии BE где-то засела ошибка в компиляторе..Как-то дважды щелкнув на пустую строку между кодом - выдал BE ошибку (про что-то типа ...Bounds)..
Последние BE.Вот какая ошибка.

Если в терминале запустили код, и тел повис - соответственно он перезагрузился. BE считает, что тел подключен. После перезагрузки тел опять готов к бою, но - если в терминале не отключится от телефона, а еще раз запустить код (даже рабочий), BE говорит "В телефоне не нашлось достаточно места....", а затем вылетает ошибкa - Round of Bounds

Ошибку проверю, кажется знаю в чём дело. В любом случае после переподключении телефона необходимо переинициализировать COM соединение, так как оно потеряно.

ошибок в компиляторе много…

он непонятно как обрабатывает ошибки в коде.

сегодян полдня не мог понять почему патч не работает, потом стал декомпилировать - смотрю а там LDR R2, 0x4nnnnnnn. А в листинге было написано типа

LDR R2, metka+1

metka:

 

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

LDR R2, metka
...
.align 2
metka: .word 0xDATA

 

эквивалентно

 

LDR R2, =0xDATA
...
metka:
.data

 

при этом metka+1 в LDR откругляется до числа кратного 4

Так можно указывать загрузку данных уже существующих в прошивке, без повторного их размещения. Ошибка будет только если адрес metka+1 будет слишком далеко от адреса команды LDR.

 

полдня убил на поиск непонятного глюка в патче… оказалось - виноват BinEdit:

 

.equ r6_calladdr 0x20

MOV R2, r6_calladdr

 

и вот что он из этого компилирует:

20BD6440: 321C MOV R2, R6

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

  • Like 3

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

AlexeyK.gif

Share this post


Link to post
Share on other sites

Где именно не подменяет? Вроде раньше подменял. Или это в редакторе патчей? Если возможно необходим пример патча.

Не подменяет на вкладке "КОД". Стандартные конструкции все отлично подменяет,а свои созданные компилятором:

PUSH {R0,R1}

LDR R0, =function+1

STR R0, [sP, #0x4]

POP {R0,PC}

вот такие не подменяет...

Ошибку проверю, кажется знаю в чём дело. В любом случае после переподключении телефона необходимо переинициализировать COM соединение, так как оно потеряно.

Это понятно,да - просто бывает забываю, и жалко было код потерять из-за ошибки, заново писал :jokingly:

Share this post


Link to post
Share on other sites

Нашёл ошибку при дизассемблирование команды TEQ. Значение 8B102B21 дизассемблируется как эта команда. Хотя для неё требуется другое значение 8B103B21, по документации. Или я ошибаюсь?

 

Изменяемый бит в данном коде отражает будут ли по данным операции изменяться биты статусного регистра. К арифметическим командам добавляется <S> (ADD -> ADDS)

В данном случае для arm v4 этот бит не учитывается, для arm v5 вроде уже требуется его обязательное присутствие.

 

PS. В ARM v5 появилось DSP расширение команд, как раз все они определяются этим битом. В данном случае это команда

SMLAW0CS R11, R11, R0, R1

По возможности добавлю дизассемблирование и компиляцию команд DSP расширения.

 

Нашёл баг: в редакторе патчей ставим курсор на первый символ хекса и жмём стрелку влево на клавиатуре.

Вылетает с такой ошибкой

поправлю.

 

Здравствуйте!почему так выходит?открываю программу--нажимаю инсрументы--редактор патчей, затемя выбираю патч от прошивки D780XEHE1, нажимаю проверка патча--потом определение размеров и типов блоков, программа меня просит прошивку,я выбираю D780XEHE1 и она мне выдает: индекатор прошивки не совпадает с индикатором патча.обработка прервана!!! и так вообще с любым патчем этой прошивки!где я неправ?что проге надо?

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

  • Like 4

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

AlexeyK.gif

Share this post


Link to post
Share on other sites
' date='14.07.2009, 3:50' post='451344']

Не подменяет на вкладке "КОД". Стандартные конструкции все отлично подменяет,а свои созданные компилятором:

PUSH {R0,R1}

LDR R0, =function+1

STR R0, [sP, #0x4]

POP {R0,PC}

вот такие не подменяет...

 

Это понятно,да - просто бывает забываю, и жалко было код потерять из-за ошибки, заново писал :(

 

Подмену проверю, раньше вроде работало :ad:

 

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

  • Like 3

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

AlexeyK.gif

Share this post


Link to post
Share on other sites

А почему в справке написано что:

BCS label ; если больше без учёта знака

как несложно экспериментально проверить - это «больше или равно»…


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

Share this post


Link to post
Share on other sites

У кого-нибудь получается S3-патчи компилировать ?

BinEdit не пишет файл данных отмены. Пишет типа что файл Cancel_C:\dir\1.s3 существует.

Похоже на баг формирования имени cancel-файла

 

 

ещё баг нашёл:

s3-прошивка, если был сохранён BE-файл - открывается некорректно - адреса все смещены.

приходится каждый раз BE-файлы удалять

Edited by f2065

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

Share this post


Link to post
Share on other sites

AlexeyK - я уже писал, но походу это забылось. Изменить статус "ошибки", когда адрес подменяется редиректом при компиляции.

Share this post


Link to post
Share on other sites
' date='30.07.2009, 7:20' post='454098']

AlexeyK - я уже писал, но походу это забылось. Изменить статус "ошибки", когда адрес подменяется редиректом при компиляции.

вроде поправил, но надо проверить

  • Like 4

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

AlexeyK.gif

Share this post


Link to post
Share on other sites

Есть небольшой вопрос - Как в BinEdit"е заменять IFG-графику? С 16-битными все ОК - заменяются на ура!


Motorola V50 (2003) -> Siemens M50 (2003-2005) -> LG B2000 (2005-2007) -> Alcatel OT-310 (2007-2008) -> Samsung D900i (2008-2011) -> LG P500 (2011-2012) -> Пока Fly с изолентой -> Xiaomi M1S Youth + Google Nexus 7 2013 32 Gb

Share this post


Link to post
Share on other sites

Есть небольшой вопрос - Как в BinEdit"е заменять IFG-графику? С 16-битными все ОК - заменяются на ура!

А в чем проблема?

Пишешь патч.

Берешь адрес САМОЙ ifg-картинки, ищещь адрес в поиске как данные. Найдет адрес (мб даже 2 и более).

Пишешь в компиляторе следующее:

.start найденный_адрес

.word my_ifg

 

.start свободный_адрес

my_ifg:

.insertdata "полный путь к моей ifg-картинке"

 

Вот и все.

Share this post


Link to post
Share on other sites
' date='07.08.2009, 12:50' post='455550']

Берешь адрес САМОЙ ifg-картинки, ищещь адрес в поиске как данные. Найдет адрес (мб даже 2 и более).

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

cac7cc37b91e.jpg


Motorola V50 (2003) -> Siemens M50 (2003-2005) -> LG B2000 (2005-2007) -> Alcatel OT-310 (2007-2008) -> Samsung D900i (2008-2011) -> LG P500 (2011-2012) -> Пока Fly с изолентой -> Xiaomi M1S Youth + Google Nexus 7 2013 32 Gb

Share this post


Link to post
Share on other sites

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

1) Идем издалека.

Для начала - это кнопка ищет конкретный HEX-код. Если пользоваться ей - то нужно в поиск вбивать перевернутый адрес.

2) А у тебя адрес даже не натуральный в поиске - ты попробуй перейди по нему - и что увидишь?

3) Нужно ввести реальный адрес (из 8 цифр), потом нажать на кнопку 94168-7-08-09)1249643641_thumb.jpg , и тогда BE выдаст найденные адреса.

(конечно есть другие способы,но этот самый понятный).

Share this post


Link to post
Share on other sites

Ввёл правильно адрес (смотрим скрин), потыкал кнопку D, но ничего не нашёл! :)

8452ff34b997.png


Motorola V50 (2003) -> Siemens M50 (2003-2005) -> LG B2000 (2005-2007) -> Alcatel OT-310 (2007-2008) -> Samsung D900i (2008-2011) -> LG P500 (2011-2012) -> Пока Fly с изолентой -> Xiaomi M1S Youth + Google Nexus 7 2013 32 Gb

Share this post


Link to post
Share on other sites

Ввёл правильно адрес (смотрим скрин), потыкал кнопку D, но ничего не нашёл! :)

Потому что...

212AE888 - это адрес не САМОЙ картинки.

Это уже указатель на нее (т.е. как я говорил - найденный адрес).

Поэтому в компиляторе BE пишешь:

.start 0x212AE888

.word my_ifg

.start свободный адрес

my_ifg:

ну и т.д.

Share this post


Link to post
Share on other sites

Всё вроде как понятно,но есть вопросы: Что такое "свободный адрес" и "полный путь к картинке IFG"? Где в компиляторе эти команды записывать?


Motorola V50 (2003) -> Siemens M50 (2003-2005) -> LG B2000 (2005-2007) -> Alcatel OT-310 (2007-2008) -> Samsung D900i (2008-2011) -> LG P500 (2011-2012) -> Пока Fly с изолентой -> Xiaomi M1S Youth + Google Nexus 7 2013 32 Gb

Share this post


Link to post
Share on other sites

Всё вроде как понятно,но есть вопросы: Что такое "свободный адрес" и "полный путь к картинке IFG"? Где в компиляторе эти команды записывать?

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

Полный путь - это значит не только путь до папки с твоей IFG картинкой, а включая и название смого IFG.

Вот пример замены:

 

.start 0x212AE888

.word my_ifg

 

.start 0xадрес_ненужной_картинки

my_ifg:

.insertdata "C:\My Mobile phone\My IFG graphic\power_on1_.ifg"

  • Like 1

Share this post


Link to post
Share on other sites

А куда в ARM компиляторе эти команды записывать?

В "полном пути" символы обязательно должны быть латинскими?


Motorola V50 (2003) -> Siemens M50 (2003-2005) -> LG B2000 (2005-2007) -> Alcatel OT-310 (2007-2008) -> Samsung D900i (2008-2011) -> LG P500 (2011-2012) -> Пока Fly с изолентой -> Xiaomi M1S Youth + Google Nexus 7 2013 32 Gb

Share this post


Link to post
Share on other sites

А куда в ARM компиляторе эти команды записывать?

В "полном пути" символы обязательно должны быть латинскими?

Файл - Новый файл, и вот в окошко пишешь.

Символы могут быть также русскими.

p.s. Если компилятор выдает ошибку "Файл не найден", замени один слеш на два.

Т.е.:

"C:\\My Mobile phone\\...."

Share this post


Link to post
Share on other sites
' date='07.08.2009, 8:40' post='455632']

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

А патч заработает, если я вставлю в "свободный адрес" такой же адрес как и в .start 0x212AE888?


Motorola V50 (2003) -> Siemens M50 (2003-2005) -> LG B2000 (2005-2007) -> Alcatel OT-310 (2007-2008) -> Samsung D900i (2008-2011) -> LG P500 (2011-2012) -> Пока Fly с изолентой -> Xiaomi M1S Youth + Google Nexus 7 2013 32 Gb

Share this post


Link to post
Share on other sites

А патч заработает, если я вставлю в "свободный адрес" такой же адрес как и в .start 0x212AE888?

Не знаю,что ты именно имеешь ввиду. Лучше дай этот адрес, на котором хочешь расположиться - я посмотрю - и там уже подробнее объясню.

Share this post


Link to post
Share on other sites

Этот адрес в моей цитате написан, то есть 0x212AE888!

Берешь адрес САМОЙ ifg-картинки

Я этот адрес нашёл в карте ресурсов!

Edited by димон95

Motorola V50 (2003) -> Siemens M50 (2003-2005) -> LG B2000 (2005-2007) -> Alcatel OT-310 (2007-2008) -> Samsung D900i (2008-2011) -> LG P500 (2011-2012) -> Пока Fly с изолентой -> Xiaomi M1S Youth + Google Nexus 7 2013 32 Gb

Share this post


Link to post
Share on other sites

Этот адрес в моей цитате написан, то есть 0x212AE888!

Нет, нельзя!

Там лежат как данные - многие картинки.

Тебе нужен именно свободный адрес - расположиться на картинке неиспользуемой.

Я этот адрес нашёл в карте ресурсов!

В карте ресурсов при IFG-картинке самое главное= это указатель на ifg-картику, т.е. что как раз адрес - 0x212AE888.

Если неизмененная карта, полученная прогой IFG_RW - то в карте пишется и указатель (в поле <img ptr..) , и не натуральный адрес самой картинки (в поле title=).

Share this post


Link to post
Share on other sites

Почти год не брал в руки БинЕдит... :bx:

Напомните/разъясните что такое все-таки a_ProcessNames ( в оперативе) -процедура или таблица адресов?

Дамп похож на arm-код, а в симах указывается такое имя.И получается что код прошивки грузится в оперу не с 30000000(18000000)-как я до сих пор считал,а с 30001000.Возможно первые 4096 байт и Data byte, но уж больно похоже на код

00000000:	000082F4	STR	R0,[R2]
00000004:	0CF09FE5	LDR	PC=#0x30005C90
00000008:	0000A0E3	MOV	R0, #0x0
0000000C:	0080BDE8	LDMFD	SP!, {PC}
00000010:	0000D000	SBCEQS	R0, R0, R0
00000014:	2C510030	ANDCC	R5, R0, R12,LSR#2
00000018:	905C0030	DCD	0x30005C90
0000001C:	0FB430B5	LDRLTT	R11,[R0,-0x40F] !
00000020:	91B00F90	MULLS	PC, R1, R0
00000024:	0C4816A9	LDMGEDB	R6, {R2,R3,R11,LR}
00000028:	0E917844	LDRMIBT	R9,[R8],-0x10E !
0000002C:	08900B48	STMMIDA	R11, {R3,R12,PC}
00000030:	78440990	ANDLS	R4, R9, R8,ROR,R4
00000034:	0FAD281C	STCNE	p13,C10,[R8],-0x3C !
00000038:	01AB0EAA	BGE	loc_003AAC44
0000003C:	159900F0	AND	R9, R0, R5,LSL,R9
00000040:	37FD041C	STCNE	p13,C15,[R4],-0xDC
00000044:	291C0020	ANDCS	R1, R0, R9,LSR#24
00000048:	01F0C8F9	STMIB	R8, {R0,R12-PC}^
0000004C:	201C11B0	ANDLTS	R1, R1, R0,LSR#24
00000050:	30BC08BC	STCLT	p12,C11,[R8],-0xC0
00000054:	04B01847	LDRMI	R11,[R8,-R4]
00000058:	AF130000	ANDEQ	R1, R0, PC,LSR#7
0000005C:	B7130000	ANDEQ	R1, R0, R7,LSR,R3
00000060:	7847	BX

 

И, попутно, мож кто разъяснит значение артиклей у имен в симе a_ ,v_, s_, gp_ и т.п. :bx:


/ Чтобы боялись чужие, не обязательно бить своих.../

Share this post


Link to post
Share on other sites

Mako, Предполагаю,

p_ - Pointer (указатель)

gp_ - Global Pointer (глобальный указатель)

a_ - Array (массив)

ga_ - Global Array (глобальный массив)

v_ - Variable (переменная)

gv_ - Global Variable (глобальная переменная)

 

А вот s_,gs_ это скорее всего

s_ - Struct (структура)

gs_ - Global Struct (глобальная структура)

  • Like 3

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...