Reverse engineering is the process of taking something apart in order to understand it, build a copy of it, or improve it. It can be applied to computer hardware or software, but is often used in programming to:
- convert a program code to a higher level design
- convert an application from one vendor's database another's
Manufacturers can provide source code in machine language with compilers/decompilers to:
- convert program statements in source language to machine language.
- reveal a competitor's source code or reveal copyrighted or trade secret information
This is forbidden by software license agreements, but courts have ruled in favor of reverse engineering for interoperability.
Competitive intelligence refers to the collection and analysis of information that will affect a company's competitive advantage. This is a legal part of strategic planning and decision making. It requires continuous gathering, analysis and evaluation of information, but that information must be published and publicly available.
Without safeguards, competitive intelligence can cross the line into industrial espionage:
- using non-published information
- taking illegal action, such as theft, bribery or eavesdropping
Cybersquatting uses famously trademarked information to draw attention to an unrelated website:
- package design
One method to fight cybersquatting is by registering variations of a website domain name in advance.