delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2007/03/23/17:38:34

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
Subject: Re: protecting program memory
To: djgpp AT delorie DOT com
X-Mailer: Lotus Notes Release 7.0.2 September 26, 2006
Message-ID: <OF8FAF1ED8.483B1086-ON872572A7.0078F978-872572A7.007C4A14@seagate.com>
From: Gordon DOT Schumacher AT seagate DOT com
Date: Fri, 23 Mar 2007 16:37:27 -0600
X-MIMETrack: Serialize by Router on SV-GW1/Seagate Internet(Release 7.0.1 HF29|March 07, 2006) at
03/23/2007 03:37:32 PM
MIME-Version: 1.0
X-Proofpoint-FWRule: outbound2
X-Proofpoint-Virus-Version: vendor=fsecure engine=4.65.5502:2.3.11,1.2.37,4.0.164 definitions=2007-03-23_04:2007-03-22,2007-03-23,2007-03-23 signatures=0

tim DOT nicholson AT skyforcekent DOT com wrote on 23 Mar 2007 04:16:50
-0700:

# Is there an easy way to protect the memory used to store the
# program op codes from a rogue memory write from within the
# application? I have a large (100,000+ line) DJGPP
# application which sometimes crashes with SIGILL - It would
# seem the program is cannibalizing itself! In order
# to find how this is happening, I would like to protect the
# entire block of memory that contains the application code
# so that an exception occurs at the point the corruption occurs
# rather than the point that the corrupted code is executed.
#
# I guest I need to make the memory block read only, but I am
# not sure how to do that.

Not without DPMI 1.0, you can't.

But here's an alternative: checksum the executable space.

You can get a pointer to the beginning of code and its size
by applying some mild abuse of GCC and the linker map:

   extern char*               _text  asm(".text");
   extern char*               _etext asm("etext");
   static char*               __my_progstart   = NULL;
   static size_t              __my_progsize    = 0;
   __my_progstart = (char*) &_text;
   __my_progsize = (&_etext - &_text) - sizeof(void*);

There are any number of things that you can do now, armed
with that data!  (Look into instrumentation with GCC...)

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019