有些内核函数或者内核变量是不导出的,但是确实需要用,那该怎么办?因此寻找内核符号地址就有必要进行一下总结,更有甚,如果想找一条特定的指令,比如movl的指令地址,那更需要投入一些精力!总的来说,我总结了下面五种方式: 
1.通过procfs中的kallsym文件或者System.map文件直接查找
这种方式借助于文件,依赖于文件的存在,不需要什么编程能力,只要会在文件中查找信息即可
2.google一下
这种方式借助于互联网,依赖你对信息的筛选能力。最有代表性的,寻找system_call和sys_call_table的地址,网上会说先找到0x80个中断描述符,然后在寻找机器码特征。这种方式实际上广泛用于替换系统调用这种小伎俩。
3.使用dump_stack
这种方式需要在你想得到的地址调用链条的下游调用dump_stack,然后通过dmesg信息得到相应的地址信息。同理等价的方式就是故意制造错误,迫使内核打印地址。
4.利用栈结构和栈原理寻找
记住栈中会有什么信息,一般会有参数地址信息,会有一个个的栈帧信息,每当调用call指令的时候,还会将下一条指令的地址压入栈中。通过这些信息我们可以得到大量的地址信息。
5.从/dev/mem中搜索
这个方式最有技术含量,也最困难,然而什么外界工具都不需要,甚至都不需要你懂编程语言。然而需要你对机器码指令十分精通,对内存布局十分精通,它实际上是一种机器语言的编码方式
     从上述方法可以看出,从1到5,对外部工具的依赖越来越少,然而对自身的知识储备要求越来越高,因此完成一件事的成本貌似是守恒的。如果一个人的知识储备非常丰富,本身有十分聪明,他会使用哪种方式呢?会使用第五种方式吗?我想绝对不!他肯定尝试使用第一种方式,然后第二种...他很有可能永远不会使用第五种方式,虽然他有能力完成!这就是说,在解决问题的时候,我们不会在乎难度和能力,我们只在乎成本,因此我们总是喜欢从阻力最小的方向上切入,有简单的方式就不使用更复杂的方式,这也印证了简单就是美的普世原则。在力求简单的过程中,我们不得不积累更多的知识,进行更多的尝试...

想起一句广告词,加速,是为了放慢脚步!

本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271015

linux内核中符号地址的获取相关推荐

  1. 论文中文翻译——Double-Fetch情况如何演变为Double-Fetch漏洞:Linux内核中的双重获取研究

    本论文相关内容 论文下载地址--Web Of Science 论文中文翻译--How Double-Fetch Situations turn into Double-Fetch Vulnerabil ...

  2. linux内核中根据inode获取文件的完整路径

    1.概述 构成一个操作系统最重要的部分就是进程管理和文件系统了. Linux最初采用的是minix的文件系统,minix是由Andrew S. Tanenbaum开发的用于实验性的操作系统,比如有一些 ...

  3. Linux内核中获取纳秒时间戳的方法

    Linux内核中获取纳秒时间戳的方法 1 方法1:使用getnstimeofday64方法 2 方法2:使用ktime_get_real_ns方法 1 方法1:使用getnstimeofday64方法 ...

  4. linux 内核 遍历文件夹,Linux内核中通过文件描述符获取绝对路径

    背景 在Linux内核中,已知一个进程的pid和其打开文件的文件描述符fd,如何获取该文件的绝对路径?基本思路是先获取该文件在内核中的file结构体,再通过d_path()获取到整个文件的绝对路径. ...

  5. Linux内核中锁机制之完成量、互斥量

    在上一篇博文中笔者分析了关于信号量.读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题. 八.完成量 下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等 ...

  6. Linux 内核中的 Device Mapper 机制

    本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...

  7. Linux内核中max()宏的奥妙何在?(一)

    Linux内核中max()宏的奥妙何在?(一) 1.max()宏那点事 在Linux内核中,有这样四个比较大小的函数,如下: max(x,y) //两个数求最大值 min(x,y) //两个数求最小值 ...

  8. Linux内核中max()宏的奥妙何在?(二)——大神Linus对这个宏怎么看?

    最新max()宏 上回,我们在<Linux内核中max()宏的奥妙何在?(一)>一文中说到,在3.18.34版Linux内核源码中的max()宏,采用了GCC的扩展特性,可以避免一些错误. ...

  9. Linux 内核中的 GCC 特性(zz)

    from:http://www.ibm.com/developerworks/cn/linux/l-gcc-hacks/ GCC 和 Linux 是出色的组合.尽管它们是独立的软件,但是 Linux ...

最新文章

  1. java socket windows linux,socket在windows下和linux下的区别
  2. c语言作业答案N个公约数公倍数,c语言程序题,输入两个正整数m和n,求其最大公约数和最小公倍数。...
  3. 软件测试测试用例编写_不要先编写所有软件测试-只需编写一个
  4. php fatal error 500,PHP在Linux下出现HTTP ERROR 500解决方法
  5. Python入门7_抽象进阶
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的健身房管理系统
  7. Java编程:排序算法——希尔排序
  8. Knowledge Graph - NLP
  9. (转)某公司ICO涉嫌“擅自发行股票罪” 判处有期徒刑一年六个月
  10. 最护眼的电脑屏幕颜色是黑色?
  11. 我的世界服务器插件文件夹,各位大神服务器没有插件文件夹怎么办
  12. maximo 入门知识
  13. poj 1745 divisible
  14. C语言:str函数(一)
  15. 威联通NAS实现定时任务
  16. java开发平时看什么东西
  17. ubuntu 8.04玩魔兽争霸
  18. 计算机教学管理,计算机教育教学管理论文
  19. vue devtool的安装与使用
  20. Android系统手机通讯录

热门文章

  1. plsql 循环存储过程返回数据集合_Java基础(十五)——Collection集合、泛型 - 寒江雨
  2. IOS开发笔记5-C语言基础复习
  3. PHP学习笔记-PHP与JavaScript的交互
  4. 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
  5. android中实现返回首页功能
  6. 常用git命令思维图
  7. 编译-C语言库FFTW支持iOS平台的静态库
  8. 实验三 循环结构设计
  9. 【JPA】注解@PostConstruct、@PreDestroy
  10. RibbitMQ 大数据分布式下的消息队列思