dlls с rebase

Тема в разделе "WASM.WIN32", создана пользователем katrus, 26 окт 2009.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Обнаружил интересное явление, не потдающееся логическому обяснению. Есть два системных dll (скажем user32.dll, система - XP sp3) полученные с разных компьютеров. Debug dir guid у двух dll идеентичны, следоваельно они являются продуктом одной и той же компиляция. Идентификаторы языка тоже идеентичны. Разница начинается когда начинаем сравнивать md5 двух файлов. Вирус! Такой была моя первая идея. Внимательное сравнение показало, что единстванная отличие - смещение сегментов (.text, .data и .realoc) в двух файлах разное. То есть один из dll был "смещен".

    Как оказалось, этот феномен достаточно распространен. Практически для любого системного dll есть многочисленные "смещенные" версии.

    Собственно вопрос - что является источником таких файлов?
     
  2. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Хм, а дистрибутивы с этих систем есть?
    Скорее всего инсталлер что-то делает.
     
  3. Praetor11

    Praetor11 New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2009
    Сообщения:
    80
    Хм, а не является ли это защитой от вирусов, основанных на том, что адреса всех экспортируемых функций и переменных в системных длл всегда одинаковы?

    Ведь если среди одной и той же версии ОС адреса проецирования переменных и функций будут отличаться, действие таких вирусов сойдет на нет, особенно если для величины смещения использовался рандомайзер.
     
  4. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Я тоже полагаю, что это результат некой оптимизации производимой инсталятором. Смущает только как инсталятор умудряется потом подписать эти файлы (то есть конечно, не сами файлы, а их каталог)?