Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Jan 2008 18:55:27 -0500
From:      Mike Meyer <mwm-keyword-freebsdhackers2.e313df@mired.org>
To:        freebsd-hackers@freebsd.org
Subject:   Re: a new syscalls table
Message-ID:  <20080125185527.639f62b1@bhuda.mired.org>
In-Reply-To: <86068e730801251451n650b7abcyf3d008fddec2c33f@mail.gmail.com>
References:  <86068e730801251451n650b7abcyf3d008fddec2c33f@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 25 Jan 2008 14:51:44 -0800 "Jerry Toung" <jrytoung@gmail.com> wrote:

> Hello list,
> I am trying to create an environment where you can't run my binaries on your
> box and I can't run
> your binaries on my system (x86 platform).
> For that, I have modified the system calls table (i.e everything is offset
> by 5).
[...]
> When it comes back, it panics in kern/kern_exit.c with
> "Going nowhere without my init!"
> 
> How can I make this work?

Treat it like a cross-platform build, and install to a different
partition on your disk, then boot that partition.

> Is my initial objective even possible?
> I think the correct approach would be to have a cpu that no else in the
> world has,
> any in between solution.?

Depends on what you mean by "correct approach". Basically, it's a
security issue. So you almost certainly can't make it mathematically
impossible, but you can raise the cost of people running your binaries
on their box - and vice versa - pretty much as high as you want,
providing you're willing to pay for it. I'm not sure how well fabbing
custom silicon would work; it's certainly at the high end of the cost
scale, but it can be reverse engineered, and then your custom CPU
could be emulated in software for a lot less than it cost you to
design the silicon. Of course, you could take that approach yourself
to save money.

On the other hand, once you realize that it's a security issue, you
can start using security tools for this.  For instance, the NetBSD
executable verification feature does half the job - it won't run their
executables on your system. By tweaking it a bit - encrypting as well
as signing, for instance - you'd do both halves, with better
performance than emulating a new CPU, and a lot less work. Personally,
I think that'd also be more useful to the rest of the community than
an offset syscall table as well.

    <mike
-- 
Mike Meyer <mwm@mired.org>		http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080125185527.639f62b1>