execve
Esta función sólo se le llama directamente __mac_execve()
, el código fuente de los detalles de implementación interna, se puede ver el código fuente XNU
__mac_execve ()
El código fuente puede referirse a:
bsd/kern/kern_exec.c
La principal es inicializar los datos es cargar la imagen, así como las operaciones relacionadas con los recursos se llevará a cabo en su interior exec_activate_image()
, reflejado por su carga de trabajo que se hace
int
__mac_execve(proc_t p, struct __mac_execve_args *uap, int32_t *retval) { struct image_params *imgp; // 初始化imgp数据 ....... exec_activate_image(imgp); }
exec_activate_image
El código fuente puede referirse a:
bsd/kern/kern_exec.c
El archivo ejecutable principal se copia en la memoria y seleccionar una función diferente dependiendo de la carga de los tipos de archivos ejecutables, todos los espejos en un error de carga o finaliza, o la imagen final es terminado de cargar. En el programa de OS X para tratar específicamente con el archivo ejecutable llamado execsw
imagen Cargador
OS X, hay tres archivos ejecutables, mach-o
un exec_mach_imgact
proceso, fat binary
un exec_fat_imgact
proceso interpreter
(intérprete) por un exec_shell_imgact
proceso de
exec_mach_imgact
El código fuente puede referirse a:
bsd/kern/kern_exec.c
Se utiliza principalmente para Mach-O
hacer la prueba, detecta Mach-O
la cabeza, resolver su arquitectura, compruebe los imgp
contenidos, y se negó a aceptar Dylib
y Bundle
este tipo de archivos, se harán estos archivos dyld
a la carga en el cargo
Entonces Mach-O
asignada en la memoria, llamadaload_machfile()
load_machfile
El código fuente puede referirse a:
bsd/kern/mach_loader.c
load_machfile
Cargas Mach-O
en una variedad de load monmand
comandos. En su segmento de datos interna prohibirá la ejecución, para evitar desbordamiento de ataques, sino también para establecer la aleatorización diseño del espacio de direcciones (ASLR), así como algunos ajustes mapa.
Realmente responsable del comando de carga se analiceparse_machfile()
parse_machfile
El código fuente puede referirse a:
bsd/kern/mach_loader.c
parse_machfile
Con base en load_command
el tipo de función para cargar una elección diferente, el interior es una Switch
declaración de lograr
Autor: ___ Alegría
enlace: https: //www.jianshu.com/p/8498cec10a41
Fuente: libros de Jane
tienen derechos de autor por el autor. reimpresión comercial póngase en contacto con el autor autorizada, reimpresión no comercial por favor indique la fuente.