Сведения о вопросе

None

19:40, 1st August, 2020

Теги

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

Просмотров: 469   Ответов: 4

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

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



  Сведения об ответе

PIRLO

05:42, 7th August, 2020

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


  Сведения об ответе

qwerty101

12:49, 14th August, 2020

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

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

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


  Сведения об ответе

nYU

14:58, 15th August, 2020

ChARMeD -это Windows мобильный / карманный PC / Win CE (для ARM CPUs) дизассемблер и ассемблер

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

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

Пакета binutils (linux компилятора) objdump может быть использована для того чтобы произвести разборку, "objdump -b binary -m arm7tdmi -D file_name"

-Adam


  Сведения об ответе

COOL

00:07, 5th August, 2020

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

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться