Re: Can't undate running process binary in Solaris?



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


.



Relevant Pages

  • Re: SUMMARY: Re: Solaris10 resource control - max-shm-memory
    ... Solaris 10 to achieve the same results as Solaris 8 and 9. ... Enable large shared memory objects for DB ... It is for combined usage. ... the oracle init.ora for the instance. ...
    (SunManagers)
  • Solaris 10, Oracle 10G, Shared Memory Segments
    ... shm-max-memory (Solaris 10). ... our Oracle 10G databases were grabbing just 1 large shared memory ... segment for the database. ...
    (SunManagers)
  • UPDATE: Shared memory changes taking effect modify /etc/system - no effect
    ... We reinstalled Solaris and were able to set the desired SHMMAX values ... > I am having a severe issue with shared memory on SOlaris 8. ... > shared memory configuration. ...
    (SunManagers)
  • Re: Memory mapped segments in a core dump
    ... a Solaris 9 system handy to check if it was in that too. ... Back around Solaris 2.4 / 2.5 era, shared memory wasn't dumped. ... opening and closing the coredump with libelf corrupted it). ... mmaped areas including mmaped files, which was regarded as a bug. ...
    (comp.unix.solaris)
  • remsh permission denied
    ... IPMP on solaris 8 issue!!! ... NFS server and ipfilter ... The information contained in this electronic message and any attachments ... Solaris 10, Oracle 10G, Shared Memory Segments ...
    (SunManagers)