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


Как IDA дизассемблирует программы - часть 3


  • CF_STOP

    Инструкция не передаёт исполнение следующей инструкции (например, hlt)

  • CF_CALL

    Вызов процедуры.

  • CF_CHG1

    Инструкция модифицирует свой первый операнд.

  • CF_CHG2

    Инструкция модифицирует свой второй операнд.

  • CF_CHG3

    Инструкция модифицирует свой третий операнд.

  • CF_USE1

    Инструкция использует значение своего первого операнда.

  • CF_USE2

    Инструкция использует значение своего второго операнда.

  • CF_USE3

    Инструкция использует значение своего третьего операнда.

  • CF_JUMP

    Инструкция передаёт управление.

  • CF_SHFT

    Инструкция производит побитовый сдвиг.

  • CF_HLL

    Инструкция может быть описана на языке высокого уровня (я не знаю, что конкретно имелось в виду за столь витиеватой формулировкой)

  • Структура insn_t используется для внутреннего представления инструкции, нас интересуют следующие члены:

    • ushort itype

      Внутренний код инструкции. Значения кодов определены в каждом процессорном модуле по-разному для каждого процессора (я также сильно подозреваю, что их значения изменяются от версии к версии). Также является индексом в ранее описанном массиве инструкций instruc_t *instruc.

    • ea_t ea

      Линейный адрес инструкции.

    • ushort size

      Размер инструкции в байтах.

    • union { ushort auxpref; struct { uchar low; uchar high; } auxpref_chars; };

      Процессорно-зависимое поле. Используется для x86 процессора (см. детальное описание ниже).

    • op_t Operands[3]

      Операнды инструкции. Почему операндов именно три ? См., например, x86 инструкцию shld или shrd

    Структура op_t заслуживает более пристального рассмотрения. Она состоит из следующих членов:

    • char n

      Номер операнда - 0,1 или 2.

    • optype_t type

      Тип операнда. Этот член определяет, какие прочие члены структуры имеют значение, и как оно интерпретируется. Насколько я понял, процессорозависим. Более детальное описание см. ниже.

    • char offb

      Смещение значения операнда от начала инструкции. Имеет смысл не для всех типов операндов.

    • char offo

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




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