当前位置:网站首页>十二、进程地址空间(pmap;vdso;mmap)
十二、进程地址空间(pmap;vdso;mmap)
2022-06-10 11:30:00 【[T]】
一、进程地址空间
char* p可以和intptr_t互相转换
1、可以指向任何地址
2、合法的地址(可读或可写)
(1)代码(main, %rip会从此处取出待执行指令), 只读
(2)数据(static,int x),读写
(3)堆栈(int y),读写
(4)运行时分配内存,读写
(5)动态链接库
3、非法的地址
(1)NULL,导致segmentation fault
二、查看进程地址空间
pmap(1) report memory of a precess
如何查看进程的地址空间

1、最小的Hello world (静态/动态链接)
(1)进程的地址空间:若干连续的“段”
(2)“段”的内存可以访问
(3)不在段内/违反权限的内存访问触发SIGSEGV
gdb可以越权访问,但是不能访问不存在的地址
三、操作系统提供查看进程地址空间的机制
RTFM:/proc/[pid]/maps (man 5 proc)
1、进程地址空间中的每一段
(1)地址(范围)和权限(rwxsp)
(2)对应的文件:offset,dev,inode,pathname
2、和readelf里的信息互相验证
四、进程的地址空间
进程的地址空间=内存里若干连续的“段”
1、每一段是可访问(读/写/执行)的内存
(1)可能映射到某个文件和/或在进程间共享
管理进程地址空间的系统调用
//映射
void *mmap(void* addr, size_t length, int port, int flag, int fd, off_t offset);
//取消映射
void munmap(void,* addr, size_t length);
//修改映射权限
int mprotect(void,* addr, size_t length, int port);2、RTFM:状态增加/删除/修改一段可访问的内存
五、地址空间隔离
每个*ptr只能访问本进程(状态机)的内存
1、除非mmap显示指定、映射共享文件或共享内存多线程
2、实现了操作系统最重要的功能:进程之间的隔离
六、修改器
1、修改器
(1)通过open ”/proc/pid/mem“
便利内存中的某个值,根据修改值,可以锁定地址空间;通过修改该地址的值,实现修改。
如:修改器就是通过值锁定地址,实现游戏金币数值修改
2、变速齿轮
(1)“欺骗”进程时钟
源头:闹钟、睡眠、gettimeofday
拦截它们需要跟复杂的技术
在时间调用(系统调用)处,添加一个跳转指令,跳转至自定义时间处理函数,可以实现时间齿变换
3、游戏安全
控制/数据流完整性
(1)保护进程的完整性
独立的进程/驱动做完整性验证
(2)保护隐私数据不被其他进程读写
拦截向本进程的ReadProcessMemory和WriteProcessMemory,发现后立即拒绝执行
边栏推荐
猜你喜欢

Flink CDC 在大健云仓的实践

How data is stored in memory

大型项目综合实训

图文,文字预训练方式长期学习ing。

中国赛宝的面经
![[PaperNote] Web3 Direction](/img/c0/1a9a3502461f26231ef1516ab871de.png)
[PaperNote] Web3 Direction

In commemoration of the 16th day of the first month, the total number of visits to the studio exceeded one million

Practice of Flink CDC + Hudi massive data entering the lake in SF

MySQL数据类型

数商云家具行业供应商评估管理系统:提升家具企业核心竞争力,实现数字化协同管理
随机推荐
87.(leaflet之家)leaflet军事标绘-直线箭头修改
【 ten thousand people single wooden bridge 】 how to arrange life in that summer after the college entrance examination?
数据在内存中的存储方式
【Question】what‘s the scenario of aliasing a class interface
建筑业减碳绝非一招鲜 专家建议加强改造农村建筑
Exception和Error有什么区别吗
动态规划(mid)
【Question】rxjs/operator takeWhile vs takeUntil
On line monitoring of oil content in compressed air of power plant with PID photo ionization detector
Day 1 stack and queue (simple)
Niuke Mianjing 02
远程解决win10上keyboard和chrome不work的两例问题(by quqi99)
kubernetes常用命令-1-命令补全
The essence of linear algebra 4 matrix multiplication and linear compound transformation
定时刷数据库的数据,并只同步被修改的字段
Fun face recognition software
API如何检测安全配置是否有错误?
87. (leaflet house) leaflet military plotting - straight arrow modification
Sword finger position operation
What is the difference between NoClassDefFoundError and classnotfoundexception