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

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

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

BinEdit и все о ней


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

Например вот, при обновлённом режиме иконка life не компилируется и ошибок тоже нет.

...

icon_Life_0: .insertdata "type4\Life_0.ifg"

...

 

Ну вообще-то символ "\" в строке принято экранировать, т.е. надо так писать:

icon_Life_0: .insertdata "type4\\Life_0.ifg"

 

"\l" заменилось на новую строку, а для "\m" замены нет - осталось, как есть.

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

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

Код


.start new_text_tab
DCD	a_txt_TouchVib

.start 0x9164E000
a_txt_TouchVib:
DCB	"Touch vibration feedback"
DCB	"Âèáðîîòäà÷à ñåíñîðà"
DCB	"Âèáðîîòäà÷à ñåíñîðà"

.equ new_text_tab				0x91468C00

Результат компиляции:

+90140000
6FEC0000: 00000000
01328C00: 00E06491
0150E000: 546F75636820766962726174696F6E20666565646261636B00D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000

 

Если же equ перенести в начало, то получается нормально:

.equ new_text_tab				0x91468C00

.start new_text_tab
DCD	a_txt_TouchVib

.start 0x9164E000
a_txt_TouchVib:
DCB	"Touch vibration feedback"
DCB	"Âèáðîîòäà÷à ñåíñîðà"
DCB	"Âèáðîîòäà÷à ñåíñîðà"

+90140000
01328C00: 00E06491
0150E000: 546F75636820766962726174696F6E20666565646261636B00D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000

 

это прошивка C3300iXXKD1

 

Попробовал вообще без прошивки скомпилировать, аналогично получается:

00000000: 00000000
91468C00: 00E06491
9164E000: 546F75636820766962726174696F6E20666565646261636B00D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000D092D0B8D0B1D180D0BED0BED182D0B4D0B0D187D0B020D181D0B5D0BDD181D0BED180D0B000

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

  • 1 месяц спустя...

А компилятор знает команды LDRD, STRD?

 

LDRD

LDRD{<cond>} <Rd>, <addressing_mode 2>

Rd := [address][31:0]

Rd+1 := [address+4][31:0]

Загрузка пары регистров.

Rd должен быть четным (R0 R2 R4 R6 R8 R10 R12)

 

STRD

STRD{<cond>} <Rd>,<addressing_mode 2>

[address] [7:0] := Rd [7:0]

[address+1][7:0] := Rd [15:8]

[address+2][7:0] := Rd [23:16]

[address+3][7:0] := Rd [31:24]

[address+4][7:0] := Rd+1 [7:0]

[address+5][7:0] := Rd+1 [15:8]

[address+6][7:0] := Rd+1 [23:16]

[address+7][7:0] := Rd+1 [31:24]

Сохранение 64 разрядного числа из регистров Rd и Rd+1 в память.

Почему-то команда LDRD R8, [R4] компилируется в ORRS R8, R4, R0, а STRD R8, [R4] - в ORR R8, R4, R0...

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

А компилятор знает команды LDRD, STRD?

Почему-то команда LDRD R8, [R4] компилируется в ORRS R8, R4, R0, а STRD R8, [R4] - в ORR R8, R4, R0...

Нет не знает. а из какой это спецификации? На момент разработки, таких команд не было. 64 битная арифметика не поддерживалась

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

AlexeyK.gif

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

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

а можно в BinEdit починить работу с COM-портами выше 9 ?

порты менее 20 винда 8.1 что-то не хочет раздавать на BT (даже вручную - они тупо не работают), а с 10 - BinEdit не работает...

в итоге я остался без CGSN... :)

  • Like 1

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

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

  • 6 месяцев спустя...

Есть примерно такой код:

 

.align 2

table_EHK_info:

.word t_msg_not_used, mcc_lk_exit

.word t_msg_voicemail, mcc_pb_vms_idle_call_in_idle

.word t_msg_usb_mode, mcc_set_change_usb_class

table_EHK_size8 = $-table_EHK_info

.word 0, mcc_lk_exit

 

BinEdit ругается что отсутствует параметр в вычислениях…

 

Пробовал по всякому…

table_EHK_size8 = $-table_EHK_info

.equ table_EHK_size8 $-table_EHK_info

.equ table_EHK_size8 table_EHK_info_end-table_EHK_info ; сделав вторую метку в конце

 

Не получается.

Вобщем, как создать переменную которая бы указывала бы на размер данных (именно на уровне компилятора, подсчитатывать в асме не хочу) ?

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

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

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

Есть примерно такой код:

 

.align 2

table_EHK_info:

.word t_msg_not_used, mcc_lk_exit

.word t_msg_voicemail, mcc_pb_vms_idle_call_in_idle

.word t_msg_usb_mode, mcc_set_change_usb_class

table_EHK_size8 = $-table_EHK_info

.word 0, mcc_lk_exit

 

BinEdit ругается что отсутствует параметр в вычислениях…

 

Пробовал по всякому…

table_EHK_size8 = $-table_EHK_info

.equ table_EHK_size8 $-table_EHK_info

.equ table_EHK_size8 table_EHK_info_end-table_EHK_info ; сделав вторую метку в конце

 

Не получается.

Вобщем, как создать переменную которая бы указывала бы на размер данных (именно на уровне компилятора, подсчитатывать в асме не хочу) ?

Можно попробовать так

