linux X86-64 获取系统调用表
2011-09-02 18:07
260 查看
static void init_x64_syscalls(void)
{
int i;
void* system_call_addr = 0;
unsigned char* lpbin;
rdmsrl(MSR_LSTAR, system_call_addr);
printk(KERN_ALERT "X64 init_linux_shell %x \n", system_call_addr);
for (lpbin = (char*)system_call_addr, i = 0; i < 255; i++) {
/*
* 测试发现 call指令对应特征码为 ff 14 c5
*/
if (lpbin[i] == 0xff && lpbin[i+1]== 0x14){
unsigned long long* sys_call_table =
(0xffffffff00000000) + *(unsigned int*)(lpbin + i + 3);
printk(KERN_ALERT "sys_call_table %p\n", sys_call_table);
printk(KERN_ALERT "sys_mknode %p\n",sys_call_table[__NR_mknod]);
break;
}
}
}
{
int i;
void* system_call_addr = 0;
unsigned char* lpbin;
rdmsrl(MSR_LSTAR, system_call_addr);
printk(KERN_ALERT "X64 init_linux_shell %x \n", system_call_addr);
for (lpbin = (char*)system_call_addr, i = 0; i < 255; i++) {
/*
* 测试发现 call指令对应特征码为 ff 14 c5
*/
if (lpbin[i] == 0xff && lpbin[i+1]== 0x14){
unsigned long long* sys_call_table =
(0xffffffff00000000) + *(unsigned int*)(lpbin + i + 3);
printk(KERN_ALERT "sys_call_table %p\n", sys_call_table);
printk(KERN_ALERT "sys_mknode %p\n",sys_call_table[__NR_mknod]);
break;
}
}
}
相关文章推荐
- Linux X86 系统调用列表 system call table 32 bits and 64 bits
- Linux内核2.6.34.14添加系统调用及编译方法(CentOS-6.4-x86_64)
- Linux中获取某个进程的系统调用以及参数(故障排查案例)
- Linux系统调用__get_thread获取TLS失败导致应用程序奔溃
- Linux x86_64 安装 11.2.0.3 rac后,系统严重变慢!
- linux内核不用系统调用获取时间的函数kernel_mktime
- linux stat系统调用,获取文件信息。
- 居于x86_64的linux系统的malloc和free函数的实现
- CentOS7.3系统安装mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
- Linux 适用硬件平台/系统架构(i386 / i586 / i686 / x86_64)解释
- 关于Linux RHEL6.2 x86_64 系统安装 mplayer 步骤
- 为x86 64体系结构添加系统调用
- Linux下通过ioctl系统调用来获取和设置网络信息
- Linux中获取某个进程的系统调用以及参数(故障排查案例)
- linux系统编程之文件与IO:stat()系统调用获取文件信息
- Linux下通过ioctl系统调用来获取和设置网络信息
- Linux下的C程序如何调用系统命令,并获取系统的输出信息到C程序中
- centos x86_64--------------------------------系统调用
- linux x86系统调用拦截
- Linux下通过ioctl系统调用来获取和设置网络信息