【Android 逆向】函数拦截 ( GOT 表数据结构分析 | 函数根据 GOT 表进行跳转的流程 )

举报
韩曙亮 发表于 2022/01/11 01:55:53 2022/01/11
【摘要】 文章目录 一、GOT 表数据结构分析二、函数根据 GOT 表进行跳转的流程 一、GOT 表数据结构分析 GOT 表分为 ...





一、GOT 表数据结构分析



GOT 表分为 2 2 2 部分 ,

  • 一部分在 调用者部分 ( 可执行文件 ) 中 ,
  • 一部分在 被调用者部分 ( 静态 / 动态 函数库 ) 中 ;

函数库 中的部分是真正的 GOT 表 , 在调用者的部分是 PLT 表 ;

PLT 表示一个 跳转指令列表 , 执行该跳转指令 , 可以直接跳转到对应的 GOT 表中 , GOT 表记录 函数真实的位置 , 此时可以 跳转到 函数真实位置 ;

GOT 表在动态库中是以数组形式存在的 , 其中的数据结构很负责 , 不只是有 函数地址 , 还有其它额外数据信息 ;

在这里插入图片描述





二、函数根据 GOT 表进行跳转的流程



函数跳转流程 :

PLT 表中 保存的是 jmp 指令 , 该指令跳转的目的地址是 动态库 中的 GOT 表 , GOT 表中记录了真实的被调用函数的地址 , 之后直接跳转到该 真实函数地址 中 ;

以访问 scanf 函数为例 : 在 PLT 表中 , 保存的是 jmp GOT表地址 指令 , GOT 表地址 指向 GOT 表的一个数组元素 , 该数组元素存储这 scanf 函数的实际地址 , 因此该 GOT 表地址 本质 是 保存 scanf 函数的地址 的 数据 的 地址 ; GOT 表 是 libc.so 中的 ;

在这里插入图片描述

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/121225631

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。