From: a on
Is there a reliable way for me to tell if my app is running sandboxed (such
as with Sandboxie) or in a virtual environment (such as VirtualBox)? Reason
being is that if I code my app with a 30-day trial, the user can just run
it sandboxed and then delete the sandbox after every run, basically letting
them run it forever. :(


From: Dee Earley on
On 01/07/2010 15:43, a wrote:
> Is there a reliable way for me to tell if my app is running sandboxed (such
> as with Sandboxie) or in a virtual environment (such as VirtualBox)? Reason
> being is that if I code my app with a 30-day trial, the user can just run
> it sandboxed and then delete the sandbox after every run, basically letting
> them run it forever. :(

It wouldn't be doing a very good job if you could detect it...
http://blogs.msdn.com/b/oldnewthing/archive/2010/05/19/10013611.aspx

--
Dee Earley (dee.earley(a)icode.co.uk)
i-Catcher Development Team

iCode Systems

(Replies direct to my email address will be ignored.
Please reply to the group.)
From: David Schwartz on
On Jul 1, 7:43 am, "a" <b...(a)invalid.com> wrote:

> Is there a reliable way for me to tell if my app is running sandboxed (such
> as with Sandboxie) or in a virtual environment (such as VirtualBox)? Reason
> being is that if I code my app with a 30-day trial, the user can just run
> it sandboxed and then delete the sandbox after every run, basically letting
> them run it forever. :(

Is it the *user* or the *system* that's supposed to get a 30-day
trial? If it's the system, then they should be allowed to run it
forever -- it's a new system each time. If it's the user, then you're
asking the wrong question. Your question should be "is there a
reliable way for me to tell *who* is using my application?"

Think long and hard about what you actually want to know. Then ask. :)

DS
From: a on
"Dee Earley" <dee.earley(a)icode.co.uk> wrote in message news:i0icaj$f9k$1(a)speranza.aioe.org...
> On 01/07/2010 15:43, a wrote:
>> Is there a reliable way for me to tell if my app is running sandboxed (such
>> as with Sandboxie) or in a virtual environment (such as VirtualBox)? Reason
>> being is that if I code my app with a 30-day trial, the user can just run
>> it sandboxed and then delete the sandbox after every run, basically letting
>> them run it forever. :(
>
> It wouldn't be doing a very good job if you could detect it...
> http://blogs.msdn.com/b/oldnewthing/archive/2010/05/19/10013611.aspx

True, but the thread here seems to be able to detect most VMs with success:

http://www.purebasic.fr/english/viewtopic.php?f=13&t=34086

So I was wondering if the code there would be good enough?


From: Leo Davidson on
> Is there a reliable way for me to tell if my app is running sandboxed (such
> as with Sandboxie) or in a virtual environment (such as VirtualBox)? Reason
> being is that if I code my app with a 30-day trial, the user can just run
> it sandboxed and then delete the sandbox after every run, basically letting
> them run it forever. :(

What are you going to do if you detect a virtual machine? Not allow
the program to run at all? Reduce the evaluation period?

Be careful you don't prevent legitimate users from evaluating your
software in a VM. I'll often install first in a VM to avoid the risk
of something untested messing up my real machine. If it works well
then I'll move it to the real one. I'd probably dismiss anything that
couldn't be evaluated in a VM at all. A reduced eval period might be
fine for someone like me but there are also people -- especially some
corporations -- who run *everything* in a VM.

There are some crazy people who will rebuild their real (non-virtual)
Windows install every month to reset all the eval periods on their
software. I think it's best just to ignore them along with people
using VMs to bypass protection. If they're willing to go to such
lengths and add so much hassle to their computer use -- constantly
reinstalling software or even the OS -- then it seems unlikely you'll
ever convert them into paying customers. Some people are
pathologically against buying software and apparently put zero
monetary value on their own time.

I'm not saying that some protection isn't worthwhile; I'm just saying
there are legitimate reasons to evaluate software in a VM and I don't
see any real upside in preventing people from doing so. There's
probably a better way of tracking evaluation periods (e.g. requiring
users to register for an eval licence, though they could still create
a new email address every time; maybe tie it to the Windows product
code, but that can be changed too) without making the software care
which kind of environment it is run in.