Re: Seek Help !!!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > Hi, 
> >    I am totally new to linux kernel . I want to intercept system calls 
> > with sys_call_table. But , it seems that this symbol is not exported in 
> > linux kernel 2.4. 
> >   Is there any method by which i can export this symbol ?? 
> > 
> > Waiting for the help .... 
> > 
 
You can intercept system call even if you don't have sys_call_table exported in 
your running kernel. Just do the following things :- 
1. Try to get the source code for the runnig kernel. 
2. Build vmlinux 
3. With objdump now try to get the address of sys_call_table :- 
 
	$ objdump -D vmlinux >& Output 
 
Here, if you look for "sys_call_table", you can see the address of it. 
4. Now write a kernel module, in which take a char * variable whose value is this... 
and then you can easuly intercept the system call whichever you want with the help 
of __NR_<x> constants which are defined in "linux/unistd.h", So for example if you 
want to intercept sys_exit() :- 
 
	// I'm assuming address of sys_call_table = 0xc1010101 
	long *temp = 0xc1010101; 
	int (*my_function)(int); 
	int (*original_function)(int); 
 
	original_function = *(temp + __NR_exit); 
	*(temp + __NR_exit) = my_function; 
 
 
Hope this helps you... 
 
Thanks. 
Sumit Sharma, 
IBM, Bangalore. 
 

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux