Linux系统用户态根据虚拟地址获取物理地址的方式
之前做项目的时候,也会遇到过根据页表,由虚拟地址翻译物理地址的需求,一般的做法是HACK内核,在内核中加入HACK代码,思路无非就是通过页表进行转换,但是现在有了一种新的方式,这种方式下,不需要HACK内核,也不需要重新编译内核,便能够根据进程的虚拟地址,得到它的物理地址,下面展开介绍。
原理非常简单,依赖于 proc 文件系统的几个节点:
/proc/$pid/pagemap
/proc/kpagecount
/proc/kpageflags
准确的说,只依赖第一个就够了,pagemap每8个字节为一组,描述了一个struct page 对应的结构信息,这里面就包含了它的PNF物理页框号。
测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <errno.h>
#include <stdint.h>
#include <string.h>#define PAGEMAP_ENTRY 8
#define GET_BIT(X,Y) (X & ((uint64_t)1<<Y)) >> Y
#define GET_PFN(X) X & 0x7FFFFFFFFFFFFFconst int __endian_bit = 1;
#define is_bigendian() ( (*(char*)&__endian_bit) == 0 )int i, c, pid, status;
unsigned long virt_addr;
uint64_t read_val, file_offs
Linux系统用户态根据虚拟地址获取物理地址的方式相关推荐
- linux系统用户,组和权限的管理
PS: {最近一直在做毕业设计,前面博客也记录过我的一些过程.其中需要在Ubuntu上搭建一个FTP服务器,此处我选择Vsftpd,但是在我对vsftpd的配置文件vsftpd.conf设置正确后(对 ...
- 麒麟linux创建用户组,麒麟Linux系统用户和组管理指南(21页)-原创力文档
中标麒麟Linux服务器操作系统培训系列 中标麒麟Linux系统用户和组管理指南 技术创新,变革未来 本章目标 •熟悉中标麒麟Linux服务器操作系统中用户和组的 基本操作命令和方法: •了解用户和用 ...
- linux用户恢复正常,Linux系统用户口令安全恢复方法
Linux系统用户口令安全恢复方法 2007-09-07 eNet&Ciweek 有许多原因可能导致用户口令的遗失,这对系统管理员而言,可能不是一个问题,只要以root账号登录,再用passw ...
- Linux 目录所属组设置,Linux系统用户与组管理命令及配置文件总结
一.Linux系统用户及组分类 1.用户类别 Linux系统中的用户大致可分为三类:root用户.系统用户.普通用户.每一个用户都拥有一个唯一的身份标识UID. 2.组分类 与用户信息对应的,Linu ...
- Linux系统用户详细介绍
Linux系统用户详细介绍 linux 用户(user)管理 . linux有哪些用户?作用 用户组(grop) 用户相关配置 linux 用户(user)管理 人 名字 身份证 linux 名字 0 ...
- 04.05 Linux系统用户与用户组
第一章 linux系统用户分类 超级用户 UID为0代表root,皇帝Linux管理员 普通用户 UID是500-60000,由超级用户或具备超级用户权限的用户创建的用户(贫民老百姓,大臣,布衣) 系 ...
- linux运维管理系统培训,Linux运维教程之Linux系统用户与组管理
今天小编要跟大家分享的文章是关于Linux运维教程之Linux系统用户与组管理.正在从事Linux运维工作和学习的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助. 一.Linux系统用户 ...
- linux认证授权系统,linux系统用户认证与授权管理.pptx
Linux系统用户认证与授权管理;什么是用户认证/权限PAM认证机制Kerberos认证协议LDAP目录访问协议;出于系统安全考虑,Linux提供的安全机制主要有:身份标识与鉴别.文件访问控制.特权管 ...
- Linux系统用户管理和su、sudo详细讲解
1 Linux用户和组 1)Linux是多任务.多用户的系统 2)每个文件和进程,都需要对应一个用户和用户组 3)Linux系统是通过UID和FID来识别用户和组的用户相当于人名,UID和GID相当于 ...
最新文章
- 转:性能测试中的性能测试指标与用户体验分析
- 每日站立会议个人博客(冲刺周)-Wednesday
- form表单多文件上传
- 【面向对象】面向对象程序设计测试题9-对象之间的继承关系测试题
- P5703 【深基2.例5】苹果采购(python3实现)--2022.01.29
- 2018年高二计算机试题,2018年上学期高二信息技术期末考试试题.pdf
- 敏捷开发免费管理工具——火星人预览之一:需求与故事树
- python/pytorch中的一些函数介绍
- gradientDescent----吴恩达机器学习作业
- MMD原神动画制作(学习教程一)
- VS与SQL、SSMS的安装,以及官方示例数据AdventureWorks2017的安装
- deepin linux 安装 磁盘管理,deepin安装教程
- qrCode二维码生成器
- webuploader+上传文件夹
- 美团笔试题 淘汰分数
- C++模拟扑克过五关
- 开源进企业8月27日活动
- 连接池以及连接池的使用
- ES6—ES13总结
- 涓滴意念--java基础
热门文章
- Android 手机静态IP连接局域网访问局域网电脑Web服务器
- 科技云报道:Web3.0横空出世,未来已来?
- 快来快来,都是些男人值得拥有的APP
- 湖畔大学最新学员名单公布:覆盖14个行业 胡彦斌被录取
- TIM学习文档——TIM简介
- 【经验分享】打开CAD文件提示:图形文件无效
- centos7 mysql创建表_CentOS7 MySQL数据库入门 小白必看
- react-native Android上网络请求失败,报错信息:Network request failed
- final, finally, finalize的区别
- 英语对一个程序员来说有多重要?