Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

articles:idapro-53 [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== IDAPro-53 ======
 +<​sub>​{{IDAPro-53.odt|Original file}}</​sub>​
 +
 +====== IDA-Pro 5.3 – новое оружие в руках хакера\\ возможности,​ которых мы так давно ждали ======
 +
 +крис касперски ака мыщъх, no-email
 +
 +**свершилось! ****IDA-Pro 5.3 ****уже в продаже (и даже Осле)! ослепительный фейерверк новых фич, срывающих крышу и расширяющих границы хакерского создания до пределов нирваны. полностью переписанный отладчик,​ сотни исправленных ошибок,​ дефектов и глюков старой версии,​ более полная экстракция отладочной инфы из ****pdb ****файлов,​ модули для ****iPhone, Symbian OS, Linux'​****а и куча-куча всего того, о чем прежде оставалось всего лишь мечтать.**
 +
 +===== введение =====
 +
 +Что такое IDA-Pro? Женщина. Красивая,​ напомаженная (если это GUI), своенравная. И… дорогая.Как и положено быть женщинам. ИДА — женское имя, а потому она SHE, а не IT. Дизассемблер в смысле. Изначально,​ IDA представляла собой интерактивный дизассемблер,​ радикальным образом отличающийся от пакетных дизассемблеров того времени. Дизассемблер заглатывал бинарный код, выдавая на выходе ассемблерный листинг,​ над котором приходилось кропотливо работать (в текстовом редакторе),​ составляя специальные правила для дизассемблера,​ объясняющие где он накосячил и как это надо было дизассемблировать. После чего весь процесс повторялся вновь. Хакер опять изучал полученный листинг,​ составлял новый список правил… и трахался вплоть до полного изнеможения.
 +
 +{{idapro-53_Image_0.png}}
 +
 +Рисунок 1 самая первая версия IDA (в те времена еще не Pro), сейчас представляющая разве что исторический интерес музейного экспоната
 +
 +Ильфак был первым кому пришла в голову идея "​прикрутить"​ к дизассемблеру интерактивный движок,​ тесно взаимодействующий с пользователем и позволяющий решать практически все мыслимые и немыслимые проблемы. Приемы против дизассемблеров перестали работать,​ поскольку теперь защитам приходится воевать не с тупым дизассемблером,​ а мыслящим хакером,​ сидящим за штурвалом. Кстати,​ о штурвале.
 +
 +Сначала IDA приобрела поддержку макросов и скриптого языка, напоминающего сильно урезанный Си. Скрипты,​ написанные хакерами,​ не только автоматизировали взлом, но и, в частности,​ позволяли распаковывать упакованный код прямо в ИДЕ. Очень удобно,​ хотя ограниченные возможности скриптов тормозили прогресс и вот, наконец,​ появились плагины,​ дающие полный доступ ко внутреннему API ИДЫ. Круто, но неудобно. Плагины пишутся на приплюснутом Си и пишутся довольно долго. Плюс совершенно ненаглядно,​ а потому хакеры тут же прикрутили к ИДЕ всевозможные языки типа Perl'​а и Python'​а,​ делающие программирование простым и понятным,​ причем,​ без отрыва от производства,​ в смысле без выхода из дизассемблера.
 +
 +{{idapro-53_Image_1.png}}
 +
 +Рисунок 2 современная IDA-Pro с кучей "​косметики"​ и прочих графических "​бантиков",​ заставляющих хакеров старого поколения скрежетать зубами,​ зато новому поколению все это очень нравится
 +
 +За долгое время своего существования,​ IDA-Pro превратилась в настоящую хакерскую империю. Это намного больше,​ чем дизассемблер. Это и дизассемблер,​ и отладчик,​ и распаковщик упакованных файлов и анализатор потока управления,​ и сканер безопасности для полуавтоматического поиска дыр в приложениях. Целый мир с безграничными возможностями,​ которые с выходом очередной версии становятся все безграничнее и безграничнее.
 +
 +IDA-Pro это стандарт де-факто в мире реверсинга,​ другого такого дизассемблера просто нет, а потому нет и альтернативы. Монополизм,​ конечно,​ не есть хорошо (чем, собственно говоря,​ и обусловлены такие цены), но… каждая новая версия приводит хакеров в возбуждение,​ хотя, лично мыщъх 90% времени проводит в IDA-Pro 4.7, которой вполне удовлетворен (особенно с учетом того, что все отсутствующие фичи можно реализовать руками,​ то есть скриптами и плагинами),​ только зачем их реализовывать когда можно взять уже готовое и отлаженное?​!
 +
 +14 июля 2008 года вышел официальный релиз IDA-Pro 5.3, пришедший на смену 5.2. Изменение в первом знаке после запятой обычно не сулит грандиозных нововведений,​ и, отчасти,​ эти опасения вполне оправданы. Большое количество реверсеров,​ с которыми разговаривал мыщъх (и у которых истекла лицензия на бесплатное обновление),​ раздумывают:​ стоит ли переходить на новую версию или следует дожидаться следующей. Тут все сильно зависит от конкретных потребностей отдельно взятого индивидуума,​ а потому завязываем с рекламой и начинаем говорить по существу.
 +
 +{{idapro-53_Image_2.png}}
 +
 +Рисунок 3 символьная информация,​ добытая старой (слева) и новой (справа) версиями IDA-Pro
 +
 +===== >>>​ врезка:​ свободный обзор новых возможностей =====
 +
 +  - полностью переписано ядро отладчика — усиленна поддержка многопоточных приложений (в том числе и в Linux) и улучшена обработка структурных исключений;​
 +  - добавлены новые отладочные модули для iPhoneи Symbian OS, поставляемые вместе с исходными текстами,​ что позволяет их совершенствовать самостоятельно,​ не дожидаясь выхода новой версии — отличная новость для всех хакеров,​ обитающих на мобильных платформах и смартфонах;​
 +  - радикально улучшена поддержка PIC-кода (Position-Independent Code — Позиционно Независимый Код), встречающийся в shell-кодах,​ а так же многих защитных механизмах,​ что облегчает жизнь как исследователям малвари,​ так и кодокопателям,​ освобождающих программы от оков ключевых файлов,​ серийных номеров и прочей несвободы;​
 +  - более качественная экстракция отладочной информации из MS PDB файлов — интереса главным образом исследователям недр операционных систем семейства NT, а так же хакерам,​ анализирующих изменения в заплатках от Microsoft на предмет поиска дыр, которые они затыкают,​ чтобы заточить exploit под непатченные системы (или даже пропатченные,​ ибо большинство дыр затыкаются далеко не с первого раза);
 +  - языковые расширения от независимых разработчиков (типа IDA Perl, IDA Python) приобрети официальный статус,​ а вместе с ним и официальный API для взаимодействия с IDA-Pro, существенно облегчив процесс стыковки IDA-Pro с различными интерпретаторами;​
 +  - проделана огромная работа по исправлению ошибок. по сути дела, IDA-Pro 5.3 представляет собой огромный bug-fix. только один официальный список изменений насчитывает свыше сотни фиксов,​ хотя подлинное число на самом деле гораздо больше и часть ошибок исправлена "в тихую",​ достаточно взять хотя бы ошибку с отладкой файлов,​ имеющих нулевой базовый адрес, что в предыдущих версиях приводило к потере контроля над отлаживаемой программой (подробнее см. мыщъхиный блог: http://​souriz.wordpress.com/​2008/​05/​14/​773-bug-in-ida-pro-fails-to-debug-zero-base-pe) в 5.3 это уже исправлено,​ однако,​ данный баг в официальном списке не значится,​ что наводит на определенные размышления;​
 +  - обновлена сигнатурная база для новых версий компиляторов от Borland, Microsoft и некоторых других,​ что полезно практически всем реверсерам без исключения;​
 +{{idapro-53_Image_3.png}}
 +
 +Рисунок 4 результат дизассемблирования одной и той же программы старой (слева) и новой (справа) версиями IDA-Pro
 +
 +===== отладочные возможности IDA-Pro =====
 +
 +Способы исследования программ делятся на две категории — статический анализ (дизассемблирование) и динамических (отладка). Оба имеют свои сильные и слабые стороны,​ а потому на практике активно применяется гибридный способ,​ открывающий большие возможности,​ но вынуждающий хакера попеременно мотаться от дизассемблера к отладчику,​ снимая дампа памяти и перетягивая символьную информацию в обоих направлениях,​ что ужасно напрягает и приводит к неоправданному перерасходу времени.
 +
 +Отсюда родилась идея — встроить отладчик непосредственно в сам дизассемблер. Ильфак был не первым,​ кто осуществил такое (до этого существовал и пользовался определенным успехом знаменитый W32Dasm), причем,​ первые попытки создавали крайне неблагоприятное впечатление и отладчик,​ встроенный в IDA 4.x на фоне Ольги выглядел детской игрушкой,​ не говоря уже о могучем Soft-Ice. С выходом серии 5.x ситуация слегка изменилась и IDA-отладчик дорос до минимально потребного уровня. Soft-Ice к тому времени уже превратился в разлагающийся труп, зато Ольга существенно упрочнила свои позиции,​ собрав нехилую коллекцию плагинов и скриптов,​ которой не могла похвастаться IDA 5.х
 +
 +IDA 5.3 совершила отчаянный рывок, попытавшись переплюнуть Ольгу там, где она никогда не была сильна — в отладке многопоточных приложений и обработке структурных исключений. И это, надо сказать,​ ей удалось. Плюс, полная интеграция с дизассемблером,​ экономит немалое количество времени,​ а плагины и скрипты для IDA-отладчика уже начинают появляться в дальнейшем их чисто будет только расти. Впрочем,​ на Windows-платформе Ольга не собирается сдавать свои позиции (особенно в свете грядущего выхода версии 2.х), к тому же, к Ольге хакеры уже привыкли,​ а в IDA-Pro отладчике все по другому. Интерфейс продуман плохо, да и сами отладочные возможности пока все-таки слабоваты.
 +
 +Зато на Linux-платформе,​ IDA-Pro отладчик смотрится намного более соблазнительно,​ чем GDB. Хотя GDB намного более мощная штука, он требует времени на изучение,​ а IDA-Pro предоставляет интерактивный интуитивно понятный интерфейс,​ переплевывающий практически все конкурирующие отладчики,​ во всяком случае на прикладном уровне (ну а на ядерный IDA-Pro пока и не замахивалась).
 +
 +Касательно мобильных устройств — тут отладочных возможности IDA-Pro (какими бы они скромными ни были) всегда вызывали огромный интерес особенно в свете появления большеного количества малвари под мобильные устройства и защищенных программ,​ у которых так и хочется отломать все ненужное.
 +
 +Естественно,​ само по себе усиление отладочных возможностей — еще не повод покупать новую IDA-Pro (зато хороший повод обновиться тем, кто еще не успел это сделать),​ и уж тем более не повод мигрировать с Ольги на IDA-Pro, тем не менее, удобства интегрированного отладчика — очевидны.
 +
 +{{idapro-53_Image_4.png}}
 +
 +Рисунок 5 внешний вид отладчика,​ интегрированного в IDA-Pro
 +
 +===== дихлофос,​ хлорофос,​ карбофос… =====
 +
 +IDA-Pro очень сложный программный комплекс,​ естественно,​ не свободный от ошибок,​ а ошибки,​ как известно,​ бывают очень разные от вполне безобидных до очень коварных и сильно разрушительных. Крах базы IDA-Pro (на легальных,​ а не ломаный версиях) явление достаточно редкое,​ но все-таки имеющее место быть, что, впрочем,​ не создает большой проблемы,​ если периодически сохранять результат дизассемблирования на диск в упакованную базу — практически у всех хакеров уже давно выработался стойкий инстинкт. Ну а кто не сохраняется,​ тот сам себе и виноват.
 +
 +Ошибки в "​движке"​ дизассемблирования,​ приводящие к выдаче неверного результата намного более коварны,​ поскольку,​ коверкают логику работы анализируемой программы,​ делая ее совершенно непонятной. Над подобными головоломками можно биться часами (особенно,​ если под рукой нет другого дизассемблера,​ чтобы сравнить результаты) и они самое большое зло для реверсеров,​ которое только можно представать.
 +
 +Хакеры бессознательно доверяют IDA-Pro, считая ее непогрешимой,​ хотя она ошибается намного чаще, чем конкурирующие дизассемблеры. Касательно движка для x86 процессоров,​ IDA-Pro 5.3 наконец-то научилась распознавать UD2 инструкцию,​ специально предназначенную для исключения неверный опкод и встречающуюся во многих защитах. Тоже самое относится и к 3х байтовым NOP инструкциям (0F 19..0F 1E), которые в списке изменений значатся как недокументированные,​ когда на самом деле они очень даже документированные (Ильфак не читает мануалов?​!).
 +
 +Но это ерунда. Нераспознанные инструкции,​ представленные в виде данных,​ конечно,​ сбивают хакера с толку, но все же не срывают ему крышу и не высаживают на измену. Берем мануалы,​ читаем,​ определяем опкод вручную,​ вручную же транслируем заданную последовательность байт в соответствующую инструкцию (благо IDA-Pro это позволяет) и пьем пиво. Или квас.
 +
 +Хуже, когда IDA-Pro пакостит втихую. Например,​ не учитывает команду DEC/INC SP в 32-разрядном сегменте,​ что приводит к неверно вычисленным смещениям локальных переменных и аргументов и, как следствие,​ неверному анализу всей функции в целом. Процессорный модуль для платформы .NET так же еще как следует не отлажен,​ хотя появился не вчера и даже не позавчера,​ а очень давно появился,​ но все равно, IDA-Pro 5.2 неверно декодировала команды conv.r4, conv.r8 и conv.r.un. В версии 5.3 это исправлено.
 +
 +Самая приятная новость — функции с EH_prolog прологом наконец-то дизассемблируются правильно!!! Соль в том, что классический пролог устанавливает EBP на самое дно стекового фрейма и потому,​ все локальные переменные приобретают отрицательные смещения,​ а все аргументы — положительные. Функции с EH_prolog прологом делят стековый фрейм на две части. В одну попадают буфера,​ в другую — скалярные переменные и указатели. Впервые эта техника была применена в pro-police (бесплатном расширении для знаменитого GCC-компилятора) для борьба со стековыми переполнениями,​ а затем была "​позаимствована"​ компанией Microsoft. Регистр EBP устанавливается на границу,​ отделяющую буфера от не-буферов,​ в результате чего, буфера приобретают отрицательные смещения,​ а скалярные переменные,​ указатели и аргументы — положительные,​ но вплоть до версии 5.2 включительно,​ IDA-Pro обзывала их всех аргументами,​ серьезно озадачивая хакеров — какая интересная функция! Ей передали пару-тройку аргументов,​ а она приняла на грудь целый десяток,​ оперируя ими как ни в чем ни было. Что делать?​! Приходилось выкручиваться,​ устаивая танцы с бубном. В версии 5.3 это исправлено и танцевать уже не надо, а бубен можно положить на полку.
 +
 +Исправление ошибок — это приятно и можно только приветствовать. Очень приятно,​ что Ильфак ​ предпочитает гонять багов, тогда как большинство остальных компаний тяготеют к лихорадочному добавлению новых фич, исправляя ошибки только тогда, когда они уже всех достанут. С другой стороны,​ не совсем радует политика обновлений. Если IDA 5.3фактически представляет собой один большой баг-фикс (ну не без новых возможностей,​ конечно),​ почему бы ее не раздавать бесплатно всем желающим в виде заплаток для всех измененных файлов?​! Microsoft, Adobe и еще куча других компаний делают это даже без проверки валидности лицензии,​ ибо брать с пользователя деньги за исправление своих же ошибок это, знаете ли, может делать только Ильфак,​ который сменил Пьера (не Безухова),​ и теперь он CEO и вообще без пяти мнут, чтобы забросить кодинг и заняться бизнесом,​ чего, впрочем,​ уже давно следовало ожидать,​ наблюдая агонию развития IDA-Pro на протяжении последних пяти лет. Реально новых идей нет, реально новых фич — тоже. А те, что есть — настоящим хакерам либо не нужны (графы,​ декомпилятор) и годятся только для привлечения "​пионеров",​ либо же недостающий функционал покрывается скриптами и плагинами.
 +
 +===== заключение =====
 +
 +Так стоит ли переходить на новую версию IDA-Pro или нет?! Естественно,​ для тех, кто выловил ее в Осле вопрос вообще не стоит. Халява! Профессиональные реверсеры,​ работающие на респектабельные фирмы, тоже не заморачиваются такими вещами — т.к. фирма предоставляет реверсеру все необходимое,​ в том числе и последние версии IDA-Pro, а если не предоставляет — зачем работать в такой фирме?​!
 +
 +Фри-лансерам и независимым консультантам приходится хуже всего. Никто им на халяву IDA-Pro не даст. Пользоваться ворованной версией в общем случае противозаконно и весьма чревато (особенно при работе на зарубежные компании). Однако,​ если за реверсинг платят,​ то, с учетом текущих расценок новая IDA окупается буквально за несколько дней. В худшем случае за неделю. Ну пускай за месяц (смотря какая у реверсера квалификация).
 +
 +А вот тем, кто пишет плагины для IDA-Pro (и не просто пишет, а еще и продает их), выход всякой новой версии как нож в сердце,​ потому как… совместимость мягко говоря и не ночевала. Всю коллекцию плагинов приходится тестировать заново,​ добавляя многочисленные #​ifdef'​ы для обеспечения совместимости со всеми версиями или отбранчивая код (в клинических случаях),​ причем вся эта работа никак не окупается,​ поскольку,​ поддержка проданных плагинов стоит копейки,​ а времени отнимает… на рубли, фунты и стерлинги.
 +
 +Вот такая непростая ситуация получается. Нас вынуждают обновляться независимо от того, хотим ли мы этого или нет. Ну что ж, Ильфак тоже хочет кушать.
 +
 +{{idapro-53_Image_5.png}}
 +
 +Рисунок 6 IDA-Pro переехала на сайт декомпилятора hex-rays, являющегося по сути дела, одним из ее плагинов. шестерка бьет туза, ага!
 +
 +===== >>>​ врезка:​ ссылки по теме =====
 +
 +  - **http://​www.hex-rays.com/​idapro/​****:​**
 +    - официальный сайт, где выложена сама IDA-Pro, сопроводительная документация,​ куча примеров и бесплатных утилит,​ так же имеется форум (впрочем,​ доступный только для легальных пользователей);​
 +  - **http://​www.hex-rays.com/​idapro/​idaupgrade.htm:​**
 +    - пакет обновления IDA-Pro 5.3, для тех кто имеет предыдущую версию и не просроченную карту поддержки;​
 +  - **http://​www.hex-rays.com/​idapro/​ida/​idasdk53.zip****:​**
 +    - SDK для версии 5.3 (требует авторизации и еще нет в Осле, прочем,​ для создания плагинов можно, пускай и не без ограничений,​ воспользоваться SDK 5.1, которая утекала в сеть уже давно);​
 +  - **http://​www.hex-rays.com/​idapro/​idaorder.htm:​**
 +    - место где расстаются с деньгами,​ приобретая легальную версию IDA-Pro, цена на которую в зависимости от комплектности поставки колеблется от 0,5k до 1k евродолларов;​
 +  - **http://​www.hex-rays.com/​idapro/​53/​index.htm****:​**
 +    - список отличий IDA 5.3 от предшествующей ей версии 5.2 (не то, чтобы совсем полный,​ но все же это лучше, чем совсем ничего);​
 +