[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Программирование под ОС / Assembler /

функции дизассемблер ida

На этом шаге мы рассмотрим основные возможности дизассемблера IDA PRO.

Это один из самых мощных дизассемблеров. Работая над текстом дизассемблируемой программы, вы можете называть своими именами метки и процедуры, давать свои комментарии так, что дизассемблированный текст становится в конце концов ясным и понятным. Имена и комментарии сохраняются в отдельном файле и при последующем запуске, естественно, восстанавливаются. Внешний вид дизассемблера IDA PRO показан на рисунке 1.

IDA PRO
Рис.1. Пример дизассемблированной программы

Рассмотрим некоторые возможности этого дизассемблера.

  • Переименование процедур и меток в программе. При дизассемблировании IDA PRO дает свои названия процедурам и меткам. Вы можете ввести свои названия, тем самым сделав программу более понятной. Все изменения, сделанные в тексте, сохраняются в отдельном файле и могут быть восстановлены при повторном запуске.

     

  • Распознавание библиотечных и API-функций. Дизассемблер не просто распознает эти функции, но и комментирует параметры этих функций. При помощи контекстного меню или двойного щелчка мышью вы можете перейти по команде JMP или по команде CALL в указанное место программы и так продолжать осуществлять переходы любое количество раз. Возвратиться на любое количество шагов можно, используя кнопку "стрелка" на панели инструментов.

    При помощи комбинации клавиш Shift+Insert, Insert, а также пунктов меню Edit в любом месте программы можно записать комментарий. Комментарий, как и введенные названия меток, запоминается в отдельном файле. В комментарии может присутствовать адрес строки программы или имя метки. Если сделать двойной щелчок мышью по адресу или метке, то мы как раз и очутимся на этом месте.

     

  • Сворачивание и разворачивание процедур. При помощи клавиши "минус" на дополнительной клавиатуре можно свернуть процедуру, а при помощи клавиши "плюс" развернуть процедуру. Представление процедур в свернутом виде позволяет представить программу в более компактном и более понятном виде.

     

  • IDA PRO весьма аккуратно распознает не только код, но и данные. На рисунке 2 показана дизассемблирования часть программы, содержащей данные.

    IDA PRO
    Рис.2. Дизассемблированные данные

     

  • Создание и выполнение командных файлов. Язык командных файлов очень близок к языку С. Приведем текст только одного такого командного файла с именем functest.idc, содержащийся в пакете IDA PRO.
    //
    // This example shows how to get list of functions.
    //

    #include <idc.idc>

    static main() {
    auto ea,x;

    for ( ea=NextFunction(0); ea != BADADDR; ea=NextFunction(ea) ) {
    Message("Function at %08lX: %s",ea,GetFunctionName(ea));
    x = GetFunctionFlags(ea);
    if ( x & FUNC_NORET ) Message(" Noret");
    if ( x & FUNC_FAR ) Message(" Far");
    Message("\n");
    }
    ea = ChooseFunction("Please choose a function");
    Message("The user chose function at %08lX\n",ea);
    }

Прокомментируем приведенную программу. Как легко догадаться, организация цикла и условные конструкции имеют в точности тот же синтаксис, что и в языке С. Главное здесь - понять смысл используемых библиотечных функций. Легко видеть, что функция Message просто выводит строку в окно сообщений, которое находится под основным окном. Функция ChooseFunction вызывает окно, которое вызывается также из меню Jump to Function. Функция GetFunctionFlags возвращает информацию об указанной дизассемблированной функции. Наконец функция NextFunction осуществляет переход на следующую дизассемблированную функцию, возвращая также ее адрес. Аргументом функции NextFunction является адрес дизассемблированной функции, от которой осуществляется переход на следующую дизассемблированную функцию.

Программа IDA PRO осуществляст дизассемблирование модулей самых различных форматов: OBJ, EXE, DLL, VXD, ZIP, NLM и др.

Функциональность IDA PRO может быть значительно усилена посредством подключаемых модулей - plugin. Подключаемые модули пишутся на языке C++ и имеют структуру РЕ-модулей. Подключение модулей осуществляется через горячие клавиши или через пункты меню Edit | Plugins. Подключаемые модули находятся в специальном каталоге Plugins, где находится и файл конфигурации, где указаны эти модули.

Еще одна приятная особенность дизассемблера - он создает ассемблерный файл, с которым затем можно работать уже в текстовом режиме.




Комментарии

ivan
02-12-2010   
hello man! it is the first comment on this site!

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Программирование под ОС / Assembler /

Первая программа на linux
23-05-2010   

Ассемблер, который я буду использовать - NASM (Netwide Assembler, nasm.2y.net). Этот выбор объясняется тем, что: Во первых, он мультиплатформенный, т.е. для портирования программы на разные ОС достаточно только изменить код взаимодействия с системой, а всю программу переписывать не нужно... подробнее

Кол. просмотров: общее - 3594 сегодня - 1

Использование пакета NuMega Driver Studio для написания WDM - драйверов устройств
17-05-2010   

Разработка WDM - драйвера с использованием только DDK является сложной и трудоемкой задачей. При этом приходится выполнять много однотипных операций: создание скелета драйвера, написание inf - файла для его установки, создание приложения для тестирования и т.п... подробнее

Кол. просмотров: общее - 3213 сегодня - 2

Система классов DriverWorks
17-05-2010   

Возможно, идея писать драйвера объектно-ориентированными и кажется на первый взгляд нелогичной. Но при более близком знакомстве с DriverStudio и с драйверами в общем, оказывается, что это не так уж страшно и довольно удобно... подробнее

Кол. просмотров: общее - 3242 сегодня - 1

Объект устройства device object
17-05-2010   

Объекты устройств являются экземплярами класса KDevice или KPnpDevice. Эти классы являются краеугольными камнями архитектуры DriverWorks: они представляют собой как бы программный образ тех устройств, которые присутствуют в системе... подробнее

Кол. просмотров: общее - 3278 сегодня - 0

Объекты для управления оборудованием
17-05-2010   

Как было упомянуто выше, объект устройства управляет работой устройства при помощи специальных объектов, управляющих работой оборудования - портами В/В, прерываниями, памятью, контроллерами ПДП. Драйвер создает эти объекты для представления физических параметров устройства... подробнее

Кол. просмотров: общее - 3462 сегодня - 1



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects