DisARM Studio lite | Дизассемблер/отладчик для WindowsCE



Реп: (50)
DisARM Studio lite

Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение

ВНЕШНИЙ ВИД:
  • Поддержка portrait и landscape режимов
  • Возможность скрывать информацию, которая в данный момент не нужна (например: виды Registers, File name, Memory view, File view) через вкладку General в Tools\Settings
  • Вид File name отображает имя файла, с которым работает пользователь
  • Вид File view отображает содержимое файла в виде ANSI
  • Вид Memory view отображает содержимое выбранного сегмента памяти во время отладки (см. отладка)
  • Вид Registers отображает состояние регистров общего назначения, управления и слово состояние процессора во время отладки
AНАЛИЗ КОДА:
  • После открытия файла для анализа необходимо в появившемся окне Sections выбрать секции, которые будут дизассемблированы, изменить выбор можно в меню View\Sections
  • Процесс анализа кода начинается при уже открытом файле, после выбора пункта меню File\Disassemble.
  • На время дизассемблирования файла для ускорения процесса рекомендуется скрывать отображение листинга кода Tools\Settings\General\Hide codelist during disasm
  • Анализ происходит в отдельном потоке, в результате чего интерфейс доступен для пользователя
  • Анализатор при соответствующих настройках (Tools\Settings\Analyse) способен обнаруживать: данные, строки (как с выравниванием по align в 4 байта, так и без), перекрестные ссылки (XREFs), прямые и обычные вызовы API функций (см. ниже), определять адреса ординалов функций в файле.
  • Анализатор способен динамически восстанавливать имена импортируемых API функций всех использующихся файлом библиотек. Таким образом, обычный вызов функции выглядит как BL swprintf, а прямой как LDR R4, __swprintf (с последующим кодом MOV PC, R4)
  • Обнаруженные элементы подсвечиваются различными цветами (зеленый – код, красный – строка, розовый – ординал, серый фон – наличие перекрестных ссылок)
РАБОТА С КОДОМ:
  • Доступный после анализа пункт меню View\Import func. позволяет увидеть список обнаруженных импортируемых функций. Двойной тап по функции в этом списке позволяет перейти на код загружающий ее ординал, и соответственно по XREF найти ее вызов.
  • Доступный после анализа пункт меню View\Strings позволяет увидеть список обнаруженных текстовых строк. Двойной тап по строке в этом списке позволяет перейти к месту в коде где она записана.
  • Для работы с кодом предусмотрено всплывающее меню, некоторые функции которого дублируются основном меню.
  • Пункт меню View as позволяет преобразовывать выделенную в листинге строку в код, данные или текстовую строку.
  • Пункт Bookmarks позволяет создавать (Add), удалять (Delete) и перемещаться по уже существующим закладкам (Prev, Next). Окно со списком всех закладок можно вызвать из меню Edit\Bookmarks, где также посредством всплывающего меню можно удалить одну или все закладки. Двойной тап в этом списке позволяет моментально перейти к выбранной закладке.
  • Пункт Positions позволяет перемещаться назад/вперед по коду после прыжков через "BL xx", по той же схеме как и в IDA.
  • Пункт Instruction\Details позволяет увидеть детали команды, а именно установленные биты, условия, типы смещений, значения смещений и все остальное содержащееся в операционном коде. Этой функции нет в других дизассемблерах, а необходима она для реализации в дальнейшем интерактивного редактирования инструкции (см. ниже)
  • Пункт Instruction\Edit создан для интерактивного редактирования команды, изменяя составляющие детали ее операционного кода. Например, чтобы изменить условие при котором будет исполнена команда достаточно будет двойным тапом вызвать выпадающее меню после чего выбрать из списка другое условие. Данная система доступна только в полной версии программы.
  • Пункт Instruction\Replace призван полностью заменить команду, переписав на ее место новую. При включенной настройке Tools\Settings\General\Allow Patch этот пункт становится доступным. Данная система доступна только в полной версии программы.
  • Пункт меню Find позволяет искать заданный текст выше или ниже (Prev, Next) текущей выбранной инструкции. Задать текст для поиска можно в меню Edit\Find.
  • Пункт меню Breakpoints позволяет устанавливать (Add), удалять (Delete) и вызывать список точек останова (List) необходимых для отладки. Данное меню дублируется в главном меню Debug
  • Пункт меню Follow позволяет переходить по адресам назначения функций ветвлений (B, BL).
  • Пункт меню XREFs вызывает окно вызовов данной строки. Двойной тап на вызове позволяет моментально переместиться к нему в листинге кода.
  • Перемещение к нужному адресу осуществляется вызовом из основного меню пункта Edit\Go To … Перемещение всегда идет по активному виду. Поддерживается перемещение по коду, памяти и файлу.
  • Перемещение к Entry Point осуществляется вызовом из основного меню пункта Edit\Go To EP
  • Перемещение к функции по коду "BL xx" осуществляется двойным тапом.
ОТЛАДКА:
  • Для начала отладки вы берите в меню Debug\Start Process, при этом в правом углу над мен появятся кнопки U (update memory), CP (Continue process), TP (Terminate process), SI (Step into), SO (Step over). Каждая из них имеет всплывающую подсказку. Данные кнопки становятся доступными только после попадания в точку останова или при пошаговой отладке.
  • Прервать процесс отладки можно с помощью пункта или кнопки Terminate Process
  • Step into и Step over осуществляют пошаговую отладку соответственно со входом в подпрограмму и через вызовы.
  • Для установки сегмента памяти для просмотра необходимо нажать на кнопку U (или выбрать в меню Tools\Set Mem. range) и задать начальный адрес и количество байт (не более 100) для отображения в окне View memory.
  • Вернуться к Program counter во время точки останова, можно выбрав пункт меню Debug\Go To PC.
