Программа ida что это
Программа ida что это
IDA Pro Disassembler (англ. Interactive DisAssembler ) — интерактивный дизассемблер, который широко используется для реверс-инжиниринга. Он отличается исключительной гибкостью, наличием встроенного командного языка, поддерживает множество форматов исполняемых файлов для большого числа процессоров и операционных систем.
Позволяет строить блок-схемы, изменять названия меток, просматривать локальные процедуры в стеке и многое другое.
В последних версиях имеет встроенный отладчик x86 и ARM.
IDA, до определенной степени, умеет автоматически выполнять анализ кода, используя перекрестные ссылки, знание параметров вызовов функций стандартных библиотек, и другую информацию. Однако вся сила его проявляется в интерактивном взаимодействии с пользователем. В начале исследования дизассемблер выполняет автоматический анализ программы, а затем пользователь с помощью интерактивных средств IDA начинает давать осмысленные имена, комментировать, создавать сложные структуры данных и другим образом добавлять информацию в листинг, генерируемый дизассемблером пока не станет ясно, что именно и как делает исследуемая программа.
Содержание
Версии поставки
Существует несколько версий IDA Pro — бесплатная (freeware), стандартная (standard) и расширенная (advanced). Бесплатная версия обладает ограниченными возможностями по сравнению со стандартной и расширенной версиями — поддерживается только архитектура x86 и отсутствует поддержка подключаемых модулей.
Поддерживаемые форматы исполняемых файлов
Известные утечки
См. также
Примечания
Литература
Ссылки
Полезное
Смотреть что такое «IDA» в других словарях:
Ida — or IDA can refer to:PeopleInfobox Given Name Revised name = Ida imagesize= caption= pronunciation= gender = Female meaning = region = origin = related names = footnotes = derived = Old Norse ið meaning deed or action Ida is a female name derived… … Wikipedia
IDA — ist: ein Vorname, siehe Ida (Vorname) Ida (Asteroid) Idagebirge auf Kreta, Griechenland, siehe Psiloritis ein Gebirge in der Türkei, siehe Ida (Gebirge, Türkei) ein Fluss in der Slowakei, siehe Ida (Fluss) folgende Städte / Gemeinden in den USA,… … Deutsch Wikipedia
Ida — ist: ein Vorname, siehe Ida (Vorname) (243) Ida, der erste bekannte Asteroid mit eigenem Mond ein 47 Millionen Jahre altes Primaten Fossil, siehe Darwinius Ida (Band), eine in den 1990ern gegründete Indie Rock Band aus New York City Geografisches … Deutsch Wikipedia
Ida’an — Parlée en Malaisie Région Sabah Nombre de locuteurs 5 000 (en 2000)[1] … Wikipédia en Français
IDA — International Development Association (IDA) USA Set up in 1960, the International Development Association (IDA) is one of two institutions that make up the World Bank and one of five institutions that make up the World Bank Group. The IDA aims to … Law dictionary
Ida [1] — Ida (a. Geogr.), 1) hohes, waldiges, quellenreiches Gebirg in Mysien; seine höchsten Spitzen waren Gargara u. Kotylos (j. Kaz dagh); auf ihm die Höhle, wo Priamos erzogen wurde, u. Tempel der Kybele (daher diese Idaea mater hieß); noch j. Ida, im … Pierer’s Universal-Lexikon
Ida — Ida, der; : (im Altertum) Gebirge in Kleinasien u. auf Kreta. * * * IDA [englisch aɪdi eɪ], Abkürzung für International Development Association, die Internationale Entwicklungsorganisation. * * * Ida, der; : (im Altertum) Gebirge in Kleinasien… … Universal-Lexikon
Ida — Ida, LA U.S. village in Louisiana Population (2000): 258 Housing Units (2000): 133 Land area (2000): 1.391536 sq. miles (3.604062 sq. km) Water area (2000): 0.000000 sq. miles (0.000000 sq. km) Total area (2000): 1.391536 sq. miles (3.604062 sq.… … StarDict’s U.S. Gazetteer Places
Ida, LA — U.S. village in Louisiana Population (2000): 258 Housing Units (2000): 133 Land area (2000): 1.391536 sq. miles (3.604062 sq. km) Water area (2000): 0.000000 sq. miles (0.000000 sq. km) Total area (2000): 1.391536 sq. miles (3.604062 sq. km) FIPS … StarDict’s U.S. Gazetteer Places
Ida [2] — Ida, s. Nagy Ida … Meyers Großes Konversations-Lexikon
Ida — f English: originally a Norman name, of Germanic origin, derived from the element íd work. This died out during the later Middle Ages. It was revived in the 19th century, mainly as a result of its use in Tennyson s The Princess (1847) as the name … First names dictionary
Скачать IDA Pro
IDA Pro –уникальная программа, которая получила признание во всем мире, а теперь и на русском языке включительно. Если речь идет о дизассемблировании, то конкурентов данной утилите нет. Достаточно скачать Айди Про одним файлом и установить, чтобы начать использование в полном объеме. Стоит отметить, что продукт предоставляется в сборке Standard (поддерживает больше 20 популярных семейств процессоров) и Advanced (рассчитан на 50 и более). В зависимости от прямого назначения стоит выбрать подходящие параметры. Также одну из версий можно расширить или упросить, если возникла необходимость.
Чтобы скачать бесплатно IDAPro, необходимо лишь кликнуть на ссылку. Установщик является мультиплатформенным и поддерживает набор команд на 32 и 64 бита. Русская версия для Windows установлена по умолчанию, изменить язык можно в меню настроек.
В чем особенность программы? Утилита является профессиональным дизассемблером, который уже содержит в себе большинство модулей и функций. Это существенно облегчает работу, позволяет быстрее обрабатывать большой объем данных. В рабочей среде есть удобный поиск. С его помощью можно быстро найти и заменить нужную часть кода. Устанавливается продукт на компьютер без дополнительного программного обеспечения. После окончательной установки требуется перезагрузка системы, чтобы новые параметры вступили в силу, и утилиту было видно в списке программ.
Также можно задать и привязку (к примеру, открывать файлы данного формата именно через эту программу в Виндовс).Удобнее только скачать IDAPro и выполнять процесс дизассемблирования, чем компилировать данные через несколько приложений. Сохраняются все пользовательские настройки. В рабочей среде уже есть готовые шаблоны, которые можно изменить, удалить или создать новые. Это повышает комфорт использования продукта в целом. Последние действия можно отменить, используя навигацию или стандартную комбинацию клавиш.
Фундаментальные основы хакерства. Мастер-класс по анализу исполняемых файлов в IDA Pro
Содержание статьи
Фундаментальные основы хакерства
Пятнадцать лет назад эпический труд Криса Касперски «Фундаментальные основы хакерства» был настольной книгой каждого начинающего исследователя в области компьютерной безопасности. Однако время идет, и знания, опубликованные Крисом, теряют актуальность. Редакторы «Хакера» попытались обновить этот объемный труд и перенести его из времен Windows 2000 и Visual Studio 6.0 во времена Windows 10 и Visual Studio 2019.
Ссылки на другие статьи из этого цикла ищи на странице автора.
С легкой руки Денниса Ритчи повелось начинать освоение нового языка программирования с создания простейшей программы «Hello, World!». Не будем нарушать эту традицию и оценим возможности IDA Pro следующим примером.
Компилятор сгенерирует исполняемый файл объемом почти 190 Кбайт, большую часть которого займет служебный, стартовый или библиотечный код. Попытка дизассемблирования с помощью таких средств, как W32Dasm, не увенчается быстрым успехом, поскольку над полученным листингом размером в два с половиной мегабайта (!) можно просидеть не час и не два. Легко представить, сколько времени уйдет на серьезные задачи, требующие изучения десятков и сотен мегабайтов дизассемблированного текста.
Попробуем дизассемблировать эту программу с помощью IDA. Если все настройки оставить по умолчанию, то после завершения анализа экран должен выглядеть следующим образом.
Результат работы IDA Pro
Чтобы открыть текстовое представление, надо из контекстного меню выбрать пункт Text view.
Какую версию IDA Pro выбрать?
Последней версией IDA Pro на момент написания статьи была 7.3. Ее цена может быть великовата для покупки в исследовательских целях. Как известно, Ильфак Гильфанов очень строго относится к утечкам и появлению продуктов своей компании в интернете и не допускает подобного.
Однако на сайте компании Hex-Rays в публичный доступ выложена бесплатная версия дизассемблера с функциональными ограничениями. Например, она не получает обновления после достижения майлстоуна целой версии, то есть сейчас для свободной загрузки доступна версия 7.0. Также она поддерживает только архитектуры x86 и x64.
Тем не менее этого вполне достаточно для наших целей. Потому что нам не придется разбираться в коде для процессоров ARM, Motorola, Sparc, MIPS или Zilog. Еще одно ограничение накладывается на использование в коммерческих целях, но и тут наша совесть чиста.
Продемонстрировать инициализацию переменных, совершаемую стартовым кодом, а также получение их значений позволяет следующая программа.
CRtO.demo.c
Прототип функции main как будто указывает, что приложение не принимает никаких аргументов командной строки, но результат работы программы говорит об обратном и на моей машине выглядит так (приводится в сокращенном виде):
OS Version: 6.2
Build: 156
Arguments count: 1
Argument 01: CRt0.demo.exe
Environment variables count: 99
.
Variable 20: FrameworkVersion=v4.0.30319
Variable 19: FrameworkDIR32=C:\WINDOWS\Microsoft.NET\Framework\
Variable 18: FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework\
Variable 17: Framework40Version=v4.0
Variable 16: ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
Variable 15: DriverData=C:\Windows\System32\Drivers\DriverData
//******************** Program Entry Point ********************
:0040628B E802070000 call 00406992
:00406290 E974FEFFFF jmp 00406109
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004062B6(U)
|
:00406295 8B4DF4 mov ecx, dword ptr [ebp-0C]
:00406298 64890D00000000 mov dword ptr fs:[00000000], ecx
:0040629F 59 pop ecx
:004062A0 5F pop edi
:004062A1 5F pop edi
:004062A2 5E pop esi
:004062A3 5B pop ebx
:004062A4 8BE5 mov esp, ebp
:004062A6 5D pop ebp
:004062A7 51 push ecx
:004062A8 F2 repnz
:004062A9 C3 ret
.
Иначе выглядит результат работы IDA, умеющей распознавать библиотечные функции по их сигнатурам (приблизительно по такому же алгоритму работает множество антивирусов).
Поэтому способности дизассемблера тесно связаны с его версией и полнотой комплекта поставки — далеко не все версии IDA Pro в состоянии работать с программами, сгенерированными современными компиляторами.
Текстовое отображение результата работы IDA
.text:0040628B start proc near
.text:0040628B call sub_406992
.text:00406290 jmp loc_406109
Для перехода на метку достаточно поставить на нее текстовый курсор и нажать Enter. Если подвести курсор мыши к метке или вызову функции, появится окно, в котором будет показано начало выбранной функции или место листинга, куда переводит метка, что очень удобно.
В данном случае, как мы видим по комментарию, IDA отправила нас в начало стартового куска кода. Немного прокрутим листинг вниз, обращая внимание на плавные переходы по меткам.
.text:004010D3 push offset aHelloSailor ; «Hello, Sailor!\n»
.text:004010D8 push offset unk_42DE30
.text:004010DD call sub_401170
Если поместить курсор в границы имени aHelloSailor и нажать Enter, IDA автоматически перейдет к строке, в которой выполняется определение переменной:
.rdata:0041E1A0 aHelloSailor db ‘Hello, Sailor!’,0Ah,0 ; DATA XREF: sub_4010D0+3↑o
Выражение DATA XREF: sub_4010D0+3↑o называется перекрестной ссылкой и свидетельствует о том, что в третьей строке процедуры sub_4010D0 произошло обращение к текущему адресу по его смещению ( o от слова offset), а стрелка, направленная вверх, указывает на относительное расположение источника перекрестной ссылки.
Если навести курсор на выражение sub_4010D0+3↑o и нажать Enter, то IDA Pro перейдет к следующей строке:
.text:004010D3 push offset aHelloSailor ; «Hello, Sailor!\n»
Нажатие Esc отменяет предыдущее перемещение, возвращая курсор в исходную позицию.
К слову, дизассемблер W32Dasm даже не смог распознать строковую переменную.
Что не так с IDA?
Положа руку на сердце — я был слегка разочарован, ибо ожидал, что IDA распознает больше библиотечных процедур. Поэтому я решил натравить «Иду» на такую же программу, но сгенерированную более ранней версией компилятора. Подопытным кроликом выступил Visual C++ 8.0 (VS 2005).
Сравним результаты работы компиляторов. Тот же исходник, компиляция из командной строки (папка first05 ). Загрузим итоговый экзешник в «Иду». Листинг приводится в сокращенном виде для экономии пространства.
Мало того что стартовый код меньше по объему, так еще было автоматически определено большее количество библиотечных функций, среди которых: GetVersionExA, GetProcessHeap, HeapFree и ряд других. Среди них достаточно просто найти вызов main и перейти на саму функцию.
Тем не менее VC++ 8.0 — ушедшая эпоха, и в пример я ее привел только для ознакомления.
.text:004010D0 ; int __cdecl main(int argc, const char **argv, const char **envp)
.text:004010D0 main proc near ; CODE XREF: start-8D↓p
.text:004010D0
.text:004010D0 argc = dword ptr 8
.text:004010D0 argv = dword ptr 0Ch
.text:004010D0 envp = dword ptr 10h
.text:004010D0
.text:004010D0 push ebp
.text:004010D1 mov ebp, esp
.text:004010D3 push offset aHelloSailor ; «Hello, Sailor!\n»
.text:004010D8 push offset unk_42DE30
.text:004010DD call sub_401170
.text:004010E2 add esp, 8
.text:004010E5 xor eax, eax
.text:004010E7 pop ebp
.text:004010E8 retn
.text:004010E8 main endp
Обрати внимание: IDA в комментарии подставила прототип функции, а ниже параметры по умолчанию.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Крис Касперски
Известный российский хакер. Легенда ][, ex-редактор ВЗЛОМа. Также известен под псевдонимами мыщъх, nezumi (яп. 鼠, мышь), n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.
Юрий Язев
Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».
Программа ida что это
Приветствуя тебя, Гость.
Если тебе не очень понравится данный перевод, хочу сказать, что дальше всё становится лучше. Уже сейчас ты можешь открыть последние главы, например №24 или №25 и увидеть, что всё читается по другому. Как только курс будет переведён и закончен, я вернусь к первым главам и переделаю их.
ВВЕДЕНИЕ В РЕВЕРСИНГ С НУЛЯ ИСПОЛЬЗУЯ IDA PRO
Идея этих серий учебных пособий является обновить наш оригинальный курс по реверсингу, но используя IDA PRO. Будем обучаться использовать ее с нуля и работать будем с последней версией Windows. В моем случае, я использую Windows 10 Anniversary Update x64 со всеми патчами, вплоть до 29 октября 2016.
ПОЧЕМУ ИМЕННО IDA PRO
Потому что, пока OllyDBG просто 32-х битный отладчик режима пользователя, а IDA PRO целая программа для реверсинга, которая может быть использована в 32/64 системах, как и отладчик и как дизассемблер. Она позволяет делать статический реверс, который не может быть выполнен в OllyDBG и которая обучает как использовать ее, не смотря на сложный процесс обучения, она позволяет работать в Windows, Linux или Mac как внутри системы, так и удаленно в следующих операционных системах.
Для того, чтобы иметь представление о поддерживаемых процессорах, здесь есть список.
Здесь мы увидим большинство вещей, которые мы видели в Введение в отладку с нуля с использованием OllyDBG, но сейчас будет IDA. Попытаемся идти дальше с самого начала.
В этом курсе будет всё: статический и динамический реверс, крякме, будем учиться исследовать эксплоиты и распаковку. Я постараюсь писать о какой-нибудь важной детали с нуля.
Когда мы скачали, можем увидеть zip файлы и такой установщик
Пароль на установку хранится в файле install_pass.txt.
Также будет установлен Python 2.7.6. Он используется, чтобы избежать проблем используя другие версии IDA. Если вы установили Питон самостоятельно отдельно, он должен быть той же версии, что использует IDA.
После установки, загрузим крэкме Cruehead, он идет вместе с этим туториалом.
Так как это 32-х битный исполняемый файл, мы загрузим его в IDA для 32-х битных
файлов напрямую.
Если мы запустим крэкме вне IDA, мы увидим через Диспетчер Задач, что это 32-х битный процесс. Если мы хотим знать 32-х битный это или 64-х битный файл, без запуска, мы можем использовать 16-тиричный редактор. Например такой.
Поэтому мы уже знаем какой мы файл имеем, чтобы загрузить его с использованием IDA 32. Когда IDA покажет окно QUICK START, мы выберем NEW, чтобы открыть новый файл, найдем наш крэкми и выберем его.
Сейчас не будем трогать настройки, потому что IDA правильно определила версию файла и мы можем нажать OK.
Если дальше нажмем YES на PROXIMITY VIEW, отобразиться дерево просмотра программы.
Когда вы открываете исполняемый файл, первое, что открывается, это окно дизассемблера, которое называется LOADER, оно не запускает программу, а только ее анализирует для реверсинга и создает файл idb или базу данных (database).
Чтобы отладить программу мы должны выбрать среди всех доступных отладчиков включенных в IDA и запустить его в Режиме отладки, который мы разберем позже
В IDA есть возможность настроить интерфейс по умолчанию отдельно для LOADER и для DEBUGGER.
Как только вы привыкнете, например, в LOADER, наиболее часто используемые окна и вкладки можно сохранить, перейдя в WINDOWS-SAVE DESKTOP и отметив «по умолчанию», то же самое можно сделать для режима дебаггера и изменить настройку по умолчанию.
В любой из вкладок IDA, где есть такие списки, как FUNCTIONS, STRINGS, NAMES можно с помощью CTRL+F открыть поисковую систему, которая фильтрует информацию, в соответствии с тем, что мы набираем.
В VIEW-OPEN SUBVIEW-STRINGS точно также будут показываться строки, содержащие «try».
Через VIEW-OPEN SUBVIEW-DISASSEMBLY можно открыть второе дизасм окно, показывающее и выполняющее другие функции.
В OPEN SUBVIEW в LOADER есть hex представление или через вкладку HEX DUMP.
В OPEN SUBVIEW я могу показать импортируемые функции или вкладка IMPORTS.
Во VIEW можно активировать GRAPH OVERVIEW, он выполняет поиск по графику видимых функций и может двигать и изменять ту часть, которая отображается в данный момент на экране
Также имеются вкладки STRUCTURES, EXPORTS, NAMES, SEGMENTS и другие, которые я объясню позже, когда мы их будем использовать
Верхняя панель навигации с помощью различных цветов отображает разные части исполняемого файла.
В первой части мы сделали лишь первые шаги, в следующих частях мы будем понемногу углубляться в тему.
До встречи во второй части.
Ricardo Narvaja
Перевод на английский: IvinsonCLS
Перевод на русский: Яша_Добрый_Хакер.
27.11.2016
Вступление
Тот, кто хоть раз пытался дизассемблировать мало-мальски серьезную программу, знает, что лучшего инструмента, чем IDA Pro, не найти. Это легко объясняется интеллектуальностью (дизассемблер сам комментирует код и распознает стандартные библиотечные и системные функции), интерактивностью (вы в любой можете прервать процесс дизассемблирования, внести нужные изменения и потом продолжить), поддержкой собственного скриптового языка (IDC), наличием плагинов (позволяющих сэкономить десятки часов исследования) и IDA SDK.
Отладчик по сравнению с дизассемблером часто называют «агрессивной средой», требующей от вас постоянного участия, работы мысли и заставляющей все время принимать решения. Работая с IDA Pro, вы легко убедитесь в данном утверждении: комфорт и функциональность IDA Pro позволяют уйти от вопроса «знаю, что хочу, но не знаю, как этого добиться» и сосредоточиться на проблеме «каким путем достичь необходимого результата, используя возможности IDA Pro».
Интервью
TanaT: Расскажите, пожалуйста, немного о себе.
TanaT: Кроме Datarescue нигде не работаете?
Ильфак: Нет, нигде. Вагоны по вечерам не разгружаю 🙂
TanaT: Я имел в виду, не читаете ли вы где-нибудь лекций?
Ильфак: Нет, кроме как в Datarescue нигде. Лекции читаю тоже от имени фирмы.
Надо также упомянуть саму компанию Datarescue, которая всячески способствовала развитию программы правильным позиционированием на рынке и политикой.
Это еще не все. В Интернете можно найти много страниц, рассказывающих про IDA, объяснения для новичков, и т. д.
Более того, есть группа поддержки на Yahoo, там можно получить новые модули для IDA вместе с исходными текстами. Эта группа называется IDA Extensions, мы к ней никакого отношения не имеем.
Также на sourceforge.org создается проект (опять-таки без нашего участия) поддержки дизассемблера IDA. Sourceforge был выбран для того, чтобы несколько разработчиков могли работать над кодом, пользуясь CVS.
От автора: Я настоятельно рекомендую вам следующую страницу: http://www.datarescue.com/idabase/idasupport.htm. На ней можно найти новую документацию по IDA Pro, ссылки на дружественные ресурсы, «туториалы» и «мануалы», дополнительные утилиты и т. д. То есть, как любят писать в сетевых обзорах, must visit!
TanaT: А на каком языке написана IDA?
TanaT: Как вам в голову пришла идея написать собственный дизассемблер? Не боялись, что задача окажется непосильной?
Правда, если ставить более сложные цели, то работы становится больше. Поэтому с дизассемблером я поступил так: сначала решаем простые задачи, а потом переходим к сложным. Все постепенно, без всяких скачков. Как видно, этот подход себя оправдывает, т.к. этим методом постепенного улучшения программы со временем IDA стала мощным инструментом. Нельзя забывать при этом то, что любой код, который вы напишете, в один прекрасный день придется пересмотреть и переделать, поэтому а) надо писать так, чтобы код был легко читаем и б) уметь трансформировать код в логически эквивалентный, но более функциональный. Если не ошибаюсь, это называется refactoring?
TanaT: Да, именно так.
Ильфак: Идея написать свой дизассемблер возникла не у меня, а у моих друзей, на какой-то вечеринке, что-то вроде «почему бы и нет». Имеющиеся дизассемблеры были пакетными, и возможность на ходу менять текст была соблазнительной. Тогда еще никакой речи о многопроцессорности или о продвинутых возможностях типа FLIRT не было, только интерактивность работы.
Правда, результатом мы так и не воспользовались, так как к моменту, когда IDA как-то заработала, наши интересы были другими, нам повезло поработать с RS/6000 от IBM, узнать UNIX, но IDA осталась, оказалось, что ей можно пользоваться для анализа вирусов, отыскивания недокументированных особенностей MS-DOS и т. д.
TanaT: Что такое FLIRT?
Ильфак: Полностью эта аббревиатура расшифровывается Fast Library Identification and Recognition Technology. Она используется для распознавания стандартных библиотечных функций в анализируемых программах. Благодаря FLIRT время разбора программ может быть уменьшено на несколько порядков. Например, типичная Delphi-программа состоит из более чем 2500 функций. Из них как минимум 2000 (обычно больше) функций являются стандартными. Без FLIRT пришлось бы потратить несколько дней, чтобы понять, какие функции являются библиотечными и дать им названия, причем это время можно считать просто потерянным, т.к. с каждой новой Delphi-программой этот анализ пришлось бы повторять.
TanaT: То есть IDA Pro может так же, как и SoftIce, идентифицировать те или иные Windows API функции, которые Win-приложение использует в своей работе? Я почему-то считал, что IDA без труда справляется со стандартными функциями языка С (типа библиотечной функции printf), но с Win API «не дружит».
Ильфак: IDA знает про стандартные функции MS Windows (и не только), типы их параметров и возвращаемых значений. Она расставит комментарии в листинге и использует информацию о типах при анализе. Все это происходит автоматически, без участия пользователя. Как всегда, если пользователь не удовлетворен результатами автоматического анализа, он может их подправить, указав новый тип функции или параметра.
Система типов построена таким образом, чтобы ее можно было применить к любому процессору, поэтому тут речь идет не только о MS Windows. IDA уже поддерживает UNIX API. В принципе, можно ее расширить и на другие платформы, включая микроконтроллеры и встроенные системы.
TanaT: А может ли IDA Pro дизассемблировать байт-код Java и управляемый код на MSIL?
Ильфак: Конечно же, IDA дизассемблирует программы на Java или C#. И что примечательно, она может дизассемблировать классы и в очень тяжелых случаях, когда входной файл был испорчен, но все еще работоспособен.
TanaT: Откуда вы почерпнули знания и опыт, так необходимые для разработки такого рода программы?
Ильфак: Про свою учебу в университете я уже рассказал. Опыт пришел со временем. Код, который был написан в начале 90-ых годов, на мой взгляд, далек от совершенства, но он работает, и поэтому мы его пока переписывать не будем.
Ильфак: Ну, идея вроде лежит на поверхности? Нет ни одной большой программы, которая бы не позволяла запрограммировать ее тем или иным способом. Честно говоря, мне хотелось написать кусочек компилятора (лексический + синтаксический анализ, как это описано у Ахо и Ульмана), вот скрипты и оказались неплохим поводом. Сегодня я бы не стал писать свой язык, а просто бы подключил имеющиеся, например Perl или Python. Это было бы и проще, и позволило бы большему количеству пользователей писать скрипты.
TanaT: Сейчас уже поздно добавить поддержку эти скриптов языков в IDA? Или нецелесообразно?
Ильфак: Мы сами не планируем поддержку других языков, но любой пользователь IDA может это сделать сам с помощью IDA SDK. Я даже краешком уха слышал про подобные работы для подключения Python к IDA.
TanaT: Можете рассказать немного об IDA SDK? Он позволяет писать плагины к IDA самому?
IDA API является достаточно сложным и богатым API и насчитывает порядка 1000 функций. Мы постарались сделать полностью доступной базу данных IDA и дать полный контроль над анализом. Конечно, такой большой API не так просто освоить. Поэтому в составе SDK есть много примеров реальных модулей из реальной жизни. И опять-таки можно найти примеры в сети.
TanaT: Как вы считаете, в каких случаях программисту требуется именно интерактивность IDA? Только тогда, когда код зашифрован?
Ильфак: Не только. Думаю, интерактивность IDA является самой главной ее особенностью. Во-первых, пользователь может мгновенно изменить представление программы на экране, что очень полезно, если автоматический анализ неправильно разобрал функцию. Можно также переименовать функцию или добавить комментарий, и все изменения сразу же видны на экране. Во-вторых, развитая система навигации позволяет найти интересующую часть программы без долгих поисков по листингу.
Анализ программ чем-то схож с разгадыванием кроссвордов: чем больше информации мы имеем, тем проще угадать следующее слово. Чем больше осмысленных имен и комментариев в листинге, тем проще понять логику работы и соответственно переименовать анализируемую функцию. Мы начинаем практически с чистого листа, когда все функции, кроме импортированных, названы, как sub_1234. Такое автоматически сгенерированное имя не дает никакой информации о том, что эта функция делает. Потом, в процессе разбора (я предпочитаю разбор снизу вверх, то есть первыми анализируются функции самого нижнего уровня) мы переименовываем функции, и таким образом делаем листинг более ясным и понятным. Без интерактивности это было бы просто невозможно.
Конечно, интерактивность не всегда нужна. Например, если нам нужно найти код, обладающий какими-нибудь свойствами в большой коллекции программ, то анализировать все программы вручную не хочется (представьте себе, что у вас семейство программ из 200 файлов). Для таких случаев лучше запустить IDA из командного файла и поручить анализ и нахождение интересующего кода IDC: скрипту или плагину.
TanaT: Кстати, о плагинах. Не подскажете, где можно найти стандартные (да и любые другие) плагины к IDA?
Ильфак: До сих пор самым доступным местом была группа IDAExtensions в Yahoo. С созданием cvs-управляемого проекта на sourceforge большинство плагинов, скорее всего, будут доступны оттуда.
TanaT: Как вы считаете, какая категория людей является основным пользователем вашего продукта? Пираты/хакеры или разработчики?
Разработчики и хакеры, конечно же, тоже используют IDA, но не являются основными покупателями. Про хакеров я вообще молчу, я совершенно не хочу, чтобы IDA использовался для взлома программ, и буду всячески бороться против этого.
Я не знаю, почему в России считается, что основными пользователями IDA являются хакеры. Если бы IDA приносила пользу только им, то я бы прекратил работу над ней, не задумываясь.
TanaT: Сразу возникает вопрос, ведь хороший дизассемблер не должен «сыпаться» при первых же «антидизассемблерных» приемах. Получается, что, разрабатывая дизассемблер и повышая его интеллект + функциональность, вы делаете жизнь хакера легче. Противоречие?
Ильфак: Скорее, диалектика. IDA делает анализ программ проще для всех. Значит и защита программ становится более изощренней, придумываются новые методы. Как, например, подступиться к системе, которая использует подход объектно-ориентированного программирования с передачей сообщений между объектами? По листингу практически ничего невозможно будет понять, т.к. так кроме косвенных вызовов с номерами сообщений, практически ничего не будет.
TanaT: Сколько сегодня стоит IDA Pro и можно ли ее где-нибудь купить в России?
TanaT: Каковы системные требования IDA? Если говорить об IBM PC, какие операционные системы она поддерживает?
Ильфак: Первые версии IDA были предназначены для работы под MS DOS с 640кб памяти, поэтому при дизайне программы я предпочитал решения, не требующие много памяти или быстрого процессора. Сейчас, конечно, нереально запустить IDA на такой малой памяти, но любой современный компьютер подойдет. Чем больше памяти и чем быстрее процессор, тем лучше, конечно.
IDA работает под MS Windows (любые версии), MS DOS, OS/2. Абсолютное большинство пользователей работает под MS Windows, поэтому мы даже не уверены, что имеет смысл продолжать поддерживать другие системы. Если у кого есть соображения по этому поводу, прошу в e-mail (ig@datarescue.com), мы с удовольствием выслушаем аргументы в пользу этих систем.
TanaT: В каком направлении вы сейчас совершенствуете свой дизассемблер? Добавляете поддержку новых процессоров или улучшаете функциональность?
TanaT: Декомпилятор на язык С был бы отличным инструментов для многих профессионалов в reverse engineering. Думаете, это реально?
Кстати, уже существует маленький декомпилятор на основе IDA. Он был создан одним студентом как master thesis. Вы можете найти сайт, поискав его по имени: desquirr.
TanaT: Небольшое замешательство вызывает тот факт, что, хотя везде указано, что вы являетесь создателем IDA Pro, продает его компания Datarescue. Можете прояснить ситуацию?
Ильфак: Ну, так оно и есть. Компания Datarescue продает IDA Pro. Я не занимаюсь продажами напрямую, предпочитаю заниматься программированием, это у меня лучше получается.
TanaT: Есть ли версия вашего продукта не «Pro»?
TanaT: Скажите, пожалуйста, а доступна ли где-нибудь trial- или demo-версия IDA Pro?
Хотя бывают смешные случаи. Например, меня поразил один «бедный пастор в аргентине», желающий пользоваться IDA. Он также написал, что будет молиться за нас, если мы ему пришлем программу. Интересно, что ему нужно было дизассемблировать, не библию же? Или «бедный студент», которому немедленно понадобилось анализировать какой-нибудь специальный микроконтроллер, потому что «клиенту нужно срочно».
TanaT: Кого из конкурентов вы можете выделить? Есть ли кто-либо, кто может составить конкуренцию IDA?
Ильфак: Честно говоря, не знаю, что сказать.
TanaT: Многие пользователи жалуются, что к IDA Pro почти нет официальной документации и научиться работать с ней, особенно с ее скриптовым языком, довольно сложно. Можете прокомментировать?
Дело еще усугубляется тем, что многие пользователи не знают, что им делать, т.е. не умеют анализировать программы. Тут очень многое зависит от уровня пользователя. Кто-то не знает язык ассемблера и ему нужно объяснять, что такое xor eax,eax. Другому непонятно, что такое DialogProc, т.к. он никогда не программировал в Windows. Третьему непонятно, почему количество push в функции не соответствует количеству pop. А ведь это самые простые случаи. Обычно пользователь загружает программу в IDA и не знает, что делать. Ответить на этот вопрос непросто, ведь «что делать» зависит от того, «что хочется получить».
TanaT: Вы читали книгу Криса Касперски «Образ мышления дизассемблера IDA»? Сегодня это единственная книга по IDA на русском, поэтому хотелось бы услышать о ней ваше мнение. Может вы знакомы с ее автором?
Ильфак: Да, я знаком с Крисом, и он обращался ко мне с вопросами при написании книги. Книга хороша, как развернутый справочник по функциям IDC, и рассчитана на читателя, разбирающегося в ассемблере и любящего манипулировать битами и байтами. Конечно же, я могу лишь порекомендовать эту книгу любому, кому хочется досконально разобраться с IDC и научиться писать хорошие скрипты.
Но жизнь не стоит на месте и со времени написания книги вышли новые версии IDA. Появились новые возможности (например, разработка плагинов в книге не рассматривается). Надеюсь, Крис напишет продолжение, в котором будет уделено больше внимания современным программам и типичным проблемам, с которыми сталкиваются начинающие специалисты по информационной безопасности.
TanaT: А почему вы сами не напишите что-то похожее на «Advanced IDA Pro Developer’s/Users’s Guide»? Ведь никто не знает все тонкости IDA, IDA SDK и IDC так, как вы. Думаю, эта книга разошлась бы немалым тиражом в одной только России. К тому же практика издания книг по своим продуктам сегодня довольно распространена: взять все тот же Microsoft Press.
Ильфак: Вы не первый, кто поднимает вопрос о книге. Может когда-нибудь я и решусь, но пока еще не готов к писательству. Если я буду писать книгу, то вряд ли останется время для улучшения IDA, так что пока пусть книга подождет 🙂
TanaT: Разрешите личный вопрос: я нигде доселе не читал интервью с вами, вы не любите их давать?
TanaT: Хотите сказать нашим читателям что-нибудь?
Спасибо за вопросы.
TanaT: И вам большое спасибо за столь интересные ответы. Успехов вам лично и вашему творению, IDA, надеемся, этот дизассемблер и дальше будет развиваться не менее интенсивно и плодотворно.
Источник: www.fcenter.ru
Apline LLC
107140, Москва,
ул. Краснопрудная, д.12/1, стр. 1, пом. 15
Тел: (495) 724-75-82
IDA Pro
PhotoRescue
«Журнал ComputerBild: PhotoRescue удалось восстановить очень много снимков, которые были утеряны в результате удаления или форматирования носителя данных. И еще одно несомненное преимущество: программа работала очень быстро.»
- Программа icq что это
- Программа iiko что это