[Openmcl-devel] CCL images, consumer apps, and piracy

Stas Boukarev stassats at gmail.com
Sat Apr 9 10:50:13 PDT 2011

Brandon Van Every <bvanevery at gmail.com> writes:

> Hi, I'm pretty new to Common Lisp and Clozure CL.  I'm using Windows
> Vista.  I have been reading a lot of materials to try to understand
> how CLL produces standalone apps.
> Let's say I write a commercial app for a consumer audience, such as a
> game.  Aside from a few system .dlls accessed by CFFI, it is written
> entirely in CL.  I save-application with prepend-kernel to create a
> standalone .exe.  What's to stop some hacker from extracting my Lisp
> image from the standalone .exe, loading it with a CCL kernel of their
> choosing, and then using my code in any way they like?  It seems like
> not only could they pirate my game, they could mod it in any way they
> like, and easily distribute their own derivative works.  If there's
> something about the internals of a CCL image that would make this
> difficult, I would be grateful for an explanation.  Or, if it's easy
> by default but can be made difficult, I'd welcome that too.
> I'd rather not get into a big discussion about the merits / demerits
> of worrying about game piracy in the first place.  Recent evidence
> from Stardock's "Sins of a Solar Empire" suggest that up to a certain
> number of sales, piracy is not worth worrying about.
> http://forums.sinsofasolarempire.com/post.aspx?postid=303512  Their
> philosophy is to concentrate on their core paying customers, who are
> not pirates and are annoyed by anti-piracy measures.  However, the
> evidence from other sources is that once one is selling millions of
> copies of a game, piracy is rampant.  There's a smaller market of
> conscientious consumers who just pay for stuff, and a mass market of
> cheapskate consumers who love to get everything for free.  Suffice it
> to say that "I am ambitious," so I keep my eye on such issues.
In CCL, by default, you can retrieve the sources of compiled
functions, e.g.,
(ccl:source-note-text (ccl:function-source-note  #'foo))
=> "source code"

You can circumvent that by setting ccl:*save-source-locations* to NIL.

With best regards, Stas.

More information about the Openmcl-devel mailing list