| www.delorie.com/archives/browse.cgi | search |
| 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...)
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |