Экспертиза процесса разработки программного обеспечения

Судебная экспертиза исходного кода на Delphi

Исследуем учётные и отраслевые системы на Delphi: что передано заказчику, собирается ли программа из исходников, что содержат формы и база данных.

Ориентир по стоимости экспертизы
от 100 000 ₽
Ориентир по сроку экспертизы
от 10 рабочих дней
  • Судебные экспертизы
  • Внесудебные исследования
  • Рецензирование заключений
  • Консультации и справки
01 Проверим компетенцию

До оплаты определим, относится ли задача к выбранному виду исследования.

02 Поможем подготовиться

Уточним вопросы и перечень материалов — готовый комплект не обязателен.

03 Работаем с регионами

Принимаем задачи из России, Казахстана и Беларуси. До назначения часть материалов можно передать электронно; по назначенной экспертизе порядок определяет назначивший орган.

04 Сопровождаем результат

Разъясняем методику и выводы, отвечаем на вопросы суда в пределах компетенции эксперта.

О направлении

Подробно о задачах, объектах и методиках

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

Содержание страницы
  1. С какими спорами приходят по программам на Delphi
  2. Почему из готовой программы код не восстановить, а форму — можно
  3. Что сделать сегодня, пока следы не стёрлись
  4. Версия среды и набор компонентов: почему исходники не собираются
  5. Сторонние компоненты и их условия использования
  6. База данных: где живёт половина логики
  7. Сборка не повторяема побайтово: как связывают код и программу
  8. Как устанавливают возраст спорной версии
  9. Следы миграции: что ломается при переносе старой системы
  10. Отказы, зависания и рост потребления памяти
  11. Сравнение двух программ на Delphi
  12. Когда исполнителя уже нет
  13. Какие обстоятельства устанавливают по программе на Delphi
  14. Как проверяют соответствие заданию
  15. Что просят прислать по спору о системе на Delphi
  16. Пароли внутри программы: как отдать материалы и не открыть систему
  17. Как идёт работа: от приёмки материалов до выводов
  18. Как формулируют вопросы по программе на Delphi
  19. Форматы работы: что выбирают по старым системам
  20. Из чего складываются стоимость и срок

В спорах об учётных, складских и отраслевых системах на Delphi часто исследуют давно работающий объект: разногласия возникают при доработке, передаче сопровождения или замене программы. Экспертиза исходного кода на Delphi — специализированное направление экспертизы процесса разработки программного обеспечения. В зависимости от процедуры результатом будет заключение судебного эксперта или документ внесудебного исследования; доказательственное значение оценивает суд.

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

Язык и состав программы устанавливают по документам и файлам настолько точно, насколько позволяют материалы. Если система создана не на Delphi или включает несколько технологий, до исследования уточняют его границы.

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

С какими спорами приходят по программам на Delphi

До начала исследования определяют спорные версию, площадку и период. Это позволяет отделить первоначальную поставку от последующих доработок и изменений среды.

Типичные ситуации выглядят так:

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

Если разногласия касаются обмена с бухгалтерским контуром предприятия, начните со страницы экспертизы 1С: там объекты и следы другие.

Почему из готовой программы код не восстановить, а форму — можно

Delphi компилирует исходный текст в машинный код. Из исполняемого файла можно получить дизассемблированное или приближённое представление, но не первоначальную программу на Object Pascal с её комментариями, именами и разбиением по файлам. В этом Delphi ближе к C++, чем к платформам с промежуточным кодом.

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

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

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

Что сделать сегодня, пока следы не стёрлись

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

Способ копирования зависит от СУБД, версии и режима эксплуатации. Файл работающей базы нельзя копировать как обычный документ без подтверждения целостности. В Firebird один из предусмотренных механизмов использует nbackup -L перед файловой копией и nbackup -UN после неё. Команды выполняет администратор по документации именно к установленной версии, с резервной копией, окном работ и планом восстановления. В других случаях применяют штатное резервное копирование, снимок согласованного уровня или корректную остановку сервиса.

Принудительное отключение активных подключений средствами СУБД может прервать операции пользователей и изменить состояние базы. Его не используют как универсальный способ фиксации: необходимость, последствия и порядок возврата проверяет администратор для конкретной версии.

Продолжительность окна зависит от размера базы, хранилища и допустимого простоя. Расписание резервного копирования, очистки и иных фоновых задач не меняют без оценки влияния на сохранность данных и работу системы. Все отступления от штатного режима заранее согласуют и документируют.

Порядок действий такой:

  1. зафиксируйте сведения о сервере, версии СУБД, состоянии системы и выбранном способе копирования;
  2. получите копию базы согласованным штатным способом и сразу вычислите её контрольную сумму;
  3. проверьте завершение операции и доступность рабочих мест, не внося лишних изменений;
  4. сохраните отдельно файловую копию или снимок, если они допустимы, и штатную резервную копию; их состав и доказательственные возможности различаются;
  5. экспортируйте относящиеся к периоду журналы приложения, Windows и сервера базы, сохранив сведения об источнике и времени;
  6. сохраните относящиеся к спору прежние резервные копии, контролируя место на диске и непрерывность штатного резервирования;
  7. составьте запись о том, какие копии получены, с какого сервера, когда, кем, каким средством и в чьём присутствии.

Что собрать, кроме базы:

  • каталог установленной программы целиком — с исполняемым файлом, всеми библиотеками рядом с ним, файлами настроек и шаблонами печатных форм; если программа собрана с внешними пакетами, часть кода и форм лежит в отдельных файлах рядом, и без них объект неполон;
  • дистрибутив, которым программу устанавливали, и сохранившиеся обновления — они помогают сопоставить версии вместе с документами и журналами;
  • если исходный текст у вас есть, копию всего каталога проекта, включая файлы форм и файл проекта, а не только файлы с кодом;
  • сведения о базе: производитель, версия, архитектура и параметры сервера. Совместимость копии и способ восстановления зависят от версии и формата, поэтому эти сведения нужны для стенда;
  • сведения об аппаратном ключе защиты, если программа его требует. Необходимость и последствия перемещения ключа с рабочего сервера предварительно оценивают совместно с владельцем системы; для стенда согласуют отдельный порядок;
  • контрольные суммы архивов, вычисленные сразу и внесённые в защищённый журнал передачи. Они позволяют позднее проверить соответствие файлов записанным значениям, но сами не подтверждают источник и дату. В Windows используют PowerShell: Get-FileHash архив.zip -Algorithm SHA256; начиная с Vista доступна команда certutil -hashfile архив.zip SHA256; в Linux — sha256sum архив.zip. Перенос на другой компьютер документируют.

Копируйте и передавайте только материалы, к которым есть законное основание доступа. Если исходники находятся у другой стороны, письменно запросите предусмотренный договором комплект и сохраните ответ. Способ истребования зависит от процедуры; в ходатайстве обозначают доказательство, подтверждаемые обстоятельства, причины невозможности получить его самостоятельно и место нахождения.

Операции на сервере выполняет уполномоченный администратор с предупреждением затрагиваемых пользователей. Если порядок неясен, позвоните по номеру 8 (800) 333-24-09: после описания системы можно определить безопасный план применительно к ситуации.

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

До фиксации по возможности не обновляйте и не переустанавливайте спорную версию и не переносите базу. Если изменение необходимо для безопасности или непрерывности работы, сначала сохраните доступное состояние и документируйте причину, исполнителя и результат.

Самостоятельно снятая копия требует подтверждения происхождения. Контрольные суммы позволяют позднее проверить соответствие копии записанному значению, но не доказывают дату и способ получения. Нотариальное, судебное или иное обеспечение доказательств применяют по правилам соответствующей процедуры; конкретный порядок предварительно согласуют с юристом.

Версия среды и набор компонентов: почему исходники не собираются

Если из переданных исходников не удаётся получить работающую программу, сначала проверяют полноту комплекта и окружение. Сам по себе отказ сборки не доказывает подмену или дефект исходного текста.

Для сборки фиксируют точную версию и номер сборки Delphi с обновлениями, контрольные суммы компилятора и иных средств, целевую платформу и конфигурацию, директивы и условные символы, пути поиска, команды и события сборки, версии и контрольные суммы сторонних DCU, DCP, BPL и ресурсов, ОС, архитектуру и операции после сборки. Совместимость версий различается, поэтому контрольную попытку начинают с максимально близкого подтверждённого окружения.

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

Сторонние компоненты и их условия использования

Проекты Delphi могут использовать сторонние компоненты для интерфейса, отчётов и доступа к данным. Их устанавливают по исходникам, файлам проекта, ресурсам, зависимостям и иным подтверждённым следам. По одному исполняемому файлу полный состав и точные версии определяются не всегда.

Сторонний, изменённый, сгенерированный и собственный код классифицируют раздельно. Универсального правила вычитания нет: учитывают происхождение элемента, внесённые изменения, интеграцию и поставленный вопрос. Лицензионные условия могут зависеть от числа разработчиков, способа распространения или состава передаваемых файлов.

Эксперт указывает компонент и его версию, подтверждённые представленными материалами, источник сведений и реквизиты лицензионного документа. Толкование условий и вывод о нарушении относятся к правовой оценке.

База данных: где живёт половина логики

В информационной системе часть правил может находиться в базе: в хранимых процедурах, триггерах, ограничениях и настройках. Поэтому объект исследования не ограничивают приложением, если вопрос относится к расчётам, проверкам или движению данных.

Доступная структура Firebird или InterBase может содержать таблицы, связи, индексы и исходные тексты процедур и триггеров. Полнота зависит от версии, прав доступа, резервной копии, шифрования и того, сохранён ли исходный текст в метаданных. Если доступно только скомпилированное представление, возможности анализа описывают отдельно.

Старые системы могут зависеть от неподдерживаемого слоя доступа к файловым таблицам, 32-разрядных драйверов, прав и сетевых настроек. Такие компоненты не устанавливают на рабочую площадку без оценки безопасности и совместимости. Для исследования создают изолированный стенд; возможность прочитать данные отдельно от программы проверяют выбранным инструментом и на копии.

Сборка не повторяема побайтово: как связывают код и программу

Побайтовую воспроизводимость сборки Delphi нельзя ни предполагать, ни исключать заранее. Файл может зависеть от версии компилятора и компонентов, конфигурации, ресурсов, путей, времени и последующих операций. Сначала выполняют повторные сборки в зафиксированной среде и устанавливают стабильные и переменные области; только затем выбирают критерии сопоставления.

Для сравнения выбирают признаки, сохраняющиеся в сборке:

  • ресурсы форм: сохранённые окна, элементы и свойства сопоставляют с файлами форм из переданного комплекта;
  • доступные метаданные классов и свойств из исполняемого файла — со сведениями из исходного текста;
  • текстовые строки: надписи, сообщения об ошибках, названия таблиц и полей, тексты запросов к базе;
  • подтверждённые признаки сторонних компонентов и среды сборки;
  • поведение на стенде: одинаково ли ведут себя собранная из переданного текста программа и спорная в одних и тех же сценариях.

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

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

Как устанавливают возраст спорной версии

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

Опираются на такие следы:

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

