Tag: SYSTEM-CALLS
Intenté hacer una llamada al sistema mmap después de cambiar al modo de 64 bits en Linux x86 (versión de Linux 5.15.6), pero la llamada al sistema devuelve ENOMEM. Un ejemplo mínimo y reproducible se muestra en el siguiente código en ensamblador: .text .global _start _start: .code32 jmp $0x33, $start64 . . . Read more
Estoy intentando escribir en un archivo utilizando la llamada al sistema write, la ruta del archivo se pasa a través del argumento de línea de comandos. Estoy obteniendo algún valor basura y no logro entender por qué está sucediendo esto. “`c #include <stdio.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #define . . . Read more
Estoy compilando mi kernel para mi llamada al sistema “hello world” pero estoy obteniendo el siguiente error: ld: arch/x86/entry/syscall_64.o:(.rodata+0xdc0): referencia sin definir a __x64_sys_hello' ld: arch/x86/entry/syscall_x32.o:(.rodata+0xdc0): referencia sin definir a__x64_sys_hello’ make: [Makefile:1139: vmlinux] Error 1 sitio:stackoverflow.com* A continuación se presentan los cambios que hice para agregar mi llamada al sistema . . . Read more
Mi entendimiento es que debido a la convención de llamada de x64, el tercer parámetro para execve, el envp, debería almacenarse en rdx. Pero este shellcode no pone a cero este registro, solo pone a cero el registro rsi (que almacena arv). ¿No causaría eso un fallo de segmentación si . . . Read more
¿Cómo puedo ejecutar llamadas del sistema directamente? Estoy usando OpenBSD en este momento, en la plataforma Unix. Quiero poder llamar a las llamadas del sistema sin el “envoltorio”, como ejemplo: en lugar de write(1, “¡Hola!”, 6) me gustaría poder escribir syscall(4, 1, “¡Hola!”, 6).