`
weiyinchao88
  • 浏览: 1183897 次
文章分类
社区版块
存档分类
最新评论

在内核中寻找内核符号表

 
阅读更多

from:http://hi.baidu.com/wzt85/blog/item/eb8546f2a64e7616b17ec548.html

在用户空间中可以用如下方法得到:

1. 从 System.map 文件直接得到地址。
例如,要得到 do_fork 的地址,可以在命令行执行 $grep do_fork /usr/src/linux/System.map 。
2. 使用 nm 命令。
$nm vmlinuz |grep do_fork
3. 从 /proc/kallsyms 文件获得地址。
$cat /proc/kallsyms |grep do_fork

在2.6较早的版本中可以用kallsyms_lookup_name()来查找, 但是在我得2.6.18中好像没有导出。

贴一下wnps0.26中使用的方法, 前几天看了下《LKM Rootkits on Linux x86 v2.6》的中文版,里面有段寻找内核符号的代码, 怎么看都眼熟, 在仔细看原来是偶wnps的代码^_^

/**
* read_kallsyms - find sysenter address in /proc/kallsyms.
*
* success return the sysenter address,failed return 0.
*/
#define SYSENTER_ENTRY "sysenter_entry"
int read_kallsyms(void)
{
mm_segment_t old_fs;
ssize_t bytes;
struct file *file = NULL;
char *p,temp[20];
int i = 0;

file = filp_open(PROC_HOME,O_RDONLY,0);
if (!file)
return -1;

if (!file->f_op->read)
return -1;

old_fs = get_fs();
set_fs(get_ds());

while ((bytes = file->f_op->read(file,read_buf,BUFF,&file->f_pos))) {
if (( p = strstr(read_buf,SYSENTER_ENTRY)) != NULL) {
while (*p--)
if (*p == '/n')
break;

while (*p++ != ' ') {
temp[i++] = *p;
}
temp[--i] = '/0';
sysenter = simple_strtoul(temp,NULL,16);
#if DEBUG == 1
printk("sysenter: 0x%8x/n",sysenter);
#endif
break;
}
}


filp_close(file,NULL);

return 0;
}

分享到:
评论

相关推荐

    天书夜读:从汇编语言到Windows内核编程(完整版一)

     8.2.5 设置Windows内核符号表 106  8.2.6 调试例子diskperf 106  8.3 认识内核代码函数调用方式 107  8.4 尝试反写C内核代码 111  8.5 如何在代码中寻找需要的信息 113  第9章 用C++编写的内核程序 117  9.1...

    天书夜读:从汇编语言到Windows内核编程(完整版 二)

     8.2.5 设置Windows内核符号表 106  8.2.6 调试例子diskperf 106  8.3 认识内核代码函数调用方式 107  8.4 尝试反写C内核代码 111  8.5 如何在代码中寻找需要的信息 113  第9章 用C++编写的内核程序 117  9.1...

    从汇编语言到Windows内核编程

    但是我尝试寻找正确的方法和手段,为读者打开Windows底层知识宝库的大门,使读者可以在其中自由阅读,自己去获取所需知识。 目录概要: 入手篇 熟悉汇编 本书的第一部分,将帮助读者消除对汇编的恐惧,熟悉汇编...

    Windows内核安全与驱动开发光盘源码

    1.3.5 设置Windows内核符号表 12 1.3.6 实战调试first 13 第2章 内核编程环境及其特殊性 16 2.1 内核编程的环境 16 2.1.1 隔离的应用程序 16 2.1.2 共享的内核空间 17 2.1.3 无处不在的内核模块 18 2.2 数据...

    寒江独钓-Windows内核安全编程(高清完整版).part1

    1.3.5 设置Windows内核符号表 13 1.3.6 实战调试first 14 练习题 16 第2章 内核编程环境及其特殊性 17 2.1 内核编程的环境 18 2.1.1 隔离的应用程序 18 2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 ...

    天书夜谈:从汇编语言到Windows内核编程

     8.2.5 设置Windows内核符号表 106  8.2.6 调试例子diskperf 106  8.3 认识内核代码函数调用方式 107  8.4 尝试反写C内核代码 111  8.5 如何在代码中寻找需要的信息 113  第9章 用C++编写的内核程序 117  9.1...

    寒江独钓-Windows内核安全编程(高清完整版).part3

    1.3.5 设置Windows内核符号表 13 1.3.6 实战调试first 14 练习题 16 第2章 内核编程环境及其特殊性 17 2.1 内核编程的环境 18 2.1.1 隔离的应用程序 18 2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 ...

    寒江独钓-Windows内核安全编程(高清完整版).part4

    1.3.5 设置Windows内核符号表 13 1.3.6 实战调试first 14 练习题 16 第2章 内核编程环境及其特殊性 17 2.1 内核编程的环境 18 2.1.1 隔离的应用程序 18 2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 ...

    寒江独钓-Windows内核安全编程(高清完整版).part7

    1.3.5 设置Windows内核符号表 13 1.3.6 实战调试first 14 练习题 16 第2章 内核编程环境及其特殊性 17 2.1 内核编程的环境 18 2.1.1 隔离的应用程序 18 2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 ...

    寒江独钓-Windows内核安全编程(高清完整版).part5

    1.3.5 设置Windows内核符号表 13 1.3.6 实战调试first 14 练习题 16 第2章 内核编程环境及其特殊性 17 2.1 内核编程的环境 18 2.1.1 隔离的应用程序 18 2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 ...

    寒江独钓-Windows内核安全编程(高清完整版).part6

    1.3.5 设置Windows内核符号表 13 1.3.6 实战调试first 14 练习题 16 第2章 内核编程环境及其特殊性 17 2.1 内核编程的环境 18 2.1.1 隔离的应用程序 18 2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 ...

    Windows内核安全驱动开发(随书光盘)

    1.3.5 设置Windows内核符号表 12 1.3.6 实战调试first 13 第2章 内核编程环境及其特殊性 16 2.1 内核编程的环境 16 2.1.1 隔离的应用程序 16 2.1.2 共享的内核空间 17 2.1.3 无处不在的内核模块 18 2.2 数据...

    寒江独钓-Windows内核安全编程(高清完整版).part2

    1.3.5 设置Windows内核符号表 13 1.3.6 实战调试first 14 练习题 16 第2章 内核编程环境及其特殊性 17 2.1 内核编程的环境 18 2.1.1 隔离的应用程序 18 2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 ...

    VT虚拟化技术,VT驱动调试器,自建调试体系,反反调试技术,内核驱动,VT过保护,VT源代码

    支持pdb符号自动下载,省去寻找特征码步骤,轻松兼容不同系统版本. 5.zip文件是编译好的成品 支持平台 win10 x64 intel architecture cpu. 环境:vs2019 driver sdk 19041,kernelModeDriver10.0 有需要学习的朋友...

    对内核中“二次获取”漏洞的精确以及大范围检测.pdf

    “二次获取”过程中潜藏的问题(What Can Go Wrong in This Process?) 第一次获取之后的状态(Right After the First Fetch) 用户层内存访问冲突(Race Condition in The Userspace) 第二次获取之后的状态(Right After ...

    GPU编程之进击的优化-李修宇.docx

    第四章 CNN中的卷积计算 前言 1 基于矩阵乘法的卷积算法 2 类矩阵乘法的卷积算法 小结 第五章 基于GPU的LU分解(待续) 5.0 一般实现 5.1 分块实现 5.2 使用动态并行 5.3 多GPU版本 第六章 GPU上...

    天书夜读(完整版).汇编语言汇编语言

    没有符号表的反汇编31 第三节 实战:反汇编引擎, HOOK 系统调用31 3-1 反汇编引擎XDE32 之熟悉指令31 3-2 反汇编引擎XDE32 之具体实现34 3-3 XP 下HOOK 系统调用IoCallDriver37 3-4 Vista 下...

    驱动程序初始侦察工具_C_C++_下载

    \n这使得在 IDA 中更容易找到函数(而不是依赖静态分析中的启发式)。\n可以分析该函数以枚举 IOCTL 代码并执行攻击面分析。\nDispatchDeviceControl 支持的 IOCTL 代码的枚举。\n可能有这样的符号执行机会,但不...

    ARM_Linux启动分析.pdf

    这一部分的启动过程在2.4.x内核中简化了不少,缺省的独立初始化过程只剩下网络 (sock_init())和创建事件管理核心线程,而其他所需要的初始化都使用__initcall()宏 包含在do_initcalls()函数中启动执行。...

    windows驱动开发技术详解-part2

    这是书的光盘。共分为两个部分,这是第一部分。 本书由浅入深、循序渐进地... 本章总结了在内核模式下的四种等待方法,读者可以利用这些方法灵活地用在自己的驱动程序中。最 后本章还介绍了如何对IRP的超时情况进行...

Global site tag (gtag.js) - Google Analytics