Файловые метки легко меняются при копировании и переустановке, поэтому оцениваются только вместе с источником и другими следами. Итог формулируют как подтверждённый интервал существования или выпуска версии с указанием точности и противоречий. Если спор целиком о сроках и хронологии работ, его разбирает экспертиза сроков и хронологии разработки.

Следы миграции: что ломается при переносе старой системы

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

Смотреть нужно как минимум сюда:

  • обработка текста: при переходе между однобайтовыми строками и Unicode меняются кодировки, размеры и правила преобразования; результат проверяют на конкретных данных;
  • работа с файлами и путями: права, виртуализация каталогов для некоторых прежних приложений и раздельные профили пользователей могут изменить место хранения настроек и данных;
  • обращение к базе через прежний драйвер или слой доступа, отсутствующий либо неподдерживаемый в новой среде;
  • сторонние компоненты без совместимой версии, при замене которых требуется отдельно проверить поведение;
  • печатные формы и отчёты, зависящие от шрифтов, драйверов, шаблонов и настроек площадки.

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

Отказы, зависания и рост потребления памяти

При исследовании отказа сначала устанавливают спорные версию и сценарий, затем собирают доступные журналы, дампы, метрики и сведения об окружении. Отсутствие следов ограничивает вывод, но не заменяется предположением.

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

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

Сравнение двух программ на Delphi

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

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

Общие элементы классифицируют: сторонние компоненты, заготовки среды, стандартные конструкции и типовые отраслевые решения. Их не исключают автоматически; для каждого совпадения устанавливают происхождение, изменения и значение. Отдельно проверяют возможную общую раннюю версию.

Значимость совпадений оценивают по их объёму, специфичности, происхождению и доступным независимым объяснениям. Вывод строят на совокупности признаков, а не на одном проценте. Отсутствие значимых совпадений означает лишь, что выбранная методика их не выявила. Направление возможного заимствования исследуют по датам и истории изменений, а вывод о нарушении прав делает суд.

Когда исполнителя уже нет

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

Исследование может описать доступные функции и данные, определить варианты их выгрузки и зафиксировать состав поставки по документам. Эти результаты помогают планировать миграцию, но не заменяют проектирование новой системы и не гарантируют воспроизведение прежней.

Первоначальный исходный текст по исполняемому файлу не восстанавливается; доступны лишь ресурсы, машинный код и иные сохранившиеся признаки. Заключение не создаёт права на код. Принадлежность прав и допустимость доработки оценивают по документам и применимому праву.

Какие обстоятельства устанавливают по программе на Delphi

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

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

Толкование договора, принадлежность прав, существенность недостатка и размер убытков оценивает суд. Технические выводы могут служить основанием для этой оценки, но не заменяют её. Денежные вопросы исследуют в рамках экспертизы объёма и стоимости работ, при необходимости с участием экономиста.

Как проверяют соответствие заданию

Для каждого требования выбирают объект и способ проверки. Объектом может быть работающая система, база, исходники, ресурсы или документация. Выбранный объект, условия и ограничения указывают рядом с результатом.

Поведение проверяют на стенде по воспроизводимому сценарию. Состав интерфейса исследуют по ресурсам форм и запуску; правила обработки данных — по коду, базе и наблюдаемому результату. Требования к внутреннему устройству без исходников иногда можно оценить по машинному коду, но полнота зависит от материалов и прямо оговаривается.

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

По каждому требованию указывают: реализовано, реализовано частично, не реализовано либо не может быть проверено на представленных объектах. Затем описывают объект, способ, условия и результат. Существенность недостатка и его влияние на приёмку оценивает суд. Если язык значения не имеет, проводят экспертизу соответствия работ техническому заданию.

Что просят прислать по спору о системе на Delphi

Для старой системы особенно важны сохранившиеся дистрибутивы, база, сведения об окружении и документы о доработках. Репозиторий и исходники включают в комплект, если они доступны.

Программа: дистрибутив, исполняемый файл, исходный текст

Сначала идентифицируют программу и материалы сборки:

  • каталог установленной программы целиком, вместе с библиотеками и файлами настроек;
  • дистрибутивы сохранившихся версий и обновлений с документами, подтверждающими источник и время получения;
  • исходные тексты, файлы форм, проект, конфигурации и ресурсы, если они сохранились;
  • сведения о сторонних компонентах и документы на их приобретение или использование;
  • map-файлы и иные отладочные сведения, связанные с конкретными сборками;
  • точная версия и номер сборки Delphi с обновлениями, целевая платформа, конфигурация, директивы, пути, команды сборки, сторонние DCU, DCP, BPL, ресурсы и операции после сборки.

База и площадка: где система хранит накопленное

Затем собирают данные и сведения о площадке:

  • копия или резервная копия базы, полученная штатным для конкретной СУБД способом, с протоколом и контрольной суммой;
  • описание площадки: версии операционной системы и СУБД, архитектура, способ подключения рабочих мест;
  • относящиеся к спорному периоду журналы приложения, Windows и сервера базы;
  • печатные формы и шаблоны отчётов, если они лежат отдельными файлами;
  • техническое задание с приложениями, договор, акты, переписка сторон, инструкции пользователей.

Недостающие материалы определяют после первичного разбора: набор зависит от вопросов, поэтому собирать всё без разбора не нужно.

Пароли внутри программы: как отдать материалы и не открыть систему

До первичного разговора материалы не отправляют. Затем согласуют состав, защищённый канал и круг допущенных лиц; архив шифруют, пароль передают отдельно, а при приёмке фиксируют опись и контрольные суммы. Рабочую базу и настройки не пересылают по обычной почте или через мессенджеры.