УТИЛИТЫ:
  • Offset Calc помогает рассчитать смещение хранящееся в операционном коде для команд ветвления. Допустим, если необходимо рассчитать смещение для команды 11010: BLEQ 110С0, тогда в Source введем 11010, а в Destination 110С0, тогда смещение будет XX 00 00 2A, первый байт в последствие займет код команды BLEQ.
  • Dumper - дампер памяти и процессов с восстановление заголовка PE для упакованых файлов (только в полной версии)
  • API Hooker - хукер для основных API WindowsCE (только в полной версии)
  • HEX Calc представляет собой обычный шестнадцатеричный калькулятор с поддержкой множества бинарных операций, отсутствующих в стандартных калькуляторах, таких как сдвиги на n бит влево и вправо со входом нуля или единицы, циклические сдвиги на n разрядов, различные логические операции.
Поддерживаемые платформы:
WM2003, WM2003SE, WM5, WM6

Disclaimer
Программа распространяется по лицензии "dci" :) , всмысле добавление и изменение функционала происходит на усмотрение автора, но информация об ошибках приветствуется.
Суть данного топика - поделиться с народом хорошей тулзой, а не собирать разные негативные мнения в отношении ее внешнего вида, работы и т.п., поэтому чем зря метать какашки, лучше идем по ссылке и выбираем себе там что-то по душе.
Также предупреждаю сразу, что глюки есть (например при пошаговой отладке), но если во время работы думать что делаешь, а не тыкать куда попало, то можно на них и не нарваться.
Насчет возможных ХР - лишний раз отбекапиться никогда не повредит :D.


Прикрепленные файлы

Прикрепленный файлDisARM_Studio_lite.cab ( 164.99 КБ )



Реп: (785)
Он сделал это!!! :vinsent:



Реп: (2)
О- :censored: еть! Терь буду :butcher: ...



Реп: (64)
ура!!!



Реп: (2)
мои поздравления Гето)
понимать бы еще как это все рабает)



Реп: (0)
Getorix,
Мои поздравления.
Действительно великая вещь!!!
Я незнаю что ещё сказать можно...



Реп: (147)
понравилось на первый взгляд, мощно.
пара вопросов, если не возражаете:
1. почему полная версия недоступна и как ее надыбать, крекнуть лайтовым дисармом или в лайт отсутвуют некоторые компоненты?
2. работа с памятью вживую поддерживается или нет, по типу как в софтайсе?
3. что означает show reg. list ? у меня окно пустое было.

Added @ 08.10.2007, 15:38

упс. забыл бэкап сделать, но и глюков никаких не выскакивало)



Реп: (785)
Отвечу за Геторикса, а он поправит завтра, если что.

Outcast-d.o.b @ 08.10.07 15:36:40
почему полная версия недоступна

Баги отрабатываются на лайте.
Outcast-d.o.b @ 08.10.07 15:36:40
лайт отсутвуют некоторые компоненты

Именно так.
Outcast-d.o.b @ 08.10.07 15:36:40
работа с памятью вживую поддерживается или нет, по типу как в софтайсе?

Планируется рабочая реализация в полной версии.
Outcast-d.o.b @ 08.10.07 15:36:40
что означает show reg. list ?

Список регистров.



Реп: (147)
благодарю за поддержку. +1



Реп: (50)
dci, пасиб, все правильно.



Реп: (3)
Getorix, спасибо за прекрасную прогу. Ураааа!!!!!



Реп: (11)
Вот еслибы естчо обучить прогу отлову мемори ликов в конкретном приложении, было бы совсем расчудесно



Реп: (56)
Автор в теме давненько не появлялся, и люди, к нему приближенные- тоже. Наверно на то есть свои причины..

Сообщение отредактировал secondmaj - 26.05.09, 00:01



Реп: (50)
Вот еслибы естчо обучить прогу отлову мемори ликов в конкретном приложении, было бы совсем расчудесно

Для начала неплохо было бы ее обучить свои собственные лики ловить, менеджера памяти там нету, пожалуй как и порядка вообще, писалось в перерывах на работе...

Автор в теме давненько не появлялся, и люди, к нему приближенные- тоже. Наверно на то есть свои причины..

Жизнь диктует нам свои суровые законы (с)

Но главное, конечно, смысл утерян :(



Реп: (108)
Отличная прога! Смысл есть! Вот я, например, с ее помощью отловил, как в стандартных прогах на моем коммуникаторе обращаются к акселерометру. Теперь существует библиотека, позволяющая управлять акселерометром в играх от HTC.

Сообщение отредактировал aleks_dsp - 31.05.09, 22:11



Реп: (50)
Вот я, например, с ее помощью отловил, как в стандартных прогах на моем коммуникаторе обращаются к акселерометру.

Ну и у меня резонный вопрос, почему не с помощью IDA?



Реп: (108)
На самом кпк было удобнее, так как данные с датчика только он (кпк) может получить.
Конечно, может и IDA умеет работать с устройством, я не знаю...



Реп: (1)
извиняюсь, продолжения disarm или открытых сорцов, буде автор разочаровался, не предвидится? не стоит такие наработки вот так выбрасывать.
спасибо


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 29.03.24, 12:04