Самое главное
|
Определение
|
Комплексное исследование ПО для оценки функциональности, качества и соответствия требованиям
|
|
Применение
|
Судебные разбирательства, защита авторских прав, выявление мошенничества, урегулирование споров с разработчиками
|
|
Стоимость
|
От 50 000 рублей в зависимости от сложности задачи
|
|
Юридическая сила
|
Результаты экспертизы — допустимое доказательство в суде
|
Привет всем! Это Соколов Артем из АНО ЭКЦ «Судтехэксперт». Сегодня расскажу об экспертизе компьютерных программ так, чтоб даже ваша бабушка поняла. Ну или почти поняла.
Что такое экспертиза компьютерных программ?
Представьте, что вы купили машину, а она не заводится. Вы ведете её к автомеханику, чтобы он выяснил, что не так. Экспертиза программ — это примерно то же самое, только вместо машины — программа, а вместо механика — эксперт вроде меня.
Экспертиза компьютерных программ — это комплексное исследование софта, которое помогает определить, правильно ли он работает, нет ли в нем скрытых функций или уязвимостей, и соответствует ли он заявленным требованиям.
За 10 лет работы я провёл больше 300 экспертиз, и ни разу не видел двух одинаковых случаев. Каждая программа уникальна, как отпечаток пальца, и требует индивидуального подхода.
Виды экспертизы компьютерных программ
Не все экспертизы одинаковы. В зависимости от того, что именно нужно исследовать, мы выбираем разные подходы:
|
Вид экспертизы
|
Что исследуется
|
Когда применяется
|
|
Аппаратно-компьютерная
|
Компьютеры, серверы, телефоны
|
Если проблема может быть связана с железом, на котором работает программа
|
|
Программно-компьютерная
|
ОС, приложения, утилиты
|
Чаще всего — для анализа кода и функциональности программ
|
|
Информационно-компьютерная
|
Данные, следы работы программ
|
Когда нужно понять, что происходило с данными
|
|
Компьютерно-сетевая
|
Сетевая активность
|
При расследовании сетевых атак или изучении сетевых программ
|
|
Нормативно-техническая
|
Документация, ТЗ, договоры
|
Для проверки соответствия программы документации
|
Часто приходится комбинировать разные виды. Недавно разбирался с делом, где заказчик отказывался платить разработчику за CRM-систему — пришлось проводить и программно-компьютерную экспертизу (анализировать код), и нормативно-техническую (сравнивать с ТЗ). Оказалось, разработчик выполнил только 70% требований, но хотел получить 100% оплаты. Суд в итоге постановил выплатить только часть суммы.
Как проводится экспертиза программ?
Процесс экспертизы похож на расследование. Мы собираем улики, анализируем их и делаем выводы. Вот как это происходит:
1. Подготовительный этап
На этом этапе мы определяем, что именно будем исследовать и какие вопросы нужно решить:
-
Формулируем задачи — Определяем, что именно заказчик хочет узнать. "Работает ли программа правильно?" "Украден ли код?" "Есть ли скрытые функции?"
-
Собираем материалы — Получаем исходный код (если доступен), техническую документацию, ТЗ и другие документы.
-
Заключаем договор — Оформляем все формальности, включая сроки и стоимость.
Помню случай, когда клиент принёс только исполняемый файл и хотел, чтобы мы определили, украден ли код. Пришлось объяснять, что без исходников это как искать чёрную кошку в тёмной комнате. Хотя в некоторых случаях даже это возможно!
2. Исследование
Это самая интересная и сложная часть. Тут мы "раскапываем" программу вдоль и поперёк:
-
Анализируем код — Если есть исходники, изучаем их структуру, логику работы, ищем ошибки или заимствования.
-
Тестируем функциональность — Проверяем, как программа работает в различных сценариях.
-
Проверяем безопасность — Ищем уязвимости, которые могут быть использованы для взлома.
-
Проводим реверс-инжиниринг — Если исходников нет, пытаемся "разобрать" программу, чтобы понять, как она работает.
У нас в арсенале куча специализированных инструментов: статические анализаторы кода, дебаггеры, дизассемблеры, сетевые мониторы. Но главный инструмент — мозг эксперта и его опыт.
3. Анализ и оценка
После сбора данных мы их анализируем:
-
Обрабатываем результаты — Сводим воедино всё, что обнаружили.
-
Формулируем выводы — Отвечаем на поставленные вопросы чётко и обоснованно.
Самое сложное тут — объяснить технические нюансы нетехническим языком. Приходится быть ещё и переводчиком с компьютерного на человеческий.
4. Документирование
Финальный этап — составление заключения эксперта. Этот документ может использоваться в суде, поэтому к нему особые требования:
-
Полное описание проведенного исследования
-
Выявленные факты
-
Ответы на вопросы
-
Доказательства в виде скриншотов, листингов кода и т.д.
Однажды мне пришлось подготовить заключение объемом 300 страниц — программа была настолько сложная, что меньшим объёмом было просто не обойтись.
Кто может проводить экспертизу ПО?
Если подумать, почти каждый программист скажет: "Я могу оценить код!" Но между программистом и экспертом такая же разница, как между любителем-фотографом и криминалистом.
Для проведения экспертизы ПО эксперт должен обладать:
-
Глубокими знаниями в программировании — Понимание разных языков, алгоритмов, структур данных.
-
Знаниями в области компьютерных систем — Эксперт должен понимать, как работают операционные системы, сети, базы данных.
-
Аналитическими навыками — Умение находить закономерности и аномалии.
-
Специальным образованием — Например, я окончил МГТУ им. Баумана по специальности "Судебная экспертиза".
-
Постоянным обучением — Технологии меняются каждый день, и эксперт должен быть в курсе последних трендов.
Я регулярно прохожу сертификацию и курсы повышения квалификации. Последний был по исследованию радиоэлектронных устройств — это помогает мне лучше понимать взаимодействие ПО с железом.
Примеры из практики: когда нужна экспертиза ПО
За годы работы я сталкивался с самыми разными случаями. Вот несколько типичных ситуаций:
Плагиат и нарушение авторских прав
Самый распространённый случай — когда одна компания обвиняет другую в краже кода. Недавно анализировал две программы для учёта товаров в магазине. Оказалось, в одной из них было 60% кода, скопированного из другой, даже комментарии остались те же! Плагиат был очевиден.
Недобросовестная разработка
Часто приходится решать споры между заказчиками и разработчиками. Заказчик говорит: "Программа не работает как надо!", а разработчик отвечает: "Всё сделано по ТЗ!"
Помню случай с системой автоматизации склада. Программа вроде бы соответствовала ТЗ, но при нагрузке в более 100 пользователей "падала". В ТЗ не было явно указано количество одновременных пользователей, но была фраза "программа должна обеспечивать стабильную работу предприятия", а на предприятии было 150 сотрудников. Суд встал на сторону заказчика.
Мошенничество через ПО
Интересный случай был с бухгалтерской программой. В ней обнаружилась недокументированная функция, которая позволяла "терять" часть транзакций при отправке данных в налоговую. Заказчик утверждал, что не знал о ней, а разработчик говорил, что это была "фича по запросу". Экспертиза помогла доказать, что функция была добавлена намеренно и скрыта от обычных пользователей.
Неработающее ПО и возврат денег
Клиент купил дорогое ПО для управления производством за 2 миллиона рублей, но оно не заработало на его оборудовании. Продавец отказался возвращать деньги, утверждая, что проблема в оборудовании клиента. Экспертиза показала, что ПО содержит критические ошибки и не может работать на указанном в документации оборудовании. Клиент вернул деньги.
Сколько стоит экспертиза и от чего зависит цена?
"Сколько стоит?" — второй по популярности вопрос после "Как долго это займёт?". Ответ как всегда — зависит.
Стоимость экспертизы в нашей компании начинается от 50 000 рублей. На цену влияют:
-
Сложность программы — Чем сложнее программа, тем больше времени нужно на анализ.
-
Объём материалов — Иногда приходится анализировать миллионы строк кода.
-
Тип экспертизы — Некоторые виды требуют использования дорогостоящего оборудования и ПО.
-
Срочность — "Надо было вчера" всегда стоит дороже.
Однажды к нам обратился клиент с просьбой срочно проанализировать ERP-систему — счёт вышел на 180 000 рублей. Но эта сумма позволила ему выиграть суд и получить компенсацию в 5 миллионов. Неплохая инвестиция, да?
Как использовать результаты экспертизы в суде?
Многие думают, что достаточно получить заключение эксперта, и дело в шляпе. Но это не совсем так.
Заключение эксперта — это важное, но не "волшебное" доказательство. Вот несколько советов, как эффективно использовать его в суде:
-
Убедитесь, что экспертиза проведена правильно — Она должна отвечать на поставленные вопросы и быть методологически верной.
-
Подготовьтесь объяснить суть техническим языком — Судья может не разбираться в программировании, поэтому важно уметь объяснить сложные вещи простыми словами.
-
Будьте готовы к встречной экспертизе — Противоположная сторона может представить свою экспертизу с другими выводами.
-
Пригласите эксперта в суд — Иногда суд может вызвать эксперта для дачи пояснений.
Я часто выступаю в судах и заметил, что судьи всё лучше разбираются в IT. Если пять лет назад приходилось объяснять, что такое исходный код, то сейчас многие судьи уже неплохо ориентируются в базовых понятиях.
Сложности и подводные камни экспертизы ПО
Экспертиза программ — процесс не без сложностей. Вот с чем приходится сталкиваться:
Технические сложности:
-
Запутанный код — Некоторые разработчики специально усложняют код, чтобы его было труднее анализировать.
-
Отсутствие исходников — Иногда приходится работать только с скомпилированной программой.
-
Огромный объём — Современные программы могут содержать миллионы строк кода.
-
Защита от анализа — Некоторые программы имеют защиту, которая мешает их исследованию.
Организационные проблемы:
-
Недостаток документации — Часто техническая документация неполная или отсутствует.
-
Сжатые сроки — "Нам нужен результат к завтрашнему заседанию суда!"
-
Непонимание заказчиком процесса — "Почему так долго? Просто посмотрите, работает или нет!"
Однажды мне пришлось анализировать программу без исходного кода, с защитой от отладки и с "самоуничтожением" при попытке реверс-инжиниринга. Всё-таки удалось "разобрать" её, но это заняло в три раза больше времени, чем обычно.
Заключение
Экспертиза компьютерных программ — это гораздо больше, чем просто "проверить, работает ли программа". Это комплексное исследование, которое может решить сложные технические и юридические вопросы.
За 10 лет работы в этой области я убедился, что качественная экспертиза может сэкономить клиентам миллионы рублей и месяцы судебных разбирательств. Но самое главное — она помогает установить истину и защитить права тех, кто создаёт или использует программное обеспечение.
Если у вас возникли вопросы по экспертизе ПО или вам нужна консультация — обращайтесь в АНО ЭКЦ «Судтехэксперт». Мы всегда рады помочь!