Ответ эксперта

Можно ли проверить, что переданная сборка получена из переданного кода?

Вопрос по направлению: Экспертиза исходного кода на Java

Ответ

Такая проверка возможна и часто оказывается решающей в спорах о поставке. Проект собирают заново на зафиксированной версии инструментов и сравнивают полученные классы с содержимым переданного архива: сопоставляют перечень классов, их описания, ссылки на библиотеки, ресурсы и служебные записи манифеста. Сравнивают не байты, а приведённые к единому виду разборы class-файлов.

Совпадение и расхождение весят по-разному. Расхождение, которое не объясняется перечисленными ниже инструментальными причинами, — сильный факт; совпадение же подтверждает совместимость, но не доказывает, что сборку изготовили именно из этих текстов. Часть кода штатно создаётся при сборке — обработчиками аннотаций, генераторами и самим компилятором, — поэтому классы и методы, которых нет в исходных текстах, встречаются в любом современном проекте; значение имеет только то, что такой генерацией не объясняется. Повторить сборку удаётся не всегда: мешают версия и производитель компилятора, кодировка и язык системы, впечатанные при сборке отметки, а иногда и то, что нужные версии библиотек больше недоступны в хранилищах.

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

Актуализировано
Обсудить задачу

Нужна экспертиза или консультация?

Опишите ситуацию и цель обращения. Мы определим нужный вид исследования, подберём профильного эксперта и поможем подготовить вопросы и материалы.

  • Подберём специалиста
  • Поможем с вопросами
  • Оценим срок и стоимость
Оценить материалы или позвоните 8 (800) 333-24-09 Бесплатный звонок по России