Набор статей и руководств по дизассемблеру IDA


Обнаруженные баги


Вы удивлены, что даже в такой программе как IDA Pro есть баги ? Но ведь это всего лишь программа, почему бы в ней не быть багам ? Кроме того, до сих пор нет единого мнения, какие же именно и сколько инструкций составляют так называемый "x86 ассемблер", и с каждой новой моделью от Intelа и производителей клонов положение только ухудшается... Но обо всём по порядку.

  1. Я нашёл некоторые неопределённые itype (внутренние instruction codes). Это, видимо, не следует считать багом, но всё равно неприятно. Такими являются: 100, 143, 144, 145

  2. Очень большое количество багов описывается в великолепной статье Криса Касперски "ТОНКОСТИ ДИЗАССЕМБЛИРОВАНИЯ" (http://dore.on.ru/articles/disass.pdf). Я не буду пересказывать всю статью, но меня особенно поразило, что IDA не умеет дизассемблировать инструкции, манипулирующие управляющими и отладочными регистрами, несмотря на то, что прекрасно их ассемблирует !
  3. IDA не умеет ассемблировать все 3DNow!, MMX & SSE инструкции, что не мешает ей правильно их дизассемблировать, и даже заполнять для них структуру insn_t.
  4. Ещё более плохие новости: IDA Pro не понимает некоторых слабо документированных (или вообще недокументированных) инструкций. Даже бесплатный Netwide Assembler умеет ассемблировать/дизассемблировать следующие не понимаемые IDA Pro инструкции:

    IBTS XBTS SMI UD1 (часто называют также как UD) UD2

    Между прочим, UD2 описана в 24319102.pdf - "Intel Architecture Software Developer's Manual. Volume 2: Instruction Set Reference".

    Ещё больше недокументированных (и не опознаваемых IDA Pro) инструкций можно найти в этом документе от Potemkin's Hackers Group: http://d1.ifmo.ru/library/dosint/OPCODES/OPCODES.HTM

    Краткий перечень не опознаваемых IDA Pro инструкций, но опознаваемых Biew (взять можно на http://biew.sourceforge.net) :

    ПроцессорИнструкцияOpcode

    386umov0F (10-13)
    AMD K6syscall0F 05
    sysret0F 07
    AMD K7pf2iw0F 0F/rm/1C
    pfnacc0F 07/rm/8A
    pfpnacc0F 0F/rm/8E
    pi2fw0F 0F/rm/0C
    pswapd0F 0F/rm/BB
    Cyrix486smintold0F 7E
    Cyrix686rdshr0F 36
    smint0F 38
    wrshr0F 37
    i387SL MobilefnstdwDF E1
    fnstsgDF E2
    Cyrix 487frichopDD FC
    frinearDF FC
    frint2DB FC
    <


    Начало  Назад  Вперед



    Книжный магазин