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

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

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

BinEdit и все о ней


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

" post=375794]

И кстати, когда долго работаешь с бин едитом + компилятор, в котром пишешь большой патч, через может несколько часов БинЕдит кушает уже не 300 мб оперы, как в среднем, а намного боьлшше... Вчера дошло до 1,2 гига кушания... в бе провел часов 5-6... он начинает настолько тормозить, что когда сидишь на вкладке МСС и пытаешься двинуть адрес на 1 байт - он его двигает секунд 20.... и за это время еще показывает, что прога не отвечает...

+1 Уже давно писал об этом...

  • Like 1

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

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

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

Портировал тут большой патч… Не работает. Стал изучать - оказалось BinEdit какие-то кривые адреса компилирует.

 

Вот отдельный пример проблемы - простейший исходник, на котором проблема воспроизводится:

 

.start 0x214E17A8
BLX 0x2135CE2D
.data

 

(прошивка - D780XEHE1)

 

И вот что получилось:

214E17A8: 7BF642EB BLX off_2135CE30

 

Не понимаю вообще.

Как мне сделать BLX на 0x2135CE2D (0x2135CE2C+1) ???

 

зы. причём в одном и том-же листинге местами BinEdit выносит BLX в конец и там делает сложную но корректную процедуру перехода… А местами - вот вышеописанную фигню.

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

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

Портировал тут большой патч… Не работает. Стал изучать - оказалось BinEdit какие-то кривые адреса компилирует.

 

Вот отдельный пример проблемы - простейший исходник, на котором проблема воспроизводится:

 

.start 0x214E17A8
BLX 0x2135CE2D
.data

 

(прошивка - D780XEHE1)

 

И вот что получилось:

214E17A8: 7BF642EB BLX off_2135CE30

 

Не понимаю вообще.

Как мне сделать BLX на 0x2135CE2D (0x2135CE2C+1) ???

 

зы. причём в одном и том-же листинге местами BinEdit выносит BLX в конец и там делает сложную но корректную процедуру перехода… А местами - вот вышеописанную фигню.

 

вот из описания компилятора BinEdit

 

Для переходов BL и BLX будет, при невозможности получения прямого кода, ввиду ограничения диапазона действия, производится составление набора функций осуществляющих дальние вызовы через BX

Например, код "BL function", при недопустимо большой разнице между PC и function будет заменён на

	BL _function
