From: Kris Leech Date: 2006-06-13T20:27:02+09:00 Subject: Re: ZenObfuscate - for when you really really have to ship a binary Will this work with a Rails app? ----- Original Message ----- From: "Ryan Davis" To: "ruby-talk ML" ; Sent: Tuesday, June 13, 2006 3:56 AM Subject: ANN: ZenObfuscate - for when you really really have to ship a binary > "Being perfectly honest, your obfuscator has made me feel like > writing RubyCocoa apps is a commercially viable business, whereas > before I had my doubts." - Aidan Rogers > > - ZenObfuscate > - What is it? > - For when you really really have to ship a binary. > - Lets you: Write in ruby, and ship a binary. > - ZenObfuscate is a translator for a fairly large subset of > ruby that converts your pure ruby code into a dynamically > loadable binary, protecting your intellectual property(*). > - How does it work? > zenobfuscate has a commandline interface that takes the > specified ruby files and outputs a dynamically loadable > binary (.bundle on osx, .so on unix/linux and .dll or > windows). > - TODO: diagram > - e.g., ./bin/zenobfuscate -o mylibrary lib/blah.rb; ruby > -rmylibrary -e 'use_my_library' > - Built on a solid foundation: RubyInline and ParseTree. Long > standing open source packages for ruby. > - When is it available? > Available nowish on an individual basis > - How much does it cost and what is its licensing? > ZenObfuscate costs $2500 for a site license or is > individually negotiable. ZenObfuscate is a commercial product > produced wholly by Eric Hodel and Ryan Davis and is not for > redistribution. All rights are reserved, etc., etc. Binaries > produced from ZenObfuscate have no restrictions of any kind > (except determined by their authors). > - Requirements > ruby 1.8.x, ruby2c, parse_tree, rubyinline (all available as > gems) > available on darwin ppc, darwin intel, freebsd x86, freebsd > amd/64bit, and linux x86 (with coaxing). > - Known Limitations > There are issues with what the obfuscator can translate to C > and as a result you may need to modify your code in order to > translate it. Usually this is a pretty straightforward and > simple task. We do a good job of translating static ruby to > its equivalent C, but not all ruby has an equivalent in C. > - Only translates methods in classes and modules, not > freestanding code. > - Explicit returns are required in all methods. > - Temporary: Conditional logic (including ?:) may not be on the > right hand side of an assignment. > - Temporaryish: Exception handling and generic block closures > currently don't translate. > - Some expressions in ruby we don't currently do, but could > upon request, where some other ruby expressions will never > translate. > > -- > I know that you believe you understand what you think I said but, > I'm not sure you realize that what you heard is not what I meant. > >