interés sonda Mach-O: loading

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 execswimagen Cargador

 
 

OS X, hay tres archivos ejecutables, mach-oun exec_mach_imgactproceso, fat binaryun exec_fat_imgactproceso interpreter(intérprete) por un exec_shell_imgactproceso de

exec_mach_imgact

El código fuente puede referirse a:bsd/kern/kern_exec.c

Se utiliza principalmente para Mach-Ohacer la prueba, detecta Mach-Ola cabeza, resolver su arquitectura, compruebe los imgpcontenidos, y se negó a aceptar Dyliby Bundleeste tipo de archivos, se harán estos archivos dylda la carga en el cargo

Entonces Mach-Oasignada en la memoria, llamadaload_machfile()

load_machfile

El código fuente puede referirse a:bsd/kern/mach_loader.c

load_machfileCargas Mach-Oen una variedad de load monmandcomandos. 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_machfileCon base en load_commandel tipo de función para cargar una elección diferente, el interior es una Switchdeclaració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.

Supongo que te gusta

Origin www.cnblogs.com/feng9exe/p/12459415.html
Recomendado
Clasificación