Неизменный оригинал программы, настроек и базы сохраняют в защищённом контуре. Для передачи готовят документированную производную копию с маскированием действующих секретов и лишних персональных данных, если это не уничтожает исследуемый признак. Иначе исследование проводят на месте или по отдельно согласованной защищённой процедуре.

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

Полный оригинал базы сохраняют отдельно. В рабочую копию для исследования включают только относящиеся к вопросам данные; маскирование и исключения документируют и проверяют на влияние на исследуемые признаки.

Основание и порядок обработки персональных данных определяют до передачи с учётом процедуры, состава материалов и ролей участников. В судебной экспертизе доступ организуют через назначивший орган; во внесудебной основание, цели, состав и меры защиты заранее согласуют с юристом и оператором персональных данных.

Срок хранения, режим доступа, возврат или уничтожение материалов фиксируют до начала работы. Если раскрытие другой стороне создаёт риск, до передачи обсуждают с юристом необходимый объём, исследование на территории владельца и доступные процессуальные меры конфиденциальности.

Как идёт работа: от приёмки материалов до выводов

Последовательность зависит от вопросов и состояния объектов, но каждый шаг должен быть документирован и проверяем другим специалистом:

  1. Приёмка: фиксируют состав, контрольные суммы, источник и порядок получения каждой копии.
  2. Опознание объектов: определяют дистрибутив, установленную программу, исходники, базу, доступные признаки среды и компонентов.
  3. Исследование ресурсов и метаданных программы, структуры базы и сохранённых текстов процедур с указанием ограничений.
  4. Подготовка изолированного стенда с документированным окружением и проверка запуска на копии данных.
  5. Контрольная сборка из переданного комплекта, если она возможна, с фиксацией входов, средств, ошибок и результата.
  6. Проверка требований применимым способом с записью объекта, условий и результата.
  7. Проверка альтернативных объяснений: настройки, данные, платформа, внешние системы и действия пользователей.
  8. Формулирование выводов в пределах вопросов с перечислением ограничений и недостающих материалов.

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

Как формулируют вопросы по программе на Delphi

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

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

  1. Может ли файл … быть получен сборкой исходных текстов архива с контрольной суммой SHA-256 … в воспроизведённой среде; какие совпадения, различия, проверенные причины различий и ограничения установлены?
  2. Какие экранные формы, их поля и связи с объектами базы данных выявлены в программе … и базе …?
  3. Соответствует ли программа … требованиям пунктов … технического задания (приложение № … к договору от …) при указанных объектах, условиях и способах проверки?
  4. Какие тексты процедур и триггеров сохранились в базе … и какие правила обработки данных в них реализованы?
  5. Какие совпадения и различия программ … и … выявлены по ресурсам, метаданным, коду и структуре базы; как учтены общие компоненты и заготовки?
  6. Какие технические причины отказа программы … подтверждаются журналом … и воспроизведённым сценарием …; достаточно ли материалов для причинного вывода?
  7. Какие данные содержит база … и какие технические варианты их выгрузки подтверждены пробным преобразованием на копии?

Форматы работы: что выбирают по старым системам

Формат работы выбирают по стадии спора и доступным материалам. До назначения судебной экспертизы проще организовать инвентаризацию и безопасную фиксацию работающей системы; после назначения взаимодействие ведут через назначивший орган.

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

Внесудебное исследование проводится по договору и по материалам, переданным на законном основании. Судебную экспертизу назначает суд или орган расследования; материалы передаются, а доступ предоставляется через назначивший орган.

Имеющееся заключение можно проверить рецензированием — подробнее на странице рецензии на заключение о процессе разработки. Рецензия сама не отменяет заключение, а помогает обосновать процессуальное ходатайство. Вопрос о вызове эксперта, дополнительной или повторной экспертизе решает назначивший орган. Заключение оценивается вместе с другими доказательствами.

После назначения судебной экспертизы дополнительные материалы, доступ к площадке и новые сведения передают через назначивший орган. Эксперт не принимает дополнительные материалы непосредственно от сторон и не даёт им частных оценок по существу поручения. Предшествующую работу для участника спора раскрывают при рассмотрении кандидатуры; решение о назначении и отводе принимает назначивший орган.

Из чего складываются стоимость и срок

Стоимость и срок зависят прежде всего от состояния объектов и подготовки стенда.

При наличии полного исходного комплекта проверяют сборку и код. Без него исследуют ресурсы, машинный код, базу и поведение; трудоёмкость и пределы вывода определяют после первичного разбора.

Для старой системы может потребоваться изолированная среда с совместимой версией Windows, СУБД, драйверами, компонентами и аппаратной защитой. Возможность безопасного воспроизведения и объём подготовки оценивают отдельно.

Работу на площадке согласуют по времени, доступу, участникам и допустимым операциям. Выезд, подготовка стенда и участие специалиста в заседании учитываются отдельными позициями.

Ориентир для судебной экспертизы — от 100 000 ₽, ориентировочный срок — от 10 рабочих дней. Их уточняют после просмотра материалов и оценки совместимости окружения. Порядок и размер оплаты судебной экспертизы определяются назначившим органом по применимой процедуре.

Вывод о невозможности ответить по представленным материалам также требует исследования: эксперт указывает, какого объекта или условия не хватило. Поэтому комплект и объём работ определяют до начала.

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

Для расчёта достаточно описать спор, назвать систему и перечислить имеющиеся материалы: договор, задание, переписку, дистрибутивы, базу и исходники. Позвоните по номеру 8 (800) 333-24-09 или оставьте заявку — мы определим направление исследования и сведения, необходимые для расчёта.

Проведение экспертизы по уголовному делу

Судебная экспертиза по уголовному делу производится государственными судебными экспертами и иными экспертами из числа лиц, обладающих специальными знаниями.

