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

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

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

Как из ELF сделать SYM для BinEdit ?


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

Есть вот ELF-файлы.

Какие есть способы по добывания SYM-файла для BinEdit ?

 

Пока знаю такой:

открыть в IDA v5.5,

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

потом View - Open subview - Names, и скопировать список в буфер обмена.

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

потом его можно импортировать в BinEdit…

и обнаржить что процентов 20 строк - потеряно.

Ладно, удаляю предварительно в тектовом редакторе все повторяющиеся прбелы (поиск и замена всех двух проблеом на один, много раз). Теперь BinEdit уже теряет около 1 процента.

Анализ потерь показывает что теряет он имена имеющие пробелы (такое вот например «StackmapGenerator::generate_stackmap((StackmapList ,int)) 20B54F52»… Конечно это не существенная потеря, но хочется чтобы было всё.

 

Вот если вручную привести строки формата IDA

functionname 12345678 P

в формат BinEdit

0x12345678 functionname

то все ранее проблемные строки - теперь BinEdit читает нормально.

В принципе можно написать конвертер из SYM формата IDA в формат BinEdit.

Но может есть готовые варианты ? Или вообще без участия IDA ?

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

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

а если не ждать завершения анализа - то половины имён не будет

по-моему это наоборот добавляет мусора к симу - всякие редиректы и т.п.

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

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

 

и имен с пробелами мне ни разу не попадалось...

 

а так 2 минуты допилить блокнотом и экселем и все готово

 

единственное что теряет бинедит - первую строку из sym, поэтому я в нее записываю что-то типа

;;;; firmwarename

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

и имен с пробелами мне ни разу не попадалось...

Мне постоянно, и что ещё хуже - с *. В результате захватить это регулярными выражениями так просто не получается…

Причём вообще не понятно, может это какая-то фича IDA.

Для D880JPHH1_Master.elf он (без анализа!) например показывает в Names такую строку:

fullsize_upsample(bora_jpeg_decompress_struct *,bora_jpeg_component_info *,uchar **,uchar ***) 2093AA7E

И при Copy из контекстного меню IDA - именно это и попадает в буфер обмена.

А вот если в контекстном меню посмотреть на Edit для этой строки - то там будет:

fullsize_upsample__FP27bora_jpeg_decompress_structP24bora_jpeg_component_infoPPUcPPPUc

Правда в оригинальном D880JPHH1_Master.sym вообще нет ни fullsize_upsample ни соответствующего адреса…

 

Та же самая IDA, открывая файл M3510DDHJ1.elf - сразу показывает

fullsize_upsample__FP27bora_jpeg_decompress_structP24bora_jpeg_component_infoPPUcPPPUc

 

а так 2 минуты допилить блокнотом и экселем и все готово
Я в UltraEdit делаю, в Replace:

 

Без регулярных выражений:

0.Убедится что символа & нет.

1.Заменить * на _.

В режиме регулярных выражения UltraEdit:

2.Удалить [ ]P$ (удаляет букву P в конце строк).

3.Удалить [ ]$ (удаляет последний пробел, иногда он есть).

4.Заменить ^(????????^)$ на &^1 (для сохранения пробела перед адресом).

5.Удалить все пробелы.

6.Заменить & на пробел.

7.Заменить ^(*^) ^(????????^)$ на 0x^2 ^1 (переставляет местами адрес и имя)

  • Like 1

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

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

dimonp25,

последнее время очень часто попадаются эльфы вместе с прошивками, смотри на http://firmware.sgh.ru/

например:

http://firmware.sgh.ru/files/B5722XXJK3.rar

http://firmware.sgh.ru/files/E1081TXEJK1.rar

и т.д.

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

Я в UltraEdit делаю

кстати, оно же макросы поддерживает, может написать для этого макрос можно?

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

хорошо а кто уже скачивал, там есть проши любые с эльфами от broadcom\qualcomm платформ ?

На них не нужны, sym прекрасно выдирается с помощью QuB'а.

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

dimonp25,

для broadcom\qualcomm по-моему еще не было... :)

 

А еще вопрос- есть там эльфы от NewSwift (M3510, G600 и тд) ?

b5722, с3212 есть и некоторых новых бюджетников

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

А еще вопрос- есть там эльфы от NewSwift (M3510, G600 и тд) ?

От 3510 есть, но пока не там…

 

Раздел firmware вообще надо как-то переделать…

Добавить отдельную графу для "все инженерные файлы" (и желательно с возможностью описания содержимого архива), ну или вообще десяток новых граф - ELF, DEF, STR, CFG, S3, OUT, CTS и прочие…

 

Потому что вот сейчас выкладывать туда ELF особого смысла нет - пользователям надо потом десяток гб сливать чтобы найти где что есть ? По крайней мере для разработчиков в текущем виде это не удобно. Раздел firmware изобретали видимо давно, когда кроме CLA-TFS-SYM-MAP ничего не попадалось… А потом народ вот отдельно ищет по форуму где есть DEF… потом ELF…

  • Like 3

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

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

кстати, оно же макросы поддерживает, может написать для этого макрос можно?

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

 

Сократил до 5 действий

В режиме регулярных выражения UltraEdit:
Preserve case - нет.
1.Заменить [^*^&] на _
2.Заменить ^(????????^)[ ][ P]$ на &^1
3.Удалить все пробелы.
4.Заменить & на пробел.
5.Заменить ^(*^) ^(????????^)$ на 0x^2   ^1

 

Кстати 4 и 5 объединить не получается - ^(*^)[&]^(????????^)$ или ^(*^)&^(????????^)$ - работают неправильно…

  • Like 1

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

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

Искал по форму, так и не чего не понял, подскажите для чего нужны эти SYM-файлы.
Нужны только программистам, которые знают ассемблер ARM7 и занимаются самостоятельной модификацией прошивок.

Тебе не нужны.

 

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

Например

20138B40:	F0B5	PUSH	{R4-R7,LR}
20138B42:	87B0	SUB	SP, SP, #0x1C
20138B44:	194D	LDR	R5, =0x309FE6E0
20138B46:	2868	LDR 	R0, [R5]
20138B48:	0690	STR	R0, [sP, #0x18]
20138B4A:	FF20	MOV	R0, #0xFF
20138B4C:	0130	ADD	R0, #0x1
20138B4E:	52F1AFF8	BL	off_2028ACB0
20138B52:	041C	MOV	R4, R0
20138B54:	06A8	ADD	R0, SP, #0x18
20138B56:	F7F711FB	BL	off_2013017C
20138B5A:	1548	LDR	R0, =0x309FE6B2
20138B5C:	0088	LDRH	R0, [R0, #0]
20138B5E:	FDF7FFFE	BL	off_20136960
20138B62:	069F	LDR	R7, [sP, #0x18]
20138B64:	2968	LDR 	R1, [R5]
20138B66:	A27B	LDRB	R2, [R4, #0xE]
20138B68:	791A	SUB	R1, R7, R1
20138B6A:	401A	SUB	R0, R0, R1
20138B6C:	0604	LSL	R6, R0, #16
20138B6E:	617B	LDRB	R1, [R4, #0xD]
20138B70:	207B	LDRB	R0, [R4, #0xC]

 

и с SYM

 

		atp6_7CGSNCommand:
20138B40:	F0B5	PUSH	{R4-R7,LR}
20138B42:	87B0	SUB	SP, SP, #0x1C
20138B44:	194D	LDR	R5, =a_atp_Result
20138B46:	2868	LDR 	R0, [R5]
20138B48:	0690	STR	R0, [sP, #0x18]
20138B4A:	FF20	MOV	R0, #0xFF
20138B4C:	0130	ADD	R0, #0x1
20138B4E:	52F1AFF8	BL	hfd2_30ReadBlockNameInRamImage
20138B52:	041C	MOV	R4, R0
20138B54:	06A8	ADD	R0, SP, #0x18
20138B56:	F7F711FB	BL	atp3_215AddCRLF
20138B5A:	1548	LDR	R0, =v_atp_SizeOfResultBuffer
20138B5C:	0088	LDRH	R0, [R0, #0]
20138B5E:	FDF7FFFE	BL	atp5_604GetAndCheckBufferSize
20138B62:	069F	LDR	R7, [sP, #0x18]
20138B64:	2968	LDR 	R1, [R5]
20138B66:	A27B	LDRB	R2, [R4, #0xE]
20138B68:	791A	SUB	R1, R7, R1
20138B6A:	401A	SUB	R0, R0, R1
20138B6C:	0604	LSL	R6, R0, #16
20138B6E:	617B	LDRB	R1, [R4, #0xD]
20138B70:	207B	LDRB	R0, [R4, #0xC]

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

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

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

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

а не проще IDC скрипт для иды набросать?? чтоюбы прям из иды экспортировать в формат бинедита?

Жизнь - пьяный поэт, я - слово.

Я жесток и грустен, когда ему херово.

Жизнь - старый поэт, жизнь - усталый поэт,

А я... Что я? Его инструмент!...

 

Разработка Broadcom: http://www.rk-team.net/

Новости проекта QuB на Twitter

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

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

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

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

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

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

Войти

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

Войти


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