Related articles |
---|
Help my understanding of compiled code nerkul@my-deja.com (1999-11-09) |
Re: Help my understanding of compiled code ilya@math.ohio-state.edu (1999-11-16) |
Re: Help my understanding of compiled code adonovan@imerge.co.uk (Alan Donovan) (1999-11-16) |
Re: Help my understanding of compiled code christian.sell@netcologne.de (Christian Sell) (1999-11-16) |
Re: Help my understanding of compiled code mwh@gradin.cis.upenn.edu (1999-11-18) |
From: | Alan Donovan <adonovan@imerge.co.uk> |
Newsgroups: | comp.compilers |
Date: | 16 Nov 1999 23:44:07 -0500 |
Organization: | Imerge Ltd. |
References: | 99-11-059 |
Keywords: | code |
nerkul@my-deja.com wrote:
>
> Okay, so an executable file, say one compiled by gcc, they call that a
> binary... But I look through it and their are clearly lots of
> human-readable strings and stuff. So my question is, what's in a
> compiled program? I want to automate a kind of
> platform-independent machine code searching thing, but I'm not sure
> quite where to begin.
Executable files, binary files, load modules -- whatever you call
them, can have a number of file formats. a.out, ELF, COFF and XCOFF
are a few. Each of them basically consists of a header, describing
the lengths of the following sections, and then the sections
themselves.
If you want to look at one, find a Windows box, and invoke Quick View
on an file of type .exe or .dll -- this will show the COFF header and
some other windowsy things.
The sections are typically: the "text" section which contains the
instructions of the program; the constants section which include
strings (in fact, in C, when you refer to "hello\n", it is in fact a
pointer to the address of the string within the constants section of
the load module); initialised static data, and any custom sections.
Search the web for ELF or COFF and you're bound to find something.
alan
------------------------------------------------------------------------
Alan Donovan adonovan@imerge.co.uk http://www.imerge.co.uk
Imerge Ltd. +44 1223 875265
Return to the
comp.compilers page.
Search the
comp.compilers archives again.