Согласно постановлению Пленума Верховного Суда Российской Федерации от 21 декабря 2010 г. № 28 «О судебной экспертизе по уголовным делам», негосударственными судебно-экспертными учреждениями признаются некоммерческие организации, созданные на основании Гражданского кодекса Российской Федерации и Федерального закона «О некоммерческих организациях» и ведущие судебно-экспертную деятельность согласно своим уставам.

По сведениям организации, проведение судебных экспертиз предусмотрено её уставом (см. действующую редакцию в разделе «Документы организации»). Это само по себе не означает автоматического поручения любой экспертизы. Возможность поручить конкретное исследование определяет назначающий орган.

В случаях, перечисленных пунктом 5 постановления № 28, когда экспертизу по уголовному делу назначает суд, ему следует мотивировать в определении или постановлении поручение исследования учреждению либо конкретному лицу. Пункт 5 постановления № 28 связывает выбор негосударственного учреждения с невозможностью провести исследование в государственном учреждении, обслуживающем соответствующую территорию: например, из-за отсутствия нужного специалиста, материально-технической базы или специальных условий, либо с отводом компетентных государственных учреждений. Дополнительно учитываются квалификация эксперта, основания для отвода и действующий перечень экспертиз, выполняемых только государственными судебно-экспертными организациями.

Актуализировано
Форматы работы

Стоимость и сроки

Указан предварительный ориентир. Точный расчёт зависит от вопросов, объёма материалов, количества объектов и необходимости выезда. Срок рассчитываем после получения и проверки необходимого комплекта.

По договору

Внесудебное исследование

от 100 000 ₽
от 10 рабочих дней
точная стоимость будет определена после ознакомления с объектом исследования

Итог — письменный документ с результатами внесудебного исследования. Название документа, порядок его представления и оценка зависят от вида процесса.

Заказать исследование
Проверка готового заключения

Рецензирование

от 80 000 ₽
10 рабочих дней
точная стоимость будет определена после ознакомления с заключением и приложениями

Итог — письменная рецензия на готовое заключение. Она проверяет исходные данные, методы и выводы, но не отменяет заключение и не заменяет новое исследование объекта.

Передать заключение на проверку
Письменный ответ эксперта

Консультация и справка

от 20 000 ₽
2–3 рабочих дня
точная стоимость будет определена после ознакомления с объектом исследования

Поможет предварительно оценить вопрос, его исследуемость и ограничения будущей работы, а также спланировать дальнейшие действия.

Описать вопрос
Разбор задачи — без оплаты

Бесплатно определим вид исследования, проверим, нет ли явных пробелов в комплекте материалов, и назовём ориентировочные срок и стоимость. Если уже на этом этапе видно, что задачу решить нельзя, скажем об этом и не будем предлагать полное исследование. Изучение материалов по существу с письменным ответом — платная консультация; её стоимость согласуем до начала.

Получить организационный разбор
Организация исследования

Как строится работа над экспертизой

До начала исследования уточним предмет задачи, состав материалов и формат итогового документа.

  1. 01 Организационный разбор

    Проверяем компетенцию и сообщаем, можно ли провести исследование по поставленной задаче.

  2. 02 Вопросы и материалы

    Уточняем вопросы и сообщаем, каких документов или объектов не хватает.

  3. 03 Экспертное исследование

    Эксперт применяет профильные методики, фиксирует ход работы и обосновывает выводы.

  4. 04 Заключение и пояснения

    Передаём результат и при необходимости разъясняем суду применённую методику и выводы.

Выполненные исследования

Практика по этому направлению

Краткие описания выполненных исследований показывают задачи и объекты. В конкретном деле круг вопросов определяет назначивший орган, а вопросы о виновности, принадлежности прав и обоснованности требований разрешает суд.

Все примеры по направлению
Опубликованный пример
Завершена в марте 2025 года

Компьютерная экспертиза внедрения лабораторной системы №158474

Заказчик оспаривал качество внедрения лабораторной системы: судебная компьютерно-техническая экспертиза устанавливала объём работ и соответствие программы договорным требованиям.

Арбитражный суд Приморского краяДело №А51-15545/2023
Участники: ООО Медицинский диагностический центр "Доктор Тафи", ООО "Программный стиль"
Открыть описание
Опубликованный пример
Завершена в июне 2014 года

Экспертиза программ и базы автовокзала в Перми №2528

Правообладатели спорили об исходном коде программ автовокзала и базе автобусных перевозок: компьютерно-техническая экспертиза проверяла связь и сходство компонентов.

Арбитражный суд Пермского краяДело №А50-16993/2013
Участники: ПКГУП "Автовокзал", ООО "Комплексные автоматизированные распределительные системы"
Открыть описание
В открытом доступе представлена часть выполненных исследований по разным объектам и судебным делам. Сведения, защищённые законом или условиями конфиденциальности, не раскрываются. Чтобы проверить возможность исследования по вашей ситуации, опишите задачу.

Документы организации

Ответы специалистов

Частые вопросы

Практические пояснения о назначении, материалах и использовании экспертного заключения.

Все вопросы по направлению
Когда экспертиза старой учётной системы имеет смысл?

Тогда, когда спор упирается в проверяемое состояние системы, а не только в толкование договора. По Delphi поводы свои: заказчик много лет пользуется программой, а исходный текст ему не передали; текст передали, но собрать из него работающую программу не выходит; новый подрядчик взялся сопровождать чужую систему и часть функций перестала работать; система отказала после обновления Windows или переноса на другой сервер.

Отдельный повод — переход на новую систему: заказчик хочет забрать накопленные данные, а прежний исполнитель говорит, что выгрузка невозможна. Это проверяемое утверждение, и проверяют его по самой базе.

