2006-12-06 23:56:41

by Stephen Torri

[permalink] [raw]
Subject: Obtaining a list of memory address ranges allocated to processes

I am trying to create a custom ELF and Windows PE loader for the purpose
of security research. I am having a difficult time finding how to
allocate memory for a binary at the desired address in memory
(especially if its non-relocatable). I would like to see why I cannot
get memory allocated at the exact address request in the binary headers.
Is there a program or system call that allows me to see a list of memory
address ranges allocated to the running processes on a system?

Stephen


2006-12-07 00:08:01

by Remi Colinet

[permalink] [raw]
Subject: Re: Obtaining a list of memory address ranges allocated to processes

Selon Stephen Torri <[email protected]>:

> I am trying to create a custom ELF and Windows PE loader for the purpose
> of security research. I am having a difficult time finding how to
> allocate memory for a binary at the desired address in memory
> (especially if its non-relocatable).

Use mmap system call.
Anyway, the address is only going to be a hint.

> I would like to see why I cannot
> get memory allocated at the exact address request in the binary headers.

address should be page aligned.

> Is there a program or system call that allows me to see a list of memory
> address ranges allocated to the running processes on a system?
>

pmap pid_of_your_program will give you the memory map.

> Stephen
>

Remi

> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>


2006-12-07 07:10:30

by Arjan van de Ven

[permalink] [raw]
Subject: Re: Obtaining a list of memory address ranges allocated to processes

On Wed, 2006-12-06 at 17:56 -0600, Stephen Torri wrote:
> I am trying to create a custom ELF and Windows PE loader for the purpose
> of security research. I am having a difficult time finding how to
> allocate memory for a binary at the desired address in memory
> (especially if its non-relocatable). I would like to see why I cannot
> get memory allocated at the exact address request in the binary headers.
> Is there a program or system call that allows me to see a list of memory
> address ranges allocated to the running processes on a system?

Hi,

check the /proc/<pid>/maps and /proc/<pid>/smaps files... they have
exactly what you need

Greetings,
Arjan van de Ven