|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
.section __TEXT,__text .globl _main .p2align 2 _main: // 1. Guardar el path "/bin/date" en el stack sub sp, sp, #16 mov x0, #0x622f // "/b" movk x0, #0x6e69, lsl #16 // "in" movk x0, #0x642f, lsl #32 // "/d" movk x0, #0x7461, lsl #48 // "at" str x0, [sp] mov w0, #0x65 // "e" strb w0, [sp, #8] mov w0, #0x0 // NULL terminator strb w0, [sp, #9] // 2. Preparar registros para execve(path, argv, envp) mov x0, sp // x0 = puntero a "/bin/date" // Preparar argv = {path, NULL} sub sp, sp, #16 str x0, [sp] // argv[0] = path str xzr, [sp, #8] // argv[1] = NULL mov x1, sp // x1 = puntero a argv mov x2, xzr // x2 = envp = NULL // 3. Llamada al sistema (Clase UNIX = 2, execve = 59) // El número es (2 << 24) | 59 = 0x200003B mov x16, #0x003b movk x16, #0x0200, lsl #16 svc #0x80 |