Не годится экспертиза там, где вопрос правовой: приняты ли работы, кому принадлежат права на программу, существенны ли недостатки. Эксперт устанавливает факты о системе, а правовую оценку им даёт суд.

Отдельная страница: Когда экспертиза старой учётной системы имеет смысл?
Можно ли получить исходный код программы на Delphi?

Нет, и это принципиальное отличие Delphi от платформ, где программа хранится в промежуточном виде. Компилятор переводит текст сразу в машинный код процессора, и обратной операции, которая вернула бы читаемую программу на Object Pascal, не существует. Никакое средство не выдаст вам исходный текст с именами переменных и структурой процедур.

Что из готовой программы всё-таки извлекается — совсем другой набор сведений: описания экранных форм со всеми элементами, перечень классов и их свойств, текстовые строки и сообщения, обращения к таблицам базы, признаки использованных сторонних компонентов. Этого хватает, чтобы описать устройство системы, но не хватает, чтобы прочитать алгоритм расчёта.

Границу эксперт проводит в заключении прямо: что установлено по машинному коду, что — по ресурсам, а что установить нельзя. Выводы суд оценивает наряду с другими доказательствами.

Отдельная страница: Можно ли получить исходный код программы на Delphi?
Что даёт исследование экранных форм без исходного кода?

Состав окон программы целиком, вплоть до отдельного поля. Внешний вид каждого окна на Delphi описан отдельным файлом формы, и при сборке эти описания попадают внутрь исполняемого файла как ресурсы. Оттуда они извлекаются и читаются: состав окон, элементы на каждом, надписи, размеры, привязка полей к таблицам базы, имена обработчиков событий.

Пределы у метода есть, и называть их обязательно. В описании сохраняются только свойства, которые разработчик менял, — заданное по умолчанию там не хранится. Элементы, создаваемые программой во время работы, в описаниях отсутствуют вовсе. Наличие формы не означает, что до неё можно дойти из меню: описание отражает замысел, а не работающую функцию. А если программа собрана с внешними пакетами, часть форм лежит в отдельных файлах рядом с ней.

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

Отдельная страница: Что даёт исследование экранных форм без исходного кода?
Исходники передали, а программа не собирается — чья вина?

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

Компоненты — самая частая причина. Их устанавливают в среду, а не кладут рядом с проектом, поэтому при передаче исходников о них забывают, и текст оказывается формально полным, а собрать из него нечего. Эксперт разбирает это по шагам: какой версией среды собиралась спорная программа, какие компоненты в ней использованы, что есть в переданном комплекте, а чего недостаёт.

Вывод формулируют так, чтобы им можно было пользоваться: не «не собирается», а чего именно не хватило. Кто отвечает за недостающее по условиям договора, решает суд.

Отдельная страница: Исходники передали, а программа не собирается — чья вина?
Как узнают, какие сторонние компоненты использованы?

Двумя путями, и оба дают проверяемый результат. Если исходный текст есть, состав компонентов виден прямо в файле проекта и в списке используемых модулей. Если текста нет, компоненты опознают по самой программе: многие известные наборы оставляют в исполняемом файле узнаваемые имена классов и строки, а их формы попадают в ресурсы вместе с остальными.

Метод не исчерпывающий, и эксперт разделяет опознанное надёжно и предположительно. Часть компонентов следов не оставляет, поэтому вывод строят как «использованы такие-то», а не «использованы только такие-то».

Дальше начинается вопрос условий: у каждого набора свой лицензионный документ, и встречаются условия, привязанные к числу разработчиков. Эксперт устанавливает, какой набор какой версии подключён и каким документом сопровождается, и приводит его текст; толкование условий — за судом.

Отдельная страница: Как узнают, какие сторонние компоненты использованы?
Зачем эксперту база данных, если спор о программе?

Потому что в системах на Delphi значительная часть логики живёт не в программе, а в базе: расчёты, проверки и правила реализованы хранимыми процедурами и триггерами. Исследование только по программе на вопрос о расчёте тогда просто не отвечает.

База при этом читается независимо от программы: из файла извлекается вся структура — таблицы, поля, связи, индексы, — а обычно и тексты процедур и триггеров, которые хранятся рядом со скомпилированным представлением. Но: работать базе тексты не нужны, и вычистить их при поставке — известный приём защиты логики; в новых версиях Firebird содержимое базы к тому же бывает зашифровано. Тогда остаётся скомпилированное представление, читать которое сложнее.

Поэтому наличие текстов эксперт проверяет первым делом и указывает в заключении, что именно было доступно. Какое значение имеет установленное, оценивает суд.

Отдельная страница: Зачем эксперту база данных, если спор о программе?
Систему не запустить на новом компьютере — что тогда?

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

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

Если запустить не удалось совсем, данные читаются и без программы — отдельными средствами. Всё, что проверить не получилось, эксперт перечисляет как ограничение, и суду важно видеть эту границу, а не только результат.

Отдельная страница: Систему не запустить на новом компьютере — что тогда?
Как доказать, что программа собрана из этого кода?

Сравнением по содержанию, а не по байтам. Две сборки одного текста в Delphi дают разные файлы: внутрь попадают время сборки и другие переменные сведения, а результат зависит и от версий установленных компонентов. Эксперт, который сравнивает байты, выходит за пределы обоснованного вывода.

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

Исходов три, и все названы заранее. Совпали оболочка и поведение на всех сценариях — вывод о происхождении обоснован. Разошлась оболочка либо поведение хотя бы на одном сценарии — основание для вывода о несоответствии, но прежде эксперт исключает расхождения, вызванные его собственным стендом: другой версией компонентов, другими настройками сборки. Не удалось собрать текст или согласовать сценарии — вывод не делается, и это тоже результат, который суд оценивает наравне с остальными.

