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

Кто-нибудь знает дизассемблер для исполняемых файлов ARMV4i и DLL?

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

22.08.2008 13:17:48
Также полезным будет сгенерированный компилятором листинг сборки; это может быть проще соотнести с источником. Часто data abortsпечатают указатели стека и рамки; конечно, регистр ссылок lrбудет полезен. Я надеюсь, что Windows Mobile даст эту информацию.
artless noise 1.03.2013 04:56:04
4 ОТВЕТА
РЕШЕНИЕ

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

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

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

3
26.08.2008 18:57:33

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

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

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

Обновление: я нашел пакет, который я использовал: ARMphetamine . Он работал для кода ARM9, который я разрабатывал, но, похоже, он не обновлялся уже довольно давно.

0
13.09.2008 01:51:53

Я верю, что IDA Pro сделает то, что вы хотите. Это было упомянуто в книге О'Рейли по безопасности, и я видел ее рекомендованной на форумах разработчиков Windows Mobile.

3
26.08.2008 18:47:47

ChARMeD - дизассемблер и ассемблер для Windows Mobile / Pocket PC / Win CE (для процессоров ARM)

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

Исходный код для простого дизассемблера ARM, DISARM , также доступен.

Objdump binutils (инструменты компилятора Linux) можно использовать для создания разборки, "objdump -b бинарный -m arm7tdmi -D имя_файла"

-Адам

1
13.09.2008 02:13:04