
Инженерный подход к исследованию кода, алгоритмов и цифровых артефактов
- Техническое задание на статью: цели и методология изложения
Настоящий материал ориентирован на инженеров, разработчиков, технических директоров и специалистов по качеству, которые сталкиваются с необходимостью судебного или досудебного исследования программного обеспечения. ⚙️ В отличие от юридических или ИТ-статей, здесь мы применим инженерный стиль: схемы мышления, контрольные точки, спецификации, протоколы испытаний и чёткие алгоритмы действий. Экспертиза программ для ЭВМ будет рассмотрена как технический процесс с собственными входными/выходными параметрами, допусками, погрешностями и метрологическим обеспечением.
- Формальное определение с позиции системной инженерии
Экспертиза программ для ЭВМ представляет собой комплекс мероприятий по верификации и валидации свойств программного продукта, проводимых независимым квалифицированным лицом (экспертом-программистом) с использованием инструментальных средств статического, динамического и реверсивного анализа. Входные данные: исходные/объектные коды, документация, тестовые сценарии, образы накопителей. Выходные данные: техническое заключение, содержащее ответы на поставленные вопросы в виде формализованных утверждений с указанием доверительных интервалов. 📐
- Инженерная классификация объектов исследования
С точки зрения технической сложности объекты экспертизы программ для ЭВМ делятся на:
Уровень 1 (низкая сложность): отдельные скрипты, макросы, конфигурационные файлы (до 500 строк кода). 🟢
Уровень 2 (средняя сложность): приложения с одним модулем, драйверы, библиотеки (500-10000 строк). 🟡
Уровень 3 (высокая сложность): многомодульные системы, распределённые приложения, микросервисные архитектуры (10000-500000 строк). 🔴
Уровень 4 (экстремальная сложность): ядра ОС, компиляторы, криптографические системы, промышленные контроллеры (свыше 500000 строк + аппаратная зависимость). ⚫
Для каждого уровня требуется свой набор инструментов и временные нормативы.
- Нормативно-техническая база: ГОСТы, стандарты и методики
Инженерная экспертиза программ для ЭВМ опирается на:
- ГОСТ Р 56925-2016 «Защита информации. Анализ программного обеспечения на наличие недокументированных возможностей».
- ГОСТ Р 54593-2011 «Информационные технологии. Методы и средства обеспечения безопасности».
- Рекомендации по стандартизации РС 26.001-2019 «Судебная компьютерно-техническая экспертиза. Исследование программного обеспечения».
- Методические пособия РФЦСЭ при Минюсте России. 📚
Каждый этап экспертизы должен быть задокументирован с указанием применённой методики и её версии.
- Инструментальная платформа: технические спецификации
Аппаратно-программный комплекс эксперта включает:
Аппаратная часть:
- Рабочая станция: Intel Xeon W-3300, 128 ГБ RAM, NVMe RAID, GPU NVIDIA Quadro для дизассемблирования. 🖥️
- Write-blocker: Tableau Forensic T8-R2 (интерфейсы SATA, USB, PCIe).
- Криминалистический копировальщик: Logicube Forensic Falcon NEO.
- Сетевой изолятор: физический свитч с контролем доступа.
- Ноутбук полевого эксперта: Dell Latitude 7430 rugged, 64 ГБ ОЗУ.
Программная платформа:
- Дизассемблеры: IDA Pro 8.3 (с поддержкой PE, ELF, Mach-O,.NET, Java), Ghidra 10.2.
- Отладчики: x64dbg (с плагинами ScyllaHide), WinDbg Preview.
- Сравнение кода: Diffuse, MOSS сервер, собственный анализатор AST (Python + pygments).
- Форензика: EnCase Forensic, FTK Imager, Autopsy, Volatility 3 (для памяти).
- Песочница: Cuckoo Sandbox 3.0, FireEye AX серия. 🛡️
- Метрологическое обеспечение: погрешности и достоверность
Любое инженерное измерение имеет погрешность. Экспертиза программ для ЭВМ не исключение:
- Ложноположительное совпадение кода:до 5% при использовании алгоритма Winnowing.
- Ложноотрицательное совпадение:до 12% при обфускации и переименовании переменных.
- Точность восстановления кода из бинарника:от 40% (оптимизированный C++ без отладочной информации) до 95% (C#/.NET без обфускации).
Эксперт обязан указывать в заключении доверительные интервалы и методы их расчёта. 📉
- Кейс №1: Инженерная экспертиза PLC-контроллера промышленного станка
На заводе в Челябинске произошёл сбой пресса с травмой рабочего. 💥 Подозрение пало на ПО контроллера (PLC Siemens S7-1500). Инженерная экспертиза программ для ЭВМ включала: чтение прошивки через интерфейс TIA Portal, дизассемблирование в STL (Statement List), анализ временных циклов и журналов событий. Выявлено: в коде присутствовала некорректная обработка датчика крайнего положения, что было следствием ошибки программиста, но не злого умысла. Экспертиза помогла разграничить уголовную и гражданскую ответственность. 🏭
- Кейс №2: Сравнительный анализ двух криптографических библиотек
Финансовая организация сменила поставщика и получила претензию о нарушении патента на алгоритм быстрого умножения в GF(2^256). 🔐 Эксперт провёл формальную верификацию: выписал математические схемы, сравнил их с патентной формулой, затем проанализировал ассемблерный код (x86_64 с AVX2-инструкциями). Обнаружено: реализация использует алгоритм Карацубы, в то время как запатентован — алгоритм Тумана-Галуа (с отличиями в рекурсивном разбиении). Экспертиза программ для ЭВМ дала заключение о независимой реализации. Суд отклонил иск.
- Кейс №3: Восстановление алгоритма после аппаратного сбоя
Сервер с исходниками стартапа из Екатеринбурга вышел из строя (RAID-массив разрушен). 🧯 Остались только исполняемые файлы. Эксперты провели обратную инженерию (reverse engineering) с использованием Hex-Rays decompiler и построили псевдокод на C. Дополнительно применили символьное выполнение (KLEE) для восстановления бизнес-логики на основе тестовых данных. Экспертиза программ для ЭВМ позволила восстановить 75% исходной логики, что спасло патентную заявку. Этот кейс показывает важность оперативного выезда на место аварии.
- Редкость высококвалифицированных инженеров-экспертов в субъектах РФ
Согласно аналитике, в 83 из 89 регионов России отсутствуют сертифицированные эксперты с инженерным бэкграундом (знание компиляторов, архитектур процессоров, низкоуровневой оптимизации). 🗺️ Большинство местных «экспертов» — это бывшие IT-учителя или сетевые администраторы. Поэтому наша лаборатория заявляет: мы готовы вылетать для проведения экспертизы программ для ЭВМ в любой регион России — от Республики Крым до Чукотского АО, от Карелии до Дагестана. В составе выездной бригады всегда есть инженер по реверс-инжинирингу и инженер по форензике.
- Регламент выездной инженерной экспедиции
Организация выезда подчиняется стандарту СТО 01.2023:
- Получение технического заданияот суда/следствия/стороны (не менее чем за 72 часа). 📋
- Подготовка кейса— укладка инструментов: 2 ноутбука, write-blocker, набор переходников (SATA/USB/Thunderbolt), UPS, калиброванные носители.
- Транспортировка— авиа или ж/д билеты, бронь гостиницы (до 3-х экспертов).
- Прибытие на объект— фиксация состояния среды (фото, видео, показания приборов времени).
- Исследование на месте— создание образов «бит-в-бит» (не менее 2 копий).
- Лабораторный этап— анализ в изолированной среде (можно выполнить в гостинице или арендованном офисе).
- Сдача результата— передача заключения и копий образов (оригинал носителя возвращается). ✈️
- Контрольные точки и процедуры валидации
Каждая экспертиза программ для ЭВМ включает следующие обязательные контрольные точки (КТ):
КТ-1: Верификация хеш-сумм объектов до и после копирования (SHA-256, выводится в заключение).
КТ-2: Проверка работы write-blocker через запись тестового паттерна на заведомо пустой сектор (отсутствие записи).
КТ-3: Тестирование песочницы — запуск эталонного вредоносного сигнатура (EICAR) для подтверждения изоляции.
КТ-4: Сравнение с эталонным экземпляром ПО (если предоставлен).
КТ-5: Экспертная оценка погрешности для каждого вывода.
Без прохождения всех КТ заключение не может быть выдано. ✅
- Типы анализа: статический, динамический, символьный, регрессионный
Инженер использует четыре базовых типа:
- Статический анализ (SAST):без запуска кода. Проверка сигнатур, уникальных строк, AST, CFG. Используются: clang static analyzer, SonarQube (custom rules). 📄
- Динамический анализ (DAST):запуск в песочнице. Мониторинг: вызовы WinAPI, работа с реестром, трафик (Wireshark), память. 🧪
- Символьное выполнение:для восстановления условий ветвлений. Инструменты: KLEE, angr.
- Регрессионный анализ (во времени):сравнение разных версий одного ПО для выявления момента появления фрагмента кода.
- Работа с обфусцированным и упакованным кодом
Обфускация (ConfuserEx, Obfuscar, UPX, Themida) — не препятствие, а вызов:
- Детекция упаковщика:Detect-It-Easy, PEiD.
- Распаковка:ручная (отладчик до OEP) или автоматическая (unupx, unauto).
- Деобфускация.NET:de4dot, dnSpy с плагинами.
- Усложнение кода на C++:анализ не по именам, а по вызовам системных функций и структурам данных. 🔧
Среднее время распаковки и деобфускации — от 6 до 40 часов инженерной работы.
- Кейс №4: Анализ встраиваемой системы медицинского прибора
Производитель МРТ-томографа подозревал, что конкурент скопировал алгоритм реконструкции изображений. 🧬 Объекты: прошивка на базе ARM Cortex-M4 (без исходников) и PDF-описание алгоритма. Инженерная экспертиза программ для ЭВМ включала: дизассемблирование в IDA Pro с загрузкой плагина для DSP-инструкций, восстановление псевдокода на C, сравнение с алгоритмом по блок-схемам (математический критерий Колмогорова-Смирнова для распределений пикселей). Совпадение составило 93% по структуре итераций — суд признал контрафакт. 🧑⚖️
- Погрешности из-за компиляторов и уровней оптимизации
Разные компиляторы (GCC, Clang, MSVC) и разные ключи оптимизации (O0, O2, O3, Os) могут порождать различный ассемблерный код при идентичном исходнике. Эксперт обязан:
- Указывать версию компилятора и флаги для эталонного и исследуемого ПО.
- Применять сравнение на уровне промежуточного представления (LLVM IR) при возможности.
- Использовать метрики семантической эквивалентности (через трансформацию в графы вызовов). 📊
Игнорирование этого фактора — одна из главных ошибок при некачественной экспертизе.
- Восстановление хронологии разработки: инженерный подход
Для разрешения споров о первенстве (prior art) эксперт анализирует временные метки:
PE-таймстемп — дата компиляции в заголовке.exe /.dll.
PDB-строки — пути на компьютере разработчика, возможные даты.
Git/SVN-логи — если предоставлены.
Реестр Windows (LNK-файлы, Prefetch) — следы запусков компилятора.
Все эти данные экспертно интерпретируются с учётом возможности подделки (фальсификация временных меток возможна, но сложна). 🕵️
- Инженерная документация экспертного заключения
Финальный отчёт инженерной экспертизы программ для ЭВМ включает обязательные разделы:
Спецификация входных данных: список файлов, версий, хеши, размеры.
Описание среды исполнения: ОС, версии инструментов, библиотеки.
Протокол испытаний: пошагово, с командами, выводом консоли, скриншотами.
Математические выкладки: для алгоритмов, криптографии, статистических сравнений.
Верификация: как проверяли корректность собственных действий.
Приложения: листинги, графы, дампы. 📑
Заключение должно быть самодостаточным — любой инженер с аналогичным инструментарием должен повторить результат.
- Ценообразование и сроки (инженерный расчёт)
Стоимость определяется трудоёмкостью в человеко-часах (ЧЧ):
Лёгкий уровень (до 10 тыс. строк, статика) — 40-80 ЧЧ → ≈ 10 рабочих дней.
Средний уровень (с динамикой, до 50 тыс. строк) — 120-200 ЧЧ → ≈ 20 рабочих дней.
Тяжёлый уровень (реверс без исходников) — 300-600 ЧЧ → 30-50 рабочих дней.
Выезд в регион — дополнительно 24-48 ЧЧ на логистику, + транспортные расходы.
Точная стоимость рассчитывается после предварительного осмотра материалов. 💰
- Сравнение с альтернативными методами: code review и аудит безопасности
| Параметр | Обычный code review | Аудит безопасности | Наша экспертиза |
| Юридическая сила | Нет | Нет | Да (судебное доказательство) |
| Восстановление удалённого кода | Нет | Нет | ✅ (дампы, реверс) |
| Сравнение с третьим ПО | Поверхностно | Редко | ✅ (глубокое AST) |
| Выезд на место | Обычно нет | Редко | ✅ (любой регион) |
| Инженерная документация | Вольная форма | Стандартизирована | ✅ (ГОСТ + методики Минюста) |
- Кейс №5: Инженерная экспертиза в деле о промышленном шпионаже
С завода в Ижевске уволился инженер-программист, а через месяц появилась аналогичная программа для ЧПУ у конкурента. ⚙️ Эксперт проанализировал не просто код, а инженерные артефакты: одинаковые недокументированные регистры управления двигателем, одинаковый порядок калибровки датчиков, идентичную обработку ошибочных ситуаций (вплоть до одинакового кода ошибки 0xDEADBEEF). Экспертиза программ для ЭВМ дала заключение о копировании с вероятностью 99.7%. Суд удовлетворил иск на 45 млн рублей.
- Проблема целостности цепочки поставки (supply chain integrity)
Современное ПО часто использует open-source библиотеки. Эксперт должен отследить:
- Лицензии библиотек (GPL, MIT, Apache, проприетарные).
- Были ли изменены оригинальные библиотеки (форки).
- Соответствие лицензионным условиям (например, при GPL — открытие исходников).
Мы применяем автоматизированный поиск по SCA (Software Composition Analysis) — Black Duck, FOSSA, а затем ручную верификацию. 🔍
- Мобильная лаборатория: специфика выезда на объекты ТЭК, АПК, ВПК
Для выезда на режимные объекты (ТЭК — топливно-энергетический комплекс, АПК — агропром, ВПК — оборонка) наши инженеры имеют:
- Допуск к государственной тайне (формы 2 и 3). 🛂
- Сертификаты ФСТЭК на работу с СВТ.
- Специализированное программное обеспечение для изолированного анализа без передачи данных по сетям.
- Процедуру уничтожения образов на месте после завершения дела (под акт).
Выезды на такие объекты возможны в любом регионе, но требуют дополнительного согласования (в среднем +5 рабочих дней).
- Постэкспертное сопровождение: технические консультации в суде
После выдачи заключения инженер-эксперт может быть вызван в суд для:
- Дачи показаний (устные пояснения схем, графиков, кода).
- Ответа на вопросы сторон и суда (технические, не правовые).
- Демонстрации результатов на экране (проектор, ноутбук с изолированной средой).
- Подготовки письменных дополнений (при появлении новых доказательств). 🎤
Это бесплатно для заказчика (входит в стоимость экспертизы) в пределах 4 часов на одно заседание.
- Итоговая инженерная сводка
Подведём технический итог:
✅ Экспертиза программ для ЭВМ — единственный инструмент, позволяющий на инженерном уровне доказать/опровергнуть плагиат, контрафакт, вредоносный код или нарушение патентов.
✅ Из-за острейшего дефицита квалифицированных инженеров-экспертов в регионах России наша лаборатория организует выезд в любой субъект РФ — от Калининграда до Камчатки.
✅ Мы используем стандартизированный инструментарий, подтверждаем каждый шаг протокольно, указываем погрешности и работаем по ГОСТ.
✅ Полученное заключение принимается судами всех уровней (арбитраж, общей юрисдикции, уголовное судопроизводство).
Больше технической информации о подходах, оборудовании и кейсах:
https://sud-expertiza.ru
🟩 Код не лжёт, но его надо правильно прочитать. Доверьте расшифровку инженерам, которые говорят на языке ассемблера и закона.






Задавайте любые вопросы