write syscall open calls linux-kernel system-calls

syscall - sys_call_table en Linux kernel 2.6.18



system call write linux (2)

Estoy tratando de configurar la llamada de salida del sistema a una variable

extern void *sys_call_table[]; real_sys_exit = sys_call_table[__NR_exit]

Sin embargo, cuando trato de hacer, la consola me da el error

error: ‘__NR_exit’ undeclared (first use in this function)

Cualquier consejo sería apreciado :) Gracias


Si no ha incluido el archivo syscall.h, debe hacerlo antes de la referencia a __NR_exit. Por ejemplo,

#include <syscall.h> #include <stdio.h> int main() { printf("%d/n", __NR_exit); return 0; }

que devuelve:

$ cc t.c $ ./a.out 60

Algunas otras observaciones:

  1. Si ya ha incluido el archivo, las razones habituales por las que __NR_exit no se definirán son que la definición se estaba ignorando debido a la compilación condicional ( #ifdef o #ifndef en algún lugar) o porque se está eliminando en otro lugar mediante un #undef .

  2. Si está escribiendo el código para el espacio del kernel, tiene un conjunto de encabezados completamente diferentes para usar. LXR ( http://lxr.linux.no/linux ) archivo navegable y buscable de la fuente del kernel es un recurso útil.


Como está en kernel 2.6.x, ya no se exporta sys_call_table. Si quiere evitar el error de compilación intente esto incluir

#include<linux/unistd.h>

sin embargo, no funcionará. Así que el trabajo para "jugar" con sys_call_table es encontrar la dirección de sys_call_table en SystemXXXX.map (ubicado en / boot) con este comando:

grep sys_call System.map-2.6.X -i

esto dará las direcciones, entonces este código debería permitirle modificar la tabla:

unsigned long *sys_call_table; sys_call_table = (unsigned long *) simple_strtoul("0xc0318500",NULL,16); original_mkdir = sys_call_table[__NR_mkdir]; sys_call_table[__NR_mkdir] = mkdir_modificado;

Espero que funcione para ti, acabo de probarlo en el kernel 2.6.24, así que debería funcionar para 2.6.18

también verifique aquí, es un muy buen http://commons.oreilly.com/wiki/index.php/Network_Security_Tools/Modifying_and_Hacking_Security_Tools/Fun_with_Linux_Kernel_Modules