Как декомпилировать bin прошивку
Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».
Продолжая пользоваться сайтом, вы соглашаетесь с условиями использования файлов cookie
Как декомпилировать bin прошивку
Доброго времени суток форумчанам. Нужен совет — занимаюсь программированием блоков управления автомобилей, как говорится делаю чип-тюнинг, но мне этого мало, имею огромный интерес к самим процессам происходящим в аппаратной части. Так как для моей работы есть готовые программы — всё в наглядном виде и ни какого труда не составляет работать. Файл прошивки автомобиля является бинарным файлом размером в основном 32 килобайт — именно об этом файле и идёт речь. Открывая этот файл в НЕХ редакторе вижу только цифры и буквы, слышал такие слова как декомпилятор, раскриптовать и т.п. но что и к чему не понимаю.. Не знаю ни каких языков (т.к. знание Бейсика 20 лет назад можно считать не знанием) Подскажите с помощью каких программ или языков я смогу открыть этот файл в виде команд и строк и уже потом разобраться в самих алгоритмах. Если необходимо — могу выложить любой из файлов, что бы было более понятно с каким видом файлов (программ) мне бы хотелось бы разобраться. Заранее благодарен, Чайник-энтузиаст)))
P.S. — поисх ничего не дал, извините ежели что.
Пользователь
Регистрация: 19.12.2011
Сообщений: 11
Я понимаю что таких чайников как я ещё нужно постараться поискать, потому как многие кто есть на этом форуме люди более менее имеют хотя бы понятие. Спасибо модератору за то , что изменил название темы ( я изначально чуть не так написал) — это мне дало повод для поиска, а вернее я не знал термина декомпилятор — его назначения. Забил в поиск программы по декомпиляции и вот оно, небольшое, но продвижение! Установив программу «Ida» мне стало ясно , что для того что бы правильно декомпилировать нужно знать процессор, для которого был изначально написан бинарный файл, но в Ide не оказалось такого процессора, возможно они имеют семейства и я просто не знаю к каким относится » мой» (Siemens 80C515), тем не менее движение есть. Понимаю что для того , что бы разобраться в своём вопросе мне нужно знать работу «своего» процессора , что да как полностью не въехал, нужно время. Возможно мой вопрос будет для вас странным, но хотелось бы получить совет — есть ли возможность по декомпилированному файлу определить на каком языке был написан файл, или декомпилированный можно открыть на любом из языков (я просто не понимаю разницу в них) Мне не охота тратить время на изучение всех языков, хотел бы выбрать один , нужный. Знаю наперёд что задачу поставил перед собой очень сложную, но как говорится в японской пословице — «Всё что не убивает самурая делает его сильнее!» . Заранее благодарен если кто то остановится не пройдя мимо моей темы.
Последний раз редактировалось pobedyst; 20.12.2011 в 02:37 .
Форумчанин
Регистрация: 30.01.2011
Сообщений: 231
pobedyst, я в теме не разбираюсь, но думаю что прошивки пишут либо на асемблере, либо на специфическом для данного устройства языке.
Злостный анимешнег =^.^=
Регистрация: 31.05.2010
Сообщений: 13,543
Язык, который Вам необходимо изучить называется Assembler. Для каждого микроконтроллера система команд специфична, поэтому и ассемблер жля каждого свой. Фирмы-разработчики, как правило поставляют ассеблеры для своих устройств. Многие можно найти в интернете по запросу марки микроконтроллера.
С декомпилятором (дизассемблером) несколько сложнее. Здесь нужно связаться с фирмой-разработчиком или с фирмой, делавшей прошивку для этого процессора.
Хотя исходники врядли кто Вам вышлет.Но, как говорьтся, попытка не пытка.
Можно декомпилировать и вручную. Необходимо только знать систему команд.
Ну или заказать программисту, написать дизассемблер. Правда такая разработка выльется в копеечку.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Последний раз редактировалось Smitt&Wesson; 20.12.2011 в 07:48 .
Smitt&Wesson |
Посмотреть профиль |
Найти ещё сообщения от Smitt&Wesson |
Пользователь
Регистрация: 19.12.2011
Сообщений: 11
Smitt&Wesson , большое спасибо за информативный ответ, я думал что прийдётся пару страниц прочитать ответов , что бы понять что к чему а тут в двух словах со всех сторон )))Попробую найти теперь )))
Ну или заказать программисту, написать дизассемблер. Правда такая разработка выльется в копеечку. |
А есть ли среди программистов некий прайс, что ли? сколько может стоить такая работа?
Как отредактировать файлы прошивки
там каракули какие то. в блокноте так же открывается. существует какой нибудь более читабельный вариант?
dima555
( 29.09.18 21:38:40 MSK ) автор топика
Ответ на: комментарий от dima555 29.09.18 21:38:40 MSK
Тебе каракули не видны? Сделай яркость монитора ярче, я всегда так делаю.
anonymous
( 29.09.18 21:53:43 MSK )
Полностью опиши задачу, которую ты должен сделать, пожалуйста.
anonymous
( 29.09.18 21:54:48 MSK )
Ответ на: комментарий от anonymous 29.09.18 21:54:48 MSK
есть подозрение что прошивка на мой асик манит налево. хочу узнать куда
dima555
( 29.09.18 22:11:48 MSK ) автор топика
Ответ на: комментарий от dima555 29.09.18 22:11:48 MSK
anonymous
( 29.09.18 22:41:11 MSK )
Ответ на: комментарий от dima555 29.09.18 21:38:40 MSK
Ах, каракули. А ты думал там литературный текст будет? Изучай ассемблер и инструментарий для реверс инжиниринга, если тебе «очень надо».
slovazap ★★★★★
( 29.09.18 23:50:16 MSK )
i-rinat ★★★★★
( 30.09.18 17:24:21 MSK )
Для таких вопросов есть 4пда.
time_LORd ★
( 30.09.18 17:26:24 MSK )
Ответ на: комментарий от dima555 29.09.18 21:38:40 MSK
Файл бинарный, открывать его надо в hex редакторе, ну а текст читать по 8-ричной таблице символов.
torvn77 ★★★★★
( 30.09.18 17:28:29 MSK )
Про то, как монтировать JFFS2, товарищ на ЛОРе даже FAQ выкладывал, пользуйся поиском.
hobbit ★★★★★
( 30.09.18 17:30:57 MSK )
О, о, я смотрю профи собрались. dtb надо декомпилировать dtc. Это Device Tree Blob. Он тебе не расскажет ничего про то, куда прошивка ходит так как это просто конфиг ядра. .jffs2 — образ файловой системы jffs2. Его можно посмотреть если включить виртуальный флеш и туда записать, ну или qemu. hex-редакторами долго будешь искать. К тому же оно сжатое и текстовых строк не будет видно.
Как декомпилировать программу?
Здравствуйте. Только начал пробовать участвовать в ctf, возник вопрос, как декомпилировать простую программу, написанную на С, скомпилированную для linux? Скачал IDA, открыл файл и обнаружил много раздробленного кода на ассемблере:
Так и должно быть? Как во всём этом разобраться? Мне бы хотя бы примерно понять структуру программы.
На моём линуксе эта программа еще и не запускается почему-то — просто пишет «No such file or directory.», Linux Ubuntu x86_64, программа 32 битная. В чем может быть проблема?
Сама программа, на всякий случай тут.
- Вопрос задан более трёх лет назад
- 10251 просмотр
Комментировать
Решения вопроса 1
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Ответы на вопрос 4
Для правильного вопроса надо знать половину ответа
Как разобраться? Для начала освоить ассемблер, хотя бы на базовом уровне, чтобы понимать смысл команд. Затем определить стандарт передачи данных в подпрограммы для варианта компиляции вашей программы. Потом изучать все эти подпрограммы sub_XXXX и пытаться понять, что они делают. По ходу изучения переименовывать подпрограммы и адреса данных в удобочитаемую форму. Когда смысл всех подпрограмм станет ясен, можно будет понять, что в целом делает программа.
Ответ написан более трёх лет назад
Нравится 2 4 комментария
TAnonim @TAnonim Автор вопроса
Однако здесь, в разборе решения, bruce30262.logdown.com/posts/1256093-33c3-ctf-2016. приводятся прямо куски нормального кода на С. Как он мог их получить?
TAnonim: С опытом приходит понимание того, как структуры данных и команды C переводятся на ассемблер. Накопив определённый базис можно восстанавливать примерный исходный код на C, а зная, что делает программа и давать осмысленные названия переменным.
TAnonim: В платной версии IDA есть плагин Hex-Rays Decompiler, внутри функции нажимаете F5, и возможно получите некий Си код с помощью этого плагина.
TAnonim @TAnonim Автор вопроса
Руслан: Спасибо, действительно помогает!
С новым годом 🙂
На моём линуксе эта программа еще и не запускается почему-то — просто пишет «No such file or directory.»,
Как вы её запускаете то? Нужно указывать полный путь, или относительный. Но начальная компонента в пути обязательно должна быть.
Ответ написан более трёх лет назад
Нравится 1 7 комментариев
TAnonim @TAnonim Автор вопроса
естественно. тот же ls показывает, что программа есть, а когда пытаюсь запустить через ./babyfengshui (находясь в каталоге с ней) выкидывает ошибку.
С наступающим 🙂
TAnonim: И вас с наступающим! А права на исполнение у файла есть?
TAnonim @TAnonim Автор вопроса
fshp: Спасибо. Да, пробовал и через sudo и через chmod давать права -xu вроде. Этого достаточно?
TAnonim: это вы отобрали права.
TAnonim: поставьте 777
TAnonim @TAnonim Автор вопроса
fshp: даже смешно немного. Ну chmod я ставил правильный до этого, это я вам не так сказал, сейчас, на всякий случай, попробовал переставить на 777, но все равно та же история — no such file.
TAnonim @TAnonim Автор вопроса
Кстати, та же команда file выводит информацию о приложении: «ELF 32-bit LSB executable». Linux у меня, как я уже говорил, Ubuntu x86_64. Может это всё-таки из-за разрядности?
Вы используете только дизассемблер, а необходим еще декомпилятор C++ (например Hex-Rays — скачайте и установить его в IDA), а также отладчик как средство отслеживания и контроля программы в работе, для UNIX очевидным выбором является отладчик gdb , да и для других ОС он тоже применяется хотя порой с меньшим успехом.
К тому же у вас совсем нет опыта иначе бы вы хотя бы догадались что сперва нужно открыть функцию main в списке слева, поскольку выполнение executable начинается с этой функции.
Сама программа, на всякий случай тут.
На тот случай, если я недостаточно устал от работы, чтобы еще и вами заниматься, а то нечего мне тут бездельничать на Новый год, да? 🙂
Только начал пробовать участвовать в ctf
Лучше бы вы работали.
Это сложное дело, для него требуется обрести новые навыки, а то и слегка перестроить мышление, для такой перестройки нужен серьезный стимул, например заказ на фрилансе на большую сумму и с уже выплаченным большим авансом, а не спонтанно захотел и сделал, как хотели бы многие.