.align 2
table_EHK_info:
.word t_msg_not_used, mcc_lk_exit
.word t_msg_voicemail, mcc_pb_vms_idle_call_in_idle
…
.word t_msg_usb_mode, mcc_set_change_usb_class
.align 1
table_EHK_info1:
table_EHK_size8 = table_EHK_info1-table_EHK_info
.word 0, mcc_lk_exit

 

Хотя у меня и начальный вариант без ошибок отработал.

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

AlexeyK.gif

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

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

Не пойму, в арм-режиме команды типа

MOV R0, 0x1388

Не понимает что ли?

Ida нормально отображает, а здесь пишет Undefined

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

В арм-режиме bl-переходы не находит еще на ужный мне адрес, хотя как минимум один такой переход есть

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

  • 3 месяца спустя...

А есть что-то подобное BinEdit но понимающее команды современного ARM, чтобы смотреть в Hex и сразу править asm-команды?

Чтобы делать патчи для андроидов…

 

Декомпилировать в IDA можно, но обратно то это не собрать.

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

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

  • 1 год спустя...

А есть ли символ или их набор, который бинедитом компилируется в хекс "0A"? А то приходится маски с его использованием переводить в хекс - не очень удобно...

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

А есть ли символ или их набор, который бинедитом компилируется в хекс "0A"? А то приходится маски с его использованием переводить в хекс - не очень удобно...

.string "\L"

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

  • 5 месяцев спустя...

Моя последняя версия BinEdit, добавлена декомпиляция сценариев Agere/Infineon.

Пример .be - файла для C3322iXXNC1 есть в архиве, в папке befiles.

BinEdit.7z

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

  • 1 месяц спустя...

Баг БинЕдит, из-за которого чуть голову не сломал в поисках ошибки в патче :128:

.start 0x8186451E

BNE 0x81864622

Компилируется в "80D1" - переход по адресу 0x81864422. Видимо, уже запредельное для команды расстояние прыжка - но при этом никаких ошибок компилятор не пишет. Компиляция прыжка на два байта дальше уже сопровождается ошибкой "Адресация команды BNE выходит за пределы допустимого".

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

Видимо, уже запредельное для команды расстояние прыжка - но при этом никаких ошибок компилятор не пишет.
Я из-за этого бага в сумме наверно полмесяца потерял, в разных патчах. Авторам неоднократно сообщал, но толку нет.

При каких-то обстоятельствах на предельном прыжке проверка диапазона не работает (вероятно где-то в коде проверка границ по условиям меньше-равно ошибается на 1 шаг).

 

Ещё есть неприятный баг - иногда русская С (в составе hex-числа) компилируется без ошибок…

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

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

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

  • 1 месяц спустя...

А вызовы thumb-функций из arm-кода (blx) только у меня неправильно декомпилируются? Адреса получаются на 2 байта меньше реальных. Из-за этого что есть сим-файл, что его нет - очень неудобно код изучать...

Компилируются вроде правильно...

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

  • 1 год спустя...

next:

mov r7,4

ldr r0,[sp,r7]

...

add r7,4

cmp r7,24

bcc next

 

 

При компиляции ругается на строчку с ldr: не определена переменная r7. Почему? Как реализовать?

Обожаю свою жену Анюточку! =)

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

При компиляции ругается на строчку с ldr: не определена переменная r7.

Нет такой команды потому что. Это же Thumb-режим - там чтобы уложится в 2 байта только самые массовые команды есть.

 

Хинт: в Thumb есть команды типа ADD R7,SP,4 и LDMIA R7!,{R0}… Можно этот твой код существенно сократить/оптимизировать.

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

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

Туплю с утра, Женя, можешь пример кода с использованием ldmia показать для упрощения прохода по циклу? Что делает команда понимаю, но как написать и использовать не могу придумать.

Обожаю свою жену Анюточку! =)

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

Что делает команда понимаю, но как написать и использовать не могу придумать.

Это позволяет обойтись без add внутри цикла.

 

 

add r7, sp, 4

mov r6, 24

add r6, r7

m1:

ldmia r7!,{r0}

cmp r7, r6

bcc m1

 

Но вообще это актуально когда в цикле надо сразу читать несколько регистров.

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

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

  • 2 месяца спустя...

А можно несколько примеров с командой uxtb? Что она делает?

 

uxtb r0, r0.

Чтобы будет если r0 = [0, 1,2,3..,ff] ?

Спасибо!

Обожаю свою жену Анюточку! =)

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

А можно несколько примеров с командой uxtb? Что она делает?

Оставляет только младшие 8 бит, а старшие 24 бита обнуляет.

На старых компиляторах вместо UXTB делали LSL 24 и LSR 24.

 

LDR R0, =0x12345678

LDR R1, =0x11223344

UXTB R0, R1

 R0 = 0x00000044

 R1 = 0x11223344

 

Это в thumb-режиме, а в arm там ещё куча разных аргументов может быть - она может делать предварительно ROR 8.

 

Ещё есть аналогичная UXTH - оставляет младшие 16 бит.

  • Like 1

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

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

  • 5 месяцев спустя...

Всем привет!

Хочу добавить в прошивку поддержку греческого языка, но при вставке в .string "" греческого текста из буфера получаю лишь .string "???????".

Это в каком направлении нужно копать? Как-то в Windows включать поддержку греческого языка? или в BinEdit подкрутить что-то?

Обожаю свою жену Анюточку! =)

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

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

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

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

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

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

Войти

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

Войти



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