社区
CPU和硬件区
帖子详情
linux ELF文件如何得到加载到内存后的末尾虚拟地址
扯线木偶人
2017-05-30 04:12:53
本人使用ndk10编译so,有需要用到so文件的末尾虚拟地址,试过使用文件的大小,不行;然后ELF第二个LOAD的虚拟地址Vd和虚拟内存Vm相加对0x1000对齐:offset=(Vd+Vm)%0x1000,newVd=Vd-offset+0x1000,也不对,newVd比文件的大小还要小,怎么回事?还是我的对齐操作错了?请问如何获取so文件的末尾虚拟地址?谢谢
...全文
2044
回复
打赏
收藏
linux ELF文件如何得到加载到内存后的末尾虚拟地址
本人使用ndk10编译so,有需要用到so文件的末尾虚拟地址,试过使用文件的大小,不行;然后ELF第二个LOAD的虚拟地址Vd和虚拟内存Vm相加对0x1000对齐:offset=(Vd+Vm)%0x1000,newVd=Vd-offset+0x1000,也不对,newVd比文件的大小还要小,怎么回事?还是我的对齐操作错了?请问如何获取so文件的末尾虚拟地址?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ELF
视频教程
本视频视频教程主要讲的是
ELF
文件
格式相关,内容涉及到
ELF
文件
格式解析,
ELF
文件
注入与hook,
ELF
文件
注入shellcode,
ELF
文件
加固加壳,内容丰富。
含大量图文解析及例程 |
Linux
下的
ELF
文件
、链接、
加载
与库(上)
常用工具我们首先列出一些在接下来的介绍过程中会频繁使用的分析工具,如果从事操作系统相关的较底层的工作,那这些工具应该再熟悉不过了。不熟悉的读者可以先看一下这里的简单的功能介绍,我们会在后文中介绍一些详细的参数选项和使用场景。另外,建议大家在遇到自己不熟悉的命令时,通过 man 命令来查看手册,这是最权威的、第一手的资料。
ELF
文件
详解
ELF
文件
的三种形式在
Linux
下,可...
【1000个
Linux
内存
知识-007】-
ELF
文件
中的段Segment和节Section的区别是什么?代码段和数据段是段还是节?.bss .data是什么?【readlef -l】
(注意这里
加载
到
内存
后,在
linux
按照页映射到物理
内存
,页表里面就会指定权限,从而进一步就会影响平时经常出现的Segment Fault,所谓的段错误就是一个地址访问的时候发现不是合法的,怎么判断不是合法的,就是通过
虚拟地址
访问页表访问到物理页的时候页的属性可能不具有写的属性,就是段错误了。节头对于程序的执行来说不是必需的,没有节头表,程序仍可以正常执行,因为节头表没有对程序的
内存
布局进行描述,对程序
内存
布局的描述是程序头表的任务。
ELF
程序头是对二进制
文件
中段的描述,是程序装载必需的一部分。
Linux
ELF
可执行链接格式学习
ELF
是一种用于二进制
文件
、可执行
文件
、目标代码、共享库和核心转储格式
文件
的格式。
基于C语言对
Linux
操作系统下
ELF
文件
的分析与研究
至此,所需要的功能已经准备完毕,就可以得出被嵌入部分的汇编代码, 其中主要的思路,首先将 rax,rbx 等寄存器 pushq 入栈,进行现场保存,因为注入的代码经常会变化,所以每次都需要一个栈来支持其变化。注入功能的实现,是指改变一个
elf
可执行
文件
,在其中嵌入一段代码, 从而让该程序在运行之后能够先指向一个自己写的特殊的附加功能(如输出一个字符串 helloworld),之后再执行原来的可执行
文件
的功能。总的来说,段错误应该就是访问了不可访问的
内存
, 这个
内存
要么是不存在的,要么是受系统保护的。
CPU和硬件区
1,025
社区成员
562
社区内容
发帖
与我相关
我的任务
CPU和硬件区
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
复制链接
扫一扫
分享
社区描述
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章