
Reverse Engineering
Commercial Contract
Table of Contents:
Prohibited Acts
Exceptions
- Permitted by Applicable Law
- Interoperability
Reverse Engineering
Among the many common contractual restrictions in a software license limiting a licensee’s ability to use the software (such as a cap on the number of copies that can be made, limited use with other software, limits on distribution via public channels, limited use by third parties, prohibition on removal of proprietary notices, etc.), the prohibition against “reverse engineering” requires special attention. In the context of computer programs, reverse engineering would include activities such as decompiling object code into source code and/or disassembling machine code into a higher-level programming language.
Prohibited Acts
The following exemplars reflect the legitimate interest of the licensor in preventing the licensee from engaging in reverse-engineering activities for the purpose of creating new copies of the software, which would constitute an infringement on the licensor’s proprietary rights:
Exemplar C64-1
You shall not reverse engineer or access the Service in order to (a) build a competitive product or service, (b) build a product using similar ideas, features, functions or graphics of the Service, or (c) copy any ideas, features, functions or graphics of the Service.
Exemplar C64-2
Customer shall not decompile, attempt to derive the source code or underlying ideas or algorithms of any part of the SaaS Products, for the purpose of recreating the SaaS Products or using the SaaS Products for any competitive or benchmark purposes.
Exemplar C64-3
Information obtained through such action may not be used, and may not be given to third parties, for the development, creation or marketing of programs similar to the Software.
The following exemplars are designed to deter the licensee from learning how to support the software independently as a means to deprive the licensee of support and maintenance fees:
Exemplar C64-4
Licensee shall not use anything in the Release package, including Release code, notes, instructions, and materials and other related documentation, to understand the design, logic, structure, functionality, operation and features of the release for the purpose of maintaining, modifying, or supporting in the Release.
Exemplar C64-5
Customer shall not use the Application, and any proprietary information and technical documentation, to maintain or enhance the Application without the aid of Supplier or any other authorized person. Customer shall only use maintenance tools (e.g. test programs and program specifications), proprietary or third-party systems utilities (e.g. compiler and assembler descriptions), and updates and upgrades, if any, owned, developed, and provided by or for Supplier for use and/or support of the Application.
Exceptions
Reverse engineering as an activity per se is generally not illegal, and has historical roots in both common and statutory law as a fair means to develop improved versions of a product or technology. Therefore, as reflected in the following exemplars, any prohibition against reverse-engineering is usually not absolute.
The following exemplar contains a prohibition against reverse-engineering activities that stops short of preventing the licensee from engaging in such activities for the purpose of improving the operation of a licensed product:
Exemplar C64-6
Licensee agrees further that it will not, and it will not encourage or permit any third parties to, modify, alter, amend, fix, translate, enhance, reverse engineer, disassemble, decompile, decode or adapt the Software, or otherwise attempt to derive or gain access to the source code or algorithms of the Software, in whole or in part, other than for temporary and minor modifications to the Software that are made in the course of an application project and for the sole purpose of (i) improving solution efficiency or (ii) resolving an unstable analysis.
Permitted by Applicable Law
The following exemplars acknowledge a general exception to prohibitions against reverse-engineering activities based on applicable law:
Exemplar C64-7
If for some reason these restrictions are prohibited by applicable law or by an agreement that Licensor has with one of its licensors, then the activities are permitted only to the extent required to comply with the law or agreement.
Exemplar C64-8
Except as expressly set forth elsewhere in this License Agreement, you may not, in whole or in part: copy, photocopy, reproduce, translate, reverse engineer (with the exception of specific circumstances where such act is permitted by law), derive source code from, modify, disassemble, decompile, or create derivative works based on the Program; remove any proprietary notices or labels on the Program; or attempt in any manner to circumvent any security measures designed to control access to the Program.
Exemplar C64-9
Customer will not (and will not allow any third party to) reverse engineer, disassemble, decompile, or modify or create derivative works of the Product (except to the extent such restriction is prohibited by applicable law or is allowed by a relevant Third-Party Software License).
Interoperability
Certain laws, including the Digital Millennium Copyright Act (17 U.S.C § 1201), permit a party to reverse engineer a computer program for the purpose of enabling interoperability of an independently developed program with other programs. Interoperability refers to the capability of a program to exchange information with other programs and to use such exchanged information.
The following exemplars require the user to first give the software provider notice of, and an opportunity to cure, any interoperability issues before any reverse-engineering activities can be undertaken on the grounds of interoperability:
Exemplar C64-10
Licensee may not disassemble, reverse compile or reverse engineer the Software or any Data incorporated in the Software or encourage others to do so except as required by law for interoperability purposes, and then only after Licensee has given Supplier an opportunity to provide information or software necessary to resolve such interoperability issues.
Exemplar C64-11
End User shall not disassemble, reverse engineer or decompile, nor otherwise create or attempt to create the source code from the object code of the Software in any manner; unless such action is indispensable in order to obtain information necessary to achieve interoperability of the Software with an independently created computer program and End User has not been provided such information, despite a written request, within a reasonable period of time.
Exemplar C64-12
Customer shall not disassemble, reverse engineer or decompile, nor otherwise create or attempt to create the source code from the object code of the Software or Licensor Materials in any manner, unless such action is indispensable in order to obtain information necessary to achieve interoperability of the Software with an independently created computer program and Customer has not been provided such information, despite a written request, within a reasonable period of time. If Customer wishes to exercise any right to reverse engineer to ensure interoperability in accordance with applicable law, Customer shall first provide written notice to Licensor and permit Licensor, at its option, to make an offer to provide information and assistance reasonably required to ensure interoperability of the Software with other products for a fee to be mutually agreed upon (if any).
Exemplar C64-13
The Licensee must not reverse engineer, decompile, or disassemble the Software, except for cases resulting from legal regulations, or when it is unavoidable for the purposes of acquiring information necessary for the mutual cooperation of an independently created program with this Software, or another program, if such information is not knowingly provided by the Licensor or otherwise available.