最是那一低头的温柔,像一朵水莲花不胜凉风的娇羞,道一声珍重,道一声珍重,那一声珍重里有蜜甜的忧愁 —— 徐志摩

ilocker:关注 Android 安全(新手) QQ: 2597294287

符号表 (symbol table) 中保存着符号的定义或者引用信息。对于 android so 文件来说,.dynsym 符号表保存着库文件的导入和导出符号。

用 readelf 看一下 android liblog.so 的 .dynsym 动态符号表:

符号 __cxa_finalize 的 Ndx(st_shndx) 为 UND,表明该符号在本 so 中未定义,需要去 liblog.so 的依赖库中去找。那 liblog.so 依赖哪些库?可以从 .dynamic 中找到。

符号 __cxa_finalize 的定义应该在 libc.so 中。

符号 __android_log_vprint 的 Ndx(st_shndx) 为 8,表示该符号在本 so 中有定义,并且定义该符号的 section 在 section header table 中的索引是 8。看一下 section header table:

可以看到,符号 __android_log_vprint 定义在 .text section 中,这也是理所当然。所以 __android_log_vprint 是一个导出符号,由那些需要打印日志的程序调用。

因为符号 __android_log_vprint 是在本 so 中定义的,所以看到其 Value(st_value) 不为 0。android linker 在做符号重定位工作时,就是由这个 st_value 找到该符号定义在内存中的地址。不过 0x00001539 当然不是符号的最终的内存地址,linker 会再加上 liblog.so 在内存中的基址,所以 st_value 相当于一个地址偏移。

回过头再看一下,符号表其实就是一个结构体数组,每个结构体描述一个符号的信息。结构体的定义如下:

其中 st_value 和 st_shndx ,上面已经有所介绍。

st_name 是符号的名字,这里保存的只是一个引用字符串表的索引值。

st_size 对于导入符号来说,根本不知道人家有多大,所以为 0。对于导出符号,则会明确标明大小。

st_info 包含了符号的类型和绑定属性等信息,后续笔记再具体写。

st_other 保留未用,不必关心。

转载于:https://www.cnblogs.com/ilocker/p/4631704.html

ELF Format 笔记(七)—— 符号表相关推荐

  1. 编译原理学习笔记20——符号表

    编译原理学习笔记20--符号表 20.1 符号表的组织与操作 20.2 符号表的内容 20.3 利用符号表分析名字的作用域 20.1 符号表的组织与操作 符号表 符号表的作用与组织 符号表的整理和查找 ...

  2. ELF Format 笔记(十三)—— 段权限

    ilocker:关注 Android 安全(新手) QQ: 2597294287 一个可被系统加载的程序至少拥有一个可加载段.当系统创建可加载段的内存映像时,会根据 p_flags 赋予一定的访问权限 ...

  3. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(二)】进程虚拟地址空间、装载与动态链接、GOT、全局符号表、共享库的组织、DLL、C++与动态链接

    文章目录 前言 介绍 可执行文件的装载与进程 进程虚拟地址空间 装载方式 操作系统对可执行文件的装载 进程虚存空间分布 ELF文件的链接视图和执行视图 堆和栈 Linux 内核装载ELF & ...

  4. ELF符号表分析(转载)

    An object file's symbol table holds information needed to locate and relocate a program's symbolic d ...

  5. 【Android 逆向】ELF 文件格式 ( 程序头数据 | 节区头数据 | 动态符号表 )

    文章目录 一.程序头数据 二.节区头数据 三.动态符号表 一.程序头数据 在上一篇博客 [Android 逆向]ELF 文件格式 ( ELF 程序头入口大小 | ELF 程序头入口个数 | ELF 文 ...

  6. 【编译原理笔记15】运行存储分配概述,静态存储分配,栈式存储分配,调用序列和返回序列,非局部数据的访问,符号表,符号表建立

    本次笔记内容: 7-1 运行存储分配概述 7-2 静态存储分配 7-3 栈式存储分配 7-4 调用序列和返回序列 7-5 非局部数据的访问 7-6 符号表 7-7 符号表建立 本节课幻灯片,见于我的 ...

  7. jQuery整理笔记七----几个经典表单应用

    1.文本框获得(失去)焦点 当文本框获得输入焦点时,将该文本框高亮显示,算不得一个应用,仅仅是一个小技巧,能够提高用户体验. <!DOCTYPE html PUBLIC "-//W3C ...

  8. jQuery整理笔记七----几个经典表单应用 .

    登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 标题 标题不能为空 网址 标签 摘要 公开 取消收藏 全部设为已读查看所有通知 暂没有新通知 返回通知列表 下一条 上一条 分享资讯传PPT ...

  9. elf section类型_ELF结构(主要是符号表)

    1.1.1   整体结构 ELF对象格式用于目标文件(.o扩展名)和执行文件. 有些信息只出现在目标文件或执行文件中. ELF文件由下列部件构成. ELF header必须放在文件的开始;其他部件可以 ...

最新文章

  1. ANDROID 中UID与PID的作用与区别
  2. 聊聊reactive streams的schedulers
  3. python实现程序重启_如何让python程序重新启动到某一行?
  4. Struts2【一】 配置介绍
  5. 为什么spark没有java的交互模式?
  6. java 字母金字塔_LeetCode756:金字塔转换矩阵(JAVA题解)
  7. 3A公司年薪30万建模师总结:怎么做才能学好3D建模?
  8. c语言oj1124,程序设计入门——C语言 第2周编程练习 1时间换算(5分)
  9. python输出字母金字塔可以输入字母和行数的_python实现输入任意一个大写字母生成金字塔的示例...
  10. C++ 编译期封装-Pimpl技术
  11. Docker mysql
  12. spark通过合理设置spark.default.parallelism参数提高执行效率
  13. 关于SQL的重复记录问题
  14. [数据压缩作业2]TIFF文件格式分析
  15. 惠普1139一体打印机如何联网打印_惠普1139 惠普1139打印扫描一体机功能
  16. C++练习 计算年份所属生肖
  17. uos应用_UOS指标的应用详解
  18. 极速模式下java无法加载_谷歌和360急速模式 下的XMLHttpRequest 的onprogress事件失效...
  19. 用vue实现动态组织结构图
  20. OpenCV3 和 Qt5 计算机视觉 学习笔记 - 图像转换

热门文章

  1. JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼?
  2. Django前后端增删改查
  3. Flink中GroupWindow和OverWindow各自的作用+window体系+文档阅读方式
  4. Logistic回归与梯度上升算法
  5. 家庭接入: dsl 电缆ftth 拨号和卫星_家庭宽带的路由器升级之路
  6. 手机协处理器java,HBase1.x实战:协处理器Java开发实例--ObserverCoprocessor
  7. UISwitch,UISegmentedControl及UISlider的初步学习
  8. 每日一天:对象数组去重
  9. Coding and Paper Letter(三十九)
  10. 感觉要火!妹子实地采访网易猪厂程序员七夕怎么过