Отдельная страница: Как доказать, что программа собрана из этого кода?
Как установить, когда появилась спорная версия?

По совокупности источников, потому что надёжного одиночного не существует. Хранилище исходных текстов у старых систем обычно не велось, поэтому вес каждого сохранившегося источника выше, чем в современных стеках.

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

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

Отдельная страница: Как установить, когда появилась спорная версия?
Система сломалась после перевода на новую среду?

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

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

Установив дефект, эксперт отвечает и на второй вопрос: возник он при переводе или существовал раньше. Была ли работа по переводу предусмотрена договором, решает суд.

Отдельная страница: Система сломалась после перевода на новую среду?
Вылетает программа на Delphi: найдут ли причину?

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

Выручает то, что многие системы на Delphi ведут собственный журнал ошибок с цепочкой вызовов и именами методов — он информативнее системного. Если такой журнал включён, место отказа устанавливается и без отладочных сведений.

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

Отдельная страница: Вылетает программа на Delphi: найдут ли причину?
Программа зависает при работе с базой: где причина?

Чаще всего не в программе, а в базе, и это важно для правильной постановки вопроса. Пока программа не отвечает, снимают снимок её состояния и смотрят, чем заняты потоки: ждут ли они ответа базы, встали ли на общей блокировке, заблокировали ли друг друга. Два-три снимка подряд отвечают, стоит работа или идёт медленно.

Если ожидание пришло со стороны базы, дальше смотрят уже её: какие соединения удерживают блокировку, какая операция её поставила, есть ли долгие запросы. По системам на Delphi типична ситуация, когда одно рабочее место держит открытой длинную операцию, а все остальные ждут его.

Вывод сопровождают описанием сценария, при котором зависание воспроизведено, и числом одновременных пользователей. Соответствует ли это условиям эксплуатации из задания, оценивает суд.

Отдельная страница: Программа зависает при работе с базой: где причина?
По чему сравнивают две программы на Delphi?

Не по машинному коду: одинаковый текст, собранный разными версиями среды, даёт разный результат, а разный текст может дать похожий. Сравнивают то, что сборка сохраняет в узнаваемом виде.

Главный объект — экранные формы: совпадение расположения элементов, их имён и свойств у двух независимо написанных программ практически исключено. К нему добавляют перечень классов и модулей, текстовые строки и сообщения, а также структуру базы вместе с текстами хранимых процедур — по ней совпадения видны нагляднее всего. Из сравнения сначала вычитают общее основание: код сторонних компонентов, заготовки, которые среда создаёт сама, стандартные конструкции языка.

Направление заимствования само совпадение не показывает: кто у кого, устанавливают по датам и истории изменений, а вывод о нарушении прав делает суд. Развёрнуто задача разобрана на странице экспертизы плагиата исходного кода.

Отдельная страница: По чему сравнивают две программы на Delphi?
Разработчика больше нет: что даст экспертиза?

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

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

Кому принадлежат права на систему и вправе ли заказчик её дорабатывать — вопросы правовые. На них отвечает суд по документам, а заключение эксперта даёт для этого техническую опору: что представляет собой программа и что было передано.

Отдельная страница: Разработчика больше нет: что даст экспертиза?
Как проверить, что данные можно выгрузить?

Проверкой на самой базе, а не обсуждением. Утверждение «данные выгрузить невозможно» проверяемо: эксперт открывает резервную копию базы, читает её структуру и устанавливает, в каких таблицах лежат нужные сведения, связаны ли они между собой и можно ли получить их в переносимом виде.

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

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

Отдельная страница: Как проверить, что данные можно выгрузить?
Что считать работой подрядчика, а что — компонентами?

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

Эксперт сначала отделяет эти слои, описывает основание для каждого исключения и только потом измеряет остаток. Именно границы исключения обычно и оспариваются, поэтому они должны быть проверяемыми. По Delphi к остатку добавляют то, чего нет в других языках: описания форм — это тоже результат работы, хотя строк кода в них нет.

Полученная величина — технический факт, а не сумма: одна процедура сложного расчёта и сотня однотипных форм несопоставимы по трудозатратам. Выводы о принятом объёме и его цене делает суд, а расчёт для них даёт отдельная экспертиза объёма и стоимости работ.

Отдельная страница: Что считать работой подрядчика, а что — компонентами?
Как проверяют требования задания без исходного кода?

Способ проверки выбирают под требование, и по Delphi объекты для этого разные. Требования о составе интерфейса читают по ресурсам форм — это работает и без исходного текста, но вывод «требование реализовано» подтверждают запуском: описание формы отражает замысел разработчика, а не работающую функцию. Требования о поведении проверяют запуском на стенде: отдельный компьютер с нужной версией Windows, копией базы и рабочим местом программы.

Требования об устройстве программы — «расчёт должен быть вынесен в отдельный модуль» — без исходного текста не проверяются, и эксперт говорит об этом прямо, а не подменяет их наблюдением за поведением. Требования, завязанные на данные заказчика или на обмен с другими системами, выполняют на его площадке по согласованному сценарию.

Если ни один способ не применим, эксперт указывает, какого объекта или условия не хватило, и оставляет вопрос без ответа: это самостоятельный результат, он показывает суду, чего недостаёт. Задачу без привязки к языку закрывает экспертиза соответствия работ техническому заданию.

Отдельная страница: Как проверяют требования задания без исходного кода?
Обязательно ли эксперту работать на нашем сервере?

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

