Android ELF文件中.got .plt .rel.plt .rel.dyn节的区别和联系
2016-08-03 17:40
363 查看
以下暂时做为自己的笔记,不做详细介绍。
首先打印出来Section Header:
可以看到上面.got和.plt节的类型是PROGBITS,也就是代码;而.rel.dyn和.rel.plt是REL,它们是Elf32_Rel类型的结构体数据。这就是为什么用ida查看ELF文件的时候只能看见.got和.plt节的内容,而用readelf查看的时候只列出来.rel.dyn和.rel.plt节的内容了。
.rel.dyn节的每个表项对应了除了外部过程调用的符号以外的所有重定位对象,而.rel.plt节的每个表项对应了所有外部过程调用符号的重定位信息。例如你的程序中需要调用一个libc中的函数,假如是strlen,直接调用的话,这个strlen符号就会在.rel.plt节中,如果在你的程序中定义一个函数指针(假如是my_strlen)指向strlen函数,那么my_strlen符号就会在.rel.dyn节中。.rel.dyn和.rel.plt节中每个重定位项记录了符号的符号表索引,重定位的操作地址,重定位类型的信息,.rel.plt中的类型应该都是R_ARM_JUMP_SLOT。
更多信息,以及具体调用一个外部全局函数的时候跳转流程,请看“Android和Linux动态加载机制及PLT/GOT作用介绍”。
参考链接:
1. http://blog.csdn.net/wangbaochu/article/details/41653571
2. http://www.360doc.com/content/10/1103/11/158286_66208047.shtml
首先打印出来Section Header:
可以看到上面.got和.plt节的类型是PROGBITS,也就是代码;而.rel.dyn和.rel.plt是REL,它们是Elf32_Rel类型的结构体数据。这就是为什么用ida查看ELF文件的时候只能看见.got和.plt节的内容,而用readelf查看的时候只列出来.rel.dyn和.rel.plt节的内容了。
.rel.dyn节的每个表项对应了除了外部过程调用的符号以外的所有重定位对象,而.rel.plt节的每个表项对应了所有外部过程调用符号的重定位信息。例如你的程序中需要调用一个libc中的函数,假如是strlen,直接调用的话,这个strlen符号就会在.rel.plt节中,如果在你的程序中定义一个函数指针(假如是my_strlen)指向strlen函数,那么my_strlen符号就会在.rel.dyn节中。.rel.dyn和.rel.plt节中每个重定位项记录了符号的符号表索引,重定位的操作地址,重定位类型的信息,.rel.plt中的类型应该都是R_ARM_JUMP_SLOT。
更多信息,以及具体调用一个外部全局函数的时候跳转流程,请看“Android和Linux动态加载机制及PLT/GOT作用介绍”。
参考链接:
1. http://blog.csdn.net/wangbaochu/article/details/41653571
2. http://www.360doc.com/content/10/1103/11/158286_66208047.shtml
相关文章推荐
- elf文件中的.plt .rel.dyn .rel.plt .got .got.plt的关系
- android ELF文件PLT和GOT
- Android ELF文件PLT和GOT
- Android ELF文件PLT和GOT
- ELF文件动态链接时 GOT,PLT 的变化过程
- ELF文件动态链接时 GOT,PLT 的变化过程
- ELF文件动态链接时 GOT,PLT 的变化过程
- ELF 文件中的 GOT 表和 PLT 表解读
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现(by 低端码农 2014.10.27)
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现
- 基于Android的ELF PLT/GOT符号重定向过程
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现(by 低端码农 2014.10.27)
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现
- 基于Android的ELF PLT/GOT符号和重定向过程ELF Hook实现(by 低端农业代码 2014.10.27)
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现(by 低端码农 2014.10.27)
- ELF文件动态链接时 GOT,PLT 的变化过程
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现
- Android的xml文件中@、@android:type、@*、?、@+的含义和区别
- hex,bin,axf,elf文件格式的区别
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别