Yes, you can analyze what the code does in such a short
pieces of code like this. But will you be able to study
the 500kb of obfuscated perl source of some app written in Perl -
e.g. spamassaassin? Definitely no - it will take a lot of time.
Anyway this is a *real* solution compared to Acme::* stuff that was written mainly for fun.
Re: is it irreversible
Replies are listed 'Best First'.
Won't work - it's terribly time-consuming and difficult since only perl can parse Perl. How do you plan to continue development (say there appeared a need in some new feature) after you've obfuscated you sources? :)
You don't think I'd obfuscate the sources I planned to distributeEdit [ work with ] do you? That'd be nuts. Anyhow, this would happen two ways - most of the time it doesn't matter that only the perl lexer/parser can completely parse perl. If the source is written correctly the first time then its trivial to do the first two of the major obfuscations - symbol renaming and text string encoding. I think that if I were serious about having "obfuscated code" I'd hack up B::Deparse (exempting BEGIN blocks which would have to be done by hand or another method) so that it did all the work for me anyhow which alleviates all the problems you've described.
it's terribly time-consuming and difficult since only perl can parse Perl
cperl-mode comes darn close. I've seen it fooled a
couple of times, but it's very rare. Almost all of
the Obfuscated Perl Competition winners are correctly
syntax-highlighted by cperl-mode, and excepting some
disagreement between it and me about the correct
indentation of lines that start with the catenation
operator (I want subsequent ones to line up, and it
indents each one further than the previous),
automatically indented as well.
cperl-mode, for those who don't know, is written
in lisp, of course, and comes with Emacs.
Uhm well they want 1879$ for that tool. Really funny I guess you won't need more than some hours to write something much more obfuscating.
Just rename all vars back to something more readable like $var_1 etc, and it's pretty readable I think.
Of course it makes it a bit more hard to study the code but it's definitly not even worth 100$.
I guess that depends on whether you put a dollar value on the time it takes to write that - I suppose the 1K-2K price might be reasonable if the perl programmer is somehow braindead and it'd take a long time to write (more than a few hours) or if the programmer has a high value at which point either something obvious and simple will arise or its just worth the money to buy a license.
Just keep in mind through all this that there are other considerations outside of mere price tag.
But will you be able to study the 500kb of obfuscated perl source
Now, I won't, and I wouldn't want to, either. To be frank, the projects I am working on usually have tight budgets and schedules. It would simply cost too much time to wait for some external company to make the necessary changes to their software to suit our needs. Therefore, I rather rely on open-source software (be it free or commercial) with known code quality to make sure I can meet my deadlines.