Re: Can't undate running process binary in Solaris?
- From: Boltar <boltar2003@xxxxxxxxxxx>
- Date: Fri, 06 Jul 2007 01:32:54 -0700
On 5 Jul, 22:14, Eric Sosman <Eric.Sos...@xxxxxxx> wrote:
Frank Cusack wrote On 07/05/07 16:41,:
On Thu, 05 Jul 2007 13:34:23 -0700 Frank Cusack <fcus...@xxxxxxxxxxx> wrote:
On Thu, 05 Jul 2007 03:40:12 -0700 Boltar <boltar2...@xxxxxxxxxxx> wrote:
I'm trying to get a running process to update its own binary but for
some reason under Solaris it doesn't work , the binary remains
unchanged even though no errors are returned from any function. Does
anyone know why this might happen? My test code is below:
...
mptr = (char *)mmap(
NULL,fs.st_size,PROT_READ | PROT_WRITE,MAP_PRIVATE,fd,
^^^^^^^^^^^
Actually, even when you fix that i don't think you'll be able to
update in-place. You will probably get ETXTBUSY or whatever the
error is, if not at mmap() time, than maybe you'll get SEGV or
a bus error when you actually write to memory.
If a program's text is busy (I mean, if a program is running),
Solaris will not let you, e.g., do something like "echo > program".
Or do I have it backwards and it's Linux that doesn't allow this?
Solaris allows the update (I tried it).
How did you get it to work?
I'm not sure what Boltar's goal in self-modifying the
executable is, though. He mentioned this thread in another
having to do with license-enforcement schemes, but I don't
see any way to use self-modification for enforcement (it's
too easy to protect the file against being written, or to
restore an unmodified backup copy). Boltar, what are you
trying to accomplish? Maybe there's an easier way ...
Well I could just use a hidden file or shared memory but they're much
easier for users to fiddle with. Not many people are going to whip out
a disassembler and figure out what the binary does then hack the
assembly code.
B2003
--
Eric.Sos...@xxxxxxx
.
- Follow-Ups:
- Re: Can't undate running process binary in Solaris?
- From: Eric Sosman
- Re: Can't undate running process binary in Solaris?
- References:
- Can't undate running process binary in Solaris?
- From: Boltar
- Re: Can't undate running process binary in Solaris?
- From: Frank Cusack
- Re: Can't undate running process binary in Solaris?
- From: Frank Cusack
- Re: Can't undate running process binary in Solaris?
- From: Eric Sosman
- Can't undate running process binary in Solaris?
- Prev by Date: Re: Setting size limit of data while reading or writing from sockets
- Next by Date: Re: Setting size limit of data while reading or writing from sockets
- Previous by thread: Re: Can't undate running process binary in Solaris?
- Next by thread: Re: Can't undate running process binary in Solaris?
- Index(es):
Relevant Pages
|