From: Ken Bloom Date: 2006-09-28T22:45:12+09:00 Subject: Obfuscation (was Re: Ruby with Qt or GTK ?) On Thu, 28 Sep 2006 03:27:44 -0700, gregarican wrote: > I realize that Ruby 1.8.x code can be at best only obfuscated, not > compiled. So obviously created a closed source product with Ruby would > be out of the question. Even a Ruby 2.0 YARV bytecode-compiled product > could be reverse engineered, as is the case with Python offerings. But > just because something is commercial doesn't _necessarily_ mean that > it's closed source, does it? Ruby can't even be really effectively obfuscated (at least not as effectively as Java), because it depends on things being named the same for duck typing to work. In Java, you can rename any method in the inheritance chain that isn't defined in the parent class, you also get overloading to help with the obfuscation so you start by renaming functions to as many overloads of "a" as possible, then to as many overloads of "b" as possible and so forth. In Ruby, you don't have the naming heuristic, nor do you have the ability to create many overloads of the same function. Even Java bytecode can be decompiled, and I suppose a hypothetical native-compiled Ruby program would have a lot more information in it than a native-compiled Java or C++ program, and you could still do a good job of reverse-engineering a Ruby program. --Ken -- Ken Bloom. PhD candidate. Linguistic Cognition Laboratory. Department of Computer Science. Illinois Institute of Technology. http://www.iit.edu/~kbloom1/ I've added a signing subkey to my GPG key. Please update your keyring.