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