Образ мышления IDA

Тема в разделе "WASM.BOOKS и WASM.BLOGS", создана пользователем Mika0x65, 12 май 2007.

  1. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Мое почтение всем.

    Читаю сейчас "ОБРАЗ МЫШЛЕНИЯ – ДИЗАССЕМБЛЕР IDA Pro", возникла пара вопросов.

    В главе №1 содержится такой пример:

    Не совсем понятно, почему переход условный, он, вроде, безусловный. Но, самое главное, не ясно, почему нельзя использовать клавишу "С", поставив курсор на строку 0x106? Почему неизвестно куда указывает 'jmp si' если известно, что si содержит к этому моменту 0х100? И почему не известно, откуда код, расположенный по адресу 0х106 получит управление (вроде, это адрес 0х103. Или подразумевается, что возможны еще адреса?)

    И чуть дальше:
    Почему 'from 0x122'? Это опечатка?

    Не совсем уверен, что пишу сообщение в тот форум. Пожалуйста, перенесите куда надо (WASM.BOOKS?). Буду рад, если ответит автор книги :).

    Заранее благодарен.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    там куча очепяток ;)
    У меня под рукой нет книги, так что не помню почему si не указывает на 0x100 ;)
     
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Вроде, в .com файлах после загрузки si всегда содержит 0x100. И что насчет клавиши "С", это тоже, получается, опечатка? Скорее, это несостыковка...
     
  4. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    опечаток там действительно много, но до переиздания руки никак не дойдут, хотя уже готово несколько глав, где вместо com файлов рассматриваются эльфы, но IDA развивается быстрее, чем я успеваю ее описывать. вообще же говоря, "образом мышления" я пользоваться не рекомендую. скоро в bhv выйдет новая книга по дизассемблированию (мыщъх + кокорева). там ошибок должно быть уже меньше.

    теперь по теме. переход действительно безусловный. адрес по которому он передает управление формально известен, но это же его каждый раз в уме вычислять надо, что напрягает. лучше вставить комментарий, чтобы потом не повторять одни и те же вычисления по десять раз подряд.

    клавиша C конечно хорошая штука, но без перекрестной ссылки листинг теряет наглядность. мы не можем _быстро_ сказать откуда данный код получает управления, не можем строить графы и т.д. перекрестные ссылки очень сильно упрощают разбор листингов (особенно больших). в приведенном в книге примере это не столь очевидно (листинг слишком мал), но если код напичкан вызовами в стиле call ebx, где ebx извлекается из памяти по указателю, переданному функции, то чтобы разобраться что именно здесь вызывается необходимо отследить все вызовы данной функции (а они ведь тоже могут вызываться через call ebx), так что статический анализ отдыхает и значение указателей приходится смотреть под отладчиком. вот это я и пытался продемонстрировать (кстати, отладчик так упоминается :derisive:

    > Почему 'from 0x122'? Это опечатка?
    почему опечатка?
     
  5. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Другой литературы нет. Я все равно прочитаю :).
    Нет, это было уточнение, опечатка ли это. М.б. я что-то не уловил.

    Назрел еще один вопрос. В .id1 файле общее количество страниц описывается словом. Виртуальная память IDA 0xFF000000 байт. Т.е. общее кол-во страниц не описывает всю вирт. память, отводимую IDA?..