i'd like to add a question here, since i am dealing with a similar problem:
reverse engineering of java programs is very easy. is there any way
to make it at least as difficult as cracking an .exe (machine code)?
i have seen the most complicated solutions bypassed in the most simple
ways. (removing some "checkExpiration()" method and recompile the class,
etc.).
as for now, i can only imagine solutions which imply giving up platform
independence.
andreas
my favorite one, was the $2,000 , programming/execution mapping software.
almost fully obfusicated.
decompiled , reset "isdemoflag=true" to "isdemoflag=false", then popped the
class back into the jar.
being a dab hand at this sort of stuff, I know what annoys me.
anyway for your 30 day Demo. if you can make a callout to an external machine
in your company.
setup your "demo", give the customer a licence code.
anything will do.
on execution of the "loader" program , open a socket to an external server (
this server can be running a small java app) .
if licence code is good, pass back a small class file , or even a single
string.
this will contain the name of the internal class to execute. ( OR THE main
class file)
pass back to the client, then implement a "classloader" type setup in the
client code.
that should be a bit harder to "HACK", and gives you complete control on the
licences, you just need to allocate 1 or 2 machines as servers.
or if that seems a bit excessive get the program to "call home" say once
every 5 executions, i valid let it run, if not , erase a "jar" file.
steve