当前位置: 首页 > news >正文

【个人简单记录】PLT,GOT函数加载机制

PLT GOT 加载记录

以ARM64架构为例

1…text代码中调用

执行 .text:000000000002001C D5 A9 FF 97 BL .popen

在这里插入图片描述

2.跳转到.plt表,根据计算后,得到函数在got里面的地址

arm64计算的方法: got地址 = x16后面的数字(第一行) + add命令后面的数字

// --------------- [首次] ---------------
.text 代码调用 -> .plt (发现.got没有值---地址) -> 调用_dl_runtime_resolve(x16) 自动调用目标函数 -> 返回.text 代码调用处的下一条指令
// 首次: x17 存放 _dl_runtime_resolve 地址
ADD x16,x16,#偏移 // 存放函数在got表里的地址  
// 并将x16作为参数传给
_dl_runtime_resolve 解析器函数//  写个最简单的理解
void _dl_runtime_resolve(long got地址){// 自动识别要调用的函数名字 (如popen)// 获取so内 popen实际地址 (如libc.so)// 将 popen实际地址 存入 got地址 (popen在你自己写的代码里对应的全局函数地址)// 调用 popen (并将x0....参数传入,进行调用)// 跳转回 .text 代码调用处的下一条指令
}// --------------- [之后] ---------------
.text 代码调用 -> .plt (发现.got有值---地址) -> 根据.got存的地址 ->调用目标函数 -> 返回.text 代码调用处的下一条指令

在这里插入图片描述

IDA跳转到got看看

在这里插入图片描述

首次这里都是0

之后这里会变成目标函数地址

在这里插入图片描述

不知道这样能不能清晰一点,反正我感觉已经很清晰了(蓝色线–首次调用,红色线–第二次调用)

在这里插入图片描述

http://www.lryc.cn/news/619869.html

相关文章:

  • 海康视觉平台VM创建项目
  • FxSound:为你的音频体验注入专业级享受
  • Android图片加载库Glide深度解析与实践指南
  • 4 种方法将联系人从 iPhone 传输到 realme
  • 用了Cursor AI之后,我的编程效率翻倍了?——一位程序员的真实体验分享
  • 小迪23年-32~40——java简单回顾
  • Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22
  • 直播预告|鸿蒙生态中的AI新玩法
  • 09--解密栈与队列:数据结构核心原理
  • 图像分割-动手学计算机视觉9
  • 算法提升-树上问题之(dfs序)
  • WPF的c1FlexGrid的动态列隐藏和动态列名设置
  • 《设计模式之禅》笔记摘录 - 15.观察者模式
  • WMware的安装以及Ubuntu22的安装
  • MCP协议更新:从HTTP+SSE到Streamable HTTP,大模型通信的进化之路
  • 学习STM32 脉冲计数实验
  • 猫头虎AI分享:Word MCP,让AI具备Word文档操作能力,文档创建、内容添加、格式编辑等AI能力
  • HGDB的分区表实现SQL Server的分区视图
  • 健永科技工业自动化RFID解决方案
  • Maven配置Docker插件推送至远程私有仓库
  • 相机按键功能解析
  • python基于Hadoop的超市数据分析系统
  • SODA自然美颜相机(甜盐相机国际版) v9.3.0
  • 云手机未来的发展趋势如何?
  • 什么是智能对讲机?技术演进与参数指标解析
  • 服务器安全检测与防御技术总结
  • USB基础 -- USB相关协议字段解析
  • 高防IP的防护原理是什么?
  • Linux系统之ELF文件
  • BAV99WT1G ON安森美 双串联高速开关二极管 集成电路IC