Доступ нужен там, где требование завязано на данные заказчика, на обмен с другой системой предприятия или на оборудование — принтеры этикеток, сканеры, кассовую технику. Тогда проверку выполняют на площадке: по согласованному сценарию и в согласованное время, с записью условий и результата. Работают при этом на копии базы, а не на рабочей: сценарий, выполненный в боевом учёте, создаёт настоящие документы и меняет остатки. Односторонней такая проверка быть не должна — по судебной экспертизе лица, участвующие в деле, вправе присутствовать при её производстве.

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

Отдельная страница: Обязательно ли эксперту работать на нашем сервере?
Что прислать по спору о старой учётной системе?

Три группы материалов, и начинать нужно не с них, а с остановки удаления: журнал событий Windows пишется по кольцу, собственный журнал программы часто обрезается при запуске, а ночная задача каждую ночь стирает старую резервную копию базы. Отключите ротацию журналов и приостановите удаление старых копий сегодня же.

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

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

Отдельная страница: Что прислать по спору о старой учётной системе?
Пароли лежат прямо в настройках — как быть с передачей?

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

А вот привычный совет «после передачи смените пароль к базе» для систем такого возраста разрушителен: пароль зашит в программу, и менять его пришлось бы вместе с новой сборкой, которую при утраченных исходниках делать некому. Наутро в базу не войдёт ни одно рабочее место. Поэтому доступ закрывают снаружи: ограничивают подключение к сетевому порту базы рабочими местами предприятия, убирают её из общедоступного сегмента, отключают удалённый доступ посторонних к серверу.

Меняют только то, что меняется без переделки программы: пароли администраторов сервера, учётные записи Windows, доступ к резервным копиям. И отдельно о том, кому передавать. Всё сказанное относится к внесудебному исследованию по договору. Если экспертиза уже назначена, материалы эксперту напрямую не передают вовсе — они идут через назначивший орган, иначе заключение обесценится целиком. Срок хранения и возврат переданного фиксируют договором.

Отдельная страница: Пароли лежат прямо в настройках — как быть с передачей?
Что делать, если в базе персональные данные клиентов?

Объём определяют по поставленным вопросам, а не по принципу «пусть будет»: если для ответа достаточно структуры таблиц и нескольких записей, полная копия базы не нужна. Лишнее обезличивают там, где это не мешает исследованию, и об этом договариваются до передачи.

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

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

Отдельная страница: Что делать, если в базе персональные данные клиентов?
Какие вопросы ставить, если исходного кода нет?

Главное — не просить прочитать в готовой программе то, что из неё не читается. «Каким алгоритмом программа считает надбавку» — вопрос без ответа, если исходного текста нет. «Какие поля содержит форма расчёта надбавки и к каким таблицам базы она обращается» — вопрос с ответом на том же самом материале.

В вопросе должны быть названы объект и критерий. Объект — конкретный архив с контрольной суммой, конкретный дистрибутив с указанием происхождения или файл базы; критерий — пункт технического задания, требование договора или инструкция. Формулировки вроде «качественно ли выполнены работы» непроверяемы.

Стоит предусмотреть и ответ «на представленных материалах не проверяется»: по Delphi он вероятнее, чем в других языках. При судебной экспертизе окончательный круг вопросов определяет суд; помощь с формулировками возможна до назначения.

Отдельная страница: Какие вопросы ставить, если исходного кода нет?
Что меняется после назначения экспертизы судом?

Меняются три вещи. Материалы перестают поступать напрямую от стороны и идут через назначивший орган. Эксперт предупреждается об уголовной ответственности за заведомо ложное заключение. Прямое общение со стороной прекращается: частных оценок по существу поручения он ей не даёт.

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

Поэтому стадия диктует и выбор формата. До иска берут внесудебное исследование, чтобы понять, есть ли предмет: по Delphi часть вопросов не решается в принципе, и узнать об этом дешевле заранее.

Отдельная страница: Что меняется после назначения экспертизы судом?
Из чего складываются срок и стоимость по старой системе?

Ориентир по судебной экспертизе — от 100 000 ₽ и от 10 рабочих дней; точную сумму и срок называют после бесплатного разбора и закрепляют договором до начала работы. Разброс задают три обстоятельства, и первое — есть ли исходный текст: с ним работа предсказуема, без него она строится на формах, базе и наблюдении, идёт дольше, а часть вопросов остаётся без ответа.

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

Исход «на представленных материалах не проверяется» по Delphi вероятнее, чем в других языках. Это тоже результат работы, он оплачивается наравне с любым другим и показывает суду, какого объекта или условия не хватило.

Отдельная страница: Из чего складываются срок и стоимость по старой системе?
На что смотреть в чужом заключении по системе на Delphi?

Проверяют путь к выводам. Первое — объекты: назван ли конкретный файл с контрольной суммой и сказано ли, что исследовалось — исходный текст, готовая программа или база. Второе — не сравнивал ли эксперт байты собранных файлов: по Delphi сборка не повторяема, и такое сравнение обоснованного вывода не даёт.

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

Сама рецензия заключение не отменяет — она обосновывает ходатайство: о вызове эксперта для пояснений, о дополнительной экспертизе при неполноте, о повторной при сомнении в обоснованности заключения или при противоречиях в выводах. Заранее установленной силы у заключения нет, суд оценивает его наряду с другими доказательствами. Подробнее — на странице рецензии на заключение о процессе разработки.

Отдельная страница: На что смотреть в чужом заключении по системе на Delphi?
Обращение в организацию

Сначала опишите задачу и имеющиеся материалы

Для первого обращения достаточно описания. Небольшой доступный документ можно приложить, если вы вправе передать его через форму; конфиденциальный исходный код и доступы передают согласованным способом. Бесплатно уточним профиль и комплект, не анализируя код.

Описать задачу