Rango de ubicación de la pila en linux para el proceso del usuario

3

En Linux, con ASLR habilitado, ¿hay un rango de direcciones donde se encuentran las direcciones de pila de usuarios? ¿Qué pasa con el montón, direcciones de instrucciones (sección de texto)? En general, ¿es posible mirar una dirección y decir si es para datos o para un código?

Estoy intentando escribir un Pintool que mira el EIP después de una devolución y comprueba si el EIP apunta a un área de datos. Supongamos que NX no está habilitado en este sistema.

    
pregunta abjoshi 06.05.2018 - 11:42
fuente

2 respuestas

1

Sí, hay un rango, y usted puede determinar ese rango de manera trivial para cualquier proceso en ejecución. Lea un proceso dado ' /proc/<pid>/maps para ver su diseño de memoria, así como el tipo de memoria en cada rango de direcciones. Esto se describe en proc(5) . Una muestra de un dispositivo integrado:

root@UP-7197:~# cat /proc/self/maps
00400000-0044b000 r-xp 00000000 1f:02 944        /bin/busybox
0045b000-0045c000 rw-p 0004b000 1f:02 944        /bin/busybox
77450000-77472000 r-xp 00000000 1f:02 802        /lib/libgcc_s.so.1
77472000-77473000 rw-p 00012000 1f:02 802        /lib/libgcc_s.so.1
77474000-77506000 r-xp 00000000 1f:02 891        /lib/libc.so
77513000-77514000 r--p 00000000 00:00 0          [vvar]
77514000-77515000 r-xp 00000000 00:00 0          [vdso]
77515000-77517000 rw-p 00091000 1f:02 891        /lib/libc.so
77517000-77519000 rwxp 00000000 00:00 0
7fc55000-7fc76000 rw-p 00000000 00:00 0          [stack]

La sintaxis se explica sobre el desbordamiento de pila .

    
respondido por el forest 06.05.2018 - 14:19
fuente
0

Sí, generalmente es posible adivinar dónde comienzan y terminan las diferentes secciones, aunque puede que no sea perfectamente confiable. Para obtener más información sobre cómo se estructura un proceso en la memoria, lea sobre el formato ELF .

    
respondido por el Peter Harmann 06.05.2018 - 14:11
fuente

Lea otras preguntas en las etiquetas