...
_function:	push  {r0-r1}
ldr   r0,=function+1
str   r0,[sp,#4]
pop   {r0,pc}
.word function+1

 

или "BLX my_fun" на

 

	BL _my_fun
...
_my_fun:	push  {r0-r1}
ldr   r0,=my_fun
str   r0,[sp,#4]
pop   {r0,pc}
.word my_fun

 

адрес начала размещения функций можно задать директивой . orgbl

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

вот из описания компилятора BinEdit

 

Для переходов BL и BLX будет, при невозможности получения прямого кода, ввиду ограничения диапазона действия, производится составление набора функций осуществляющих дальние вызовы через BX

 

Так проблема в том, что у меня явно нужен переход с подменой. А BinEdit почему-то в ряде случаев этого не хочет понимать!

 

Вот ещё пример:

 

; for D780XEHE1
.equ LoadCFG 0x208476AC
.equ TestAdr 0x21791138
.start 0x214E17A8
mov R0, #0x0
BLX TestAdr+1
mov R1, #0x1
BLX LoadCFG+1
mov r2, #0x2
.data
.orgbl

 

Получаю:

214E17A8:	0020	MOV	R0, #0x0
214E17AA:	AFF2C8EC	BLX	off_2179113C; ошибка!!!
214E17AE:	0121	MOV	R1, #0x1
214E17B0:	00F002E8	BLX	off_214E17B8; а тут - нормально
214E17B4:	0222	MOV	R2, #0x2

off_214E17B8:
214E17B8:	04F01FE5	LDR	PC=#0x208476AD
214E17BC:	AD768420	DCD	0x208476AD

 

 

зы. кстати а почему иногда он делает конструкцию

push {r0-r1}

ldr r0,=function+1

str r0,[sp,#4]

pop {r0,pc}

а иногда просто переход с переключением в ARM и там просто LDR PC=function+1

?

 

 

Upd: проблема решена, может ещё кому пригодится: Вобщем надо просто все «BLX» писать с подчёркиванием - «BLX_», как сказано в справке это принудительно включает подмену. Я так сделал - теперь всё корректно, во всех случаях генерируется правильный переход.

А автоматически видимо BinEdit иногда не понимает что надо сделать подмену.

 

Кстати почему на справку ни на сайте BinEdit ссылок нет, ни из самого BinEdit она не вызывается. Нашёл тут на формуе…

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

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

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

(добавил сохранение патчей отмены)

а как можно получить версию с отменами?

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

а можно как-то дизассемблировать просто двоичные файлы, не знакомого программе формата, содержащие ARM-код? в моем случае это PE от WinCE

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

а можно как-то дизассемблировать просто двоичные файлы, не знакомого программе формата, содержащие ARM-код? в моем случае это PE от WinCE

Файл-Загрузить- и в менюшке "Типы файлов" выбери "Все файлы" :ck:

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

[AlaSToR], да спасибо.

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

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

BLX TestAdr+1

mov R1, #0x1

BLX LoadCFG+1

А зачем ты пишешь BLX ?У тебя же в тумбу переход,BL пиши и все скомпилится

/ Чтобы боялись чужие, не обязательно бить своих.../
Ссылка на комментарий
Поделиться на другие сайты

f2065, для BLX и BL не надо делать +1, надо правильно использовать BL и BLX. Где надо комнпилятор сам +1 сделает.

>Кстати почему на справку ни на сайте BinEdit ссылок нет, ни из самого BinEdit она не вызывается. Нашёл тут на формуе…

на сайте есть описание как в упакованном, так и html виде. http://binedit.sgh.ru/readme.php

 

das проверь обновление через программу. сейчас программу по немногу исправляю, но нет возможномти её залить на сайт.

 

[AlaSToR] пока сделал показ длины файла в статустной строке и появление предупреждения тамже если длинна приближается к кретическому значению.

  • Like 2

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

AlexeyK.gif

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

[AlaSToR] пока сделал показ длины файла в статустной строке и появление предупреждения тамже если длинна приближается к кретическому значению.

Спасибо большое :) Сейчас обновлюсь :bf:

А вообще, чето я не понял, от чего зависит стирание это... вроде бы слишком много символов, а не строк?

-------------------------------------------------

гы... у меня последняя версия, доступная для скачивания - это за 16 июня... значит будемс ждать :D

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

AlexeyK,

а можно добавить кнопку типа "Sw" только привязать его к полю адреса.

К примеру скопировал адрес 94973521 нажал "Sw" и получился 21359794.

А то сейчас надо копировать в поле поиска ,переворачивать адрес и потом снова копировать в поле адрес...долго :(

наднюся понятно объяснил

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

AlexeyK,

а можно добавить кнопку типа "Sw" только привязать его к полю адреса.

К примеру скопировал адрес 94973521 нажал "Sw" и получился 21359794.

+1

 

И ещё автодополнение адресов хочется!

 

Например, копирую я из патча адрес "00123456", "0123456" или вообще "123456"… И надо его автоматически (ну соответствующую кнопку сделать) во-первых дополнить до 8 знаков, во-вторых первый 0 корректировать в соответствии с адресом загрузки прошивки.

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

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

[AlaSToR] обновлятся пока не надо. я пока выложить не могу.

там у контрола ограничение в 32 kb символов.

 

Дамир всё проще, по правой кнопке есть "копитовать как число" там автоматически копируется правильно.

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

Изменено пользователем AlexeyK
  • Like 2

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

AlexeyK.gif

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

люди где ещё можно скачать бинедит у меня с binedit.sgh.ru не качает(можно скинуть на мыло neoneed2009@mail.ru) :132:

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

люди где ещё можно скачать бинедит у меня с binedit.sgh.ru не качает(можно скинуть на мыло neoneed2009@mail.ru) :(

Если у тебя есть любой BinEdit, то зайди в "Помощь - О программе - Обновить программу", программа перейдят в браузере на самый новый бин едит.

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

Он мне только список прошивок выдает

Комментарий модератора Mako
Внимательно смотри,у некоторых прошивок есть еще sym,оригинальный или эмулированный.В отдельной колонке
Ссылка на комментарий
Поделиться на другие сайты

Есть готовые методы как слить в комп всю оперативную память мобилы (D780) ?

AT+CGSN=0 имеет какой-то очень мелкий буфер - при попытке слить хотябы кусок 1000h - ребут.

Есть идея написать утилиту в цикле перебирающую адреса AT+CGSN=0,3XXXXX00,100

Но может всё уже давно написано ?

Или есть другие решения по получению дампа ОЗУ ?

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

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

Есть готовые методы как слить в комп всю оперативную память мобилы (D780) ?

AT+CGSN=0 имеет какой-то очень мелкий буфер - при попытке слить хотябы кусок 1000h - ребут.

Есть идея написать утилиту в цикле перебирающую адреса AT+CGSN=0,3XXXXX00,100

Но может всё уже давно написано ?

Или есть другие решения по получению дампа ОЗУ ?

В терминале есть вкладка "Дамп". Там вводишь адрес начала оперы, потом нужный размер. Можно хоть 1 кб, хоть 10 мб. :)

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

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

 

Например, анализом дампов ОЗУ D780XEHE1, точно знаю что нужная мне опция лежит в 304887C0.

Однако, как теперь найти откуда оно пишется ???

Там очевидно какая-то оптимизация вроде LDR R0,=0x30488700 ADD R0,0xC0 - потому что просто поиском всех вариантов использования оно не выдаётся.

И как такое искать ???

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

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

оптимизация вроде LDR R0,=0x30488700 ADD R0,0xC0 ....как такое искать ???

Очень часто,кстати...Я,например,ввожу в поиск ??874830,а дальше перебираю полученное руками...

/ Чтобы боялись чужие, не обязательно бить своих.../
Ссылка на комментарий
Поделиться на другие сайты

Очень часто,кстати...Я,например,ввожу в поиск ??874830,а дальше перебираю полученное руками...

можно логичнее и проще. вводить 304887?? и искать по кнопке D или её подпунктам.

В этом случае не будет кучи лишних адресов не кратных 4

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

  • Like 3

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

AlexeyK.gif

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

Очень часто,кстати...Я,например,ввожу в поиск ??874830,а дальше перебираю полученное руками...
А кстати у меня поиск начинающийся с ?? не работает. Впрочем, всё равно не нашёл (искал и 874830 и 884830). Конкретно в данном случае (это патч Lock_Default_Path) придумал просто другое решение, на уровне MCC. Но вообще для перспективы других патчей - вопрос по этому примеру остаётся открытым: ячейка 0x304887C0 переодически меняет значение (есть некая корреляция с сохранением диктофона на флешку или в память, но корреляция не 100%), и найти это не получилось.

 

Кстати. Я написал утилиту анализирующую 10 дампов ОЗУ. 5 дампов в одном положении какой-то опции, и 5 дампов - в другом (по 5 штук - для отсева попутного шума). На выходе - все адреса которые синхронно менялись в двух группах дампов. Может оформлю публично, если будут желающие.

 

можно логичнее и проще. вводить 304887?? и искать по кнопке D или её подпунктам.
А есть поиск адреса в строке комментариев ? Ну там где пишется подсказка по результатам ADD, LSL, LSR. Вроде там не ищет. А было бы полезно, для поиска разных оптимизированных значений.

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

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

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

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

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

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

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

Войти

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

Войти



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