Юридически основы реверс-инжиниринга закреплены в статье 1280 Гражданского кодекса России, коротко:

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

Способы исследования не обозначены.

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

Способы исследования не обозначены.

Пункт 3 – пользователь вправе декомпилировать ПО, если это необходимо для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой.

Способ – декомпиляция.

После прочтения сразу возникли вопросы: (1) если в пункте 3 указан конкретный способ (декомпиляция) означает ли это, что первые два пункта статьи не позволяют декомпилировать ПО легально; (2) если это так, то как без декомпиляции «исправить ошибки и понять идеи и принципы, лежащие в основе ПО»; (3) если в пункте третьем подразумевается исключительно переработка ПО и именно поэтому предоставлено право декомпилировать, то получается в первых двух пунктах у нас лишь исследование без права переработки (тот же вопрос: как тогда «исправить ошибки»).

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

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

В пользовательских соглашениях часто правообладатели дают перечень запрещенных способов работы с ПО, среди которых в дополнение декомпиляции, можно встретить декодирование, эмуляцию и т.п. Но можно ли с помощью таких способов осуществить все то, что описано в п. 1 и 2 (без декомпиляции) – сомнительно. И как я понимаю, декомпиляция, в любом случае, способ наиболее распространенный.

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

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

Комментарии (7)


  1. dreesh
    01.09.2021 20:16

    Под устройством пользователя можно понимать JWM? Например виртуальная машина java в облаке или интерпретатор python? Если мы пытаемся запустить программу в среде которую не поддерживают инструментальные средства разработчиков то имеем ли мы право произвести трансляцию бинарных кодов одной машины в бинарные коды другой?


    1. Vinchkovskiy Автор
      03.09.2021 17:19

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

      В Постановлении Пленума Верховного Суда РФ N 5, Пленума ВАС РФ N 29 от 26.03.2009 указывалось: "адаптация, представляющая собой внесение изменений, осуществляемых исключительно в целях функционирования программы для ЭВМ или базы данных на конкретных технических средствах пользователя или под управлением конкретных программ пользователя". Это постановление утратило силу, но данное толкование вполне применимо в конкретном споре.

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

      И если кто-то делает реверс не в личных целях, а с заведомо противоправными целями и дальнейшим распространением и коммерциализацией результатов - то 100% нарушение. Можно посмотреть дела по прошитым игровым консолям, модификация позволяла ставить нелицензионные игры (практика есть и в штатах, и у нас).

      Как-то так) Если я правильно понял вопрос)


      1. dreesh
        03.09.2021 18:23

        Ну например я купил себе планшет для рисования, но драйвер у них оказался только под винду и реверс последнего позволил мне использовать его даже на андроиде. Реверсом был просто прогон драйвера через objdump+DSL (haskell)+патч DSL. Если научить DSL интерпретировать бинарный код то и objdump не нужен. Вот это как назвать? Реверс?


        1. Vinchkovskiy Автор
          06.09.2021 13:02

          Да, это реверс, но не значит, что в вашем случае он законен. Смотря, что написано в пользовательском соглашении.

          Плюс в п. 4 ст. 1280 написана фраза "применение положений, предусмотренных настоящей статьей, не должно противоречить обычному использованию программы для ЭВМ" - вот это "обычное использование" может означать в споре запрет на адаптацию ПО под конкретную операционную систему.

          Если нужен более точный ответ, можете мне скинуть ссылку на пользовательское соглашение на ПО, которое интересует


  1. vilgeforce
    01.09.2021 21:15

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


    1. Radisto
      02.09.2021 09:57
      +2

      Ваш друг мудро не говорит об этом своими устами. Один мой знакомый тоже иногда так делал


    1. Vinchkovskiy Автор
      02.09.2021 13:29
      -1

      А в чем посыл вашего комментария? Что проблему обсуждать не нужно? Так можно сказать о чем угодно - один мой друг взятки берет по 20 лет к ряду и...

      Тем более, статья не про ответственность за незаконную переработку, а наоборот, что реверс-инжиниринг законен, но требует соблюдения ряда условий (и частный вопрос - его способы).