2008-08-22 11 views
2

Кто-нибудь знает о дизассемблере для ARMV4i исполняемых файлов и DLL?ARMV4i (Windows Mobile 6) Разборный код

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

+0

Также полезно будет компилятором сборка листинга; возможно, легче сопоставить источник. Часто `data aborts` печатает указатели стека и рамки; конечно, был бы полезен регистр ссылок `lr`. Надеюсь, Windows Mobile предоставит эту информацию. – 2013-03-01 04:56:04

ответ

2

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

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

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

0

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

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

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

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

4

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

1

ChARMeD является Windows Mobile/Pocket PC/Win CE (для процессоров ARM) Disassembler и Assembler

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

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

В Binutils (Linux компилятор инструменты) objdump могут быть использованы для производства разборку, "objdump -b двоичный -m ARM7TDMI -D имя_файла"

-Adam