Wikipedia:Reference desk/Archives/Computing/2013 September 24

= September 24 =

How does closed-source "work"?
The article on proprietary software doesn't seem to explain the actual mechanisms used to keep software closed. Web-searching hasn't helped me either. All that anyone seems interested in is the economic and philosophical questions about open-vs-closed source.

So is there a standard cryptographic protocol, or what? Does some part of the computer have to constantly decrypt input from the software, and if so, does this add to the processing time of anything? Do Windows and Mac do it the same basic way? ± Lenoxus (" *** ") 18:01, 24 September 2013 (UTC)


 * You might start by reading how compilers work. On modern computers, it is common to distribute software in a form that a machine can easily run - as a binary executable program; but in that form, the software is prohibitively difficult for an ordinary human to meaningfully read, modify, or understand.  If you dive into details, it is actually non-trivial to distinguish between "source code" and "machine code."  For example, have a look at the way that the Free Software Foundation defines "source".  Nimur (talk) 18:08, 24 September 2013 (UTC)


 * I think "prohibitively difficult" is a bit strong: the ROM hacking community has created very detailed reconstructions of certain video games, for example. I do agree that the time cost of disassembling and modifying a compiled program is the primary enforcement mechanism for "closed source." OldTimeNESter (talk) 20:10, 26 September 2013 (UTC)


 * Basically it is a combination of (a) copyrighting the source coding in a way that forbids reuse, (b) not making the source code available to the public, and (c) requiring the developers to sign nondisclosure agreements forbidding them from disclosing information about the source code. Looie496 (talk) 18:18, 24 September 2013 (UTC)


 * You might also want to read about code obfuscation. Closed-source code is not necessarily protected in any way beyond what Looie496 has described. It can be decompiled by a determined attacker. Obfuscation makes this more difficult by removing all the human-readable information. Encryption gives a higher level of protection but I think is rarely used in commercial software because of the complexity, and because once it's in the public domain it can be hacked. You would need a secure hardware platform to make it really difficult to crack. --Heron (talk) 08:18, 25 September 2013 (UTC)
 * Code obfuscation refers to obfuscating whatever readable code there is, usually either perl hackers one upping eachother or javascript code trying to disguise what it does. Once code is compiled that's a whole other story, and I don't think most people would ever use the term "obfuscation" to apply to that. Shadowjams (talk) 04:17, 27 September 2013 (UTC)