ARMV4i (Windows Mobile 6) Дизассемблер собственного кода

StackOverflow https://stackoverflow.com/questions/22309

  •  09-06-2019
  •  | 
  •  

Вопрос

Кто-нибудь знает дизассемблер для АРМВ4и исполняемые файлы и библиотеки DLL?

У меня есть плагин DLL, который я пишу с очень редкой data abort (<5% времени), которую я сузил до конкретной функции (через корзину и адрес, выводимый data abort).Однако это довольно большая функция, и мне хотелось бы ее немного сузить.Я знаю, что это происходит в memset() call, но в этой конкретной функции их около 35, поэтому я надеялся, что, просмотрев дизассемблирование, я смогу выяснить, в чем на самом деле заключается проблема.

Это было полезно?

Решение

IDA Pro обязательно выполнит разборку ARM.И они (Datarescue) однажды выдали мне лицензию примерно в 23:00 по местному времени, так что я бы порекомендовал их...

Я вижу из http://www.datarescue.com/idabase/ что в компании произошла некоторая реорганизация, но я думаю, что это по-прежнему хороший продукт.

Вот ссылка на нового издателя: http://www.hex-rays.com/idapro/

Другие советы

я полагаю, что ИДА Про сделаю то, что ты хочешь.Он упоминался в книге O'Reilly Security Warrior, и я видел его рекомендации на форумах разработчиков Windows Mobile.

Зачарованные представляет собой дизассемблер и ассемблер Windows Mobile / Pocket PC / Win CE (для процессоров ARM).

Вы также можете посмотреть BDASM, условно-бесплатный дизассемблер — более поздние версии имеют плагины ARM.Сайт, похоже, не работает, но если поискать, то можно найти условно-бесплатный дистрибутив.

Исходный код простого дизассемблера ARM, РАЗОРУЖЕНИЕ, также доступен.

Для выполнения дизассемблирования можно использовать binutils (инструменты компилятора Linux) objdump: «objdump -bbinary -m Arm7tdmi -D имя_файла»

-Адам

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

В вашем случае не могли бы вы попросить компилятор сгенерировать ассемблерный лист скомпилированного кода?Это может помочь вам расширить возможности.

В противном случае вы можете разбить свою функцию на одну или несколько новых функций, если все, что вы можете получить, это трассировку стека.Затем снова разбейте новую функцию на одну или несколько.Это проверенный метод «разделяй и властвуй».А если у вас есть 35 вызовов memset() в одной функции, это может быть хорошей идеей и с точки зрения дизайна!

Обновлять:Я нашел пакет, который использовал: АРМфетамин.Это работало для кода ARM9, который я разрабатывал, но похоже, что он не обновлялся уже довольно давно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top