En un proceso de espacio de usuario de Linux lo que es la dirección de la página vsyscall?

StackOverflow https://stackoverflow.com/questions/2403728

  •  18-09-2019
  •  | 
  •  

Pregunta

Me gustaría adquirir la dirección de la página vsyscall para mis propios usos. Sólo tengo dos ideas aquí: alterar el compilador para almacenar esta información en algún lugar conocido después de que se le da a __start, o leer / proc / [pid] / mapas. Realmente no quiero leer / proc / ya que es lento y no debería ser necesario. Asimismo, no quiero hacer modificaciones compilador. ¿Alguien tiene una alternativa? ¿Existe un símbolo que debo saber sobre?

Su en el punto que estoy tentado a meter esta funcionalidad en una llamada ioctl en un módulo que he desarrollado como parte de este trabajo!

¿Fue útil?

Solución

Aquí es una puñalada en la oscuridad:

Si se puede determinar en qué dirección se inició el proceso de pila, entonces usted puede encontrar posiblemente los parámetros que fueron proporcionados a __start. A continuación, puede acceder a los parámetros a través de punteros del tipo apropiado establecido en las correspondientes compensaciones del puntero de pila inicial.

De acuerdo con el artículo Cómo main () se ejecuta en Linux, por Hyouck "Hawk "Kim , las primeras instrucciones de __start escribirá los argumentos iniciales de una manera determinista antes de llamar __libc_start_main.

Es evidente que cualquier enfoque de este tipo es específico de la plataforma y sujeto a la inestabilidad si la implementación de __start se cambiaron.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top