作家
登录

Linux虚拟内存地址转化成物理内存地址

作者: 来源: 2017-07-25 17:02:56 阅读 我要评论

  •  
  • if (0==(pfn_item & PFN_PRESENT_FLAG)) 
  •  
  •  
  • fprintf(stderr, "page is not present"); 
  •  
  • return -1; 
  •  
  •  
  • *phy = (pfn_item & PFN_MASK)*page_size + vir % page_size; 
  •  
  • return 0; 
  •  
  •  
  • int main(int argc, char* argv[]) { 
  •  
  • unsigned long a = 0xffbbccaa; 
  •  
  • unsigned long vir = reinterpret_cast<unsigned long>(&a); 
  •  
  • unsigned long phy = 0; 
  •  
  • fprintf(stderr, "sizeof(unsigned long):%lu, sizeof(unsigned long*):%lu\n", sizeof(unsigned long), sizeof(unsigned long*)); 
  •  
  • mem_addr_vir2phy(vir, &phy); 
  •  
  • fprintf(stderr, "1 vir:0x%lx, phy: 0x%lx getchar to continue\n", vir, phy); 
  •  
  • getchar(); 
  •  
  • a = 0x11111111; 
  •  
  • fprintf(stderr, "2 vir:0x%lx, phy: 0x%lx getchar to continue\n", vir, phy); 
  •  
  • getchar(); 
  •  
  • fprintf(stderr, "3 vir:0x%lx, phy: 0x%lx a:0x%lx\n", vir, phy, a); 
  •  
  • 若何验证

    你须要开启kernel如下模块

    CONFIG_DEVMEM=y

    Linux虚拟内存地址转化成物理内存地址

    封闭如下模块

    一般的Android 都有/system/bin/r(源码在system/core/toolbox/r.c)这个敕令,这个敕令类似devmem之类的嵌入式对象,经由过程/dev/mem(物理内存)mmap来攫取物理内存的值,当然你也可以修改该地址的值

    膳绫擎的例子他们经由过程getchar() 阻拦法度榜样的运行,以便你有足够的时光来敲/system/bin/r敕令和参数

    【编辑推荐】

    1. 如安在Linux中恢复仍在晃荡过程中的已删除文件
    2. Nylas Mail: 一个Linux的免费邮件客户端
    3. 1000+人推荐的30个实用的Linux敕令
    4. 开辟一个Linux调试器(四):Elves和dwarves
    5. 拯救者Linux:我是若何给我的团队惹人Linux的
    【义务编辑:枯木 TEL:(010)68476606】

    敕令用法,膳绫擎的例子我们取了一个栈上变量的虚拟地址,转换成物理地址。然后你就可以经由过程/system/bin/r来攫取和修改┞封个地址的值了。

    攫取0x9a6f0b20地址的值

    1. adb shell /system/bin/r 0x9a6f0b20 

    修改0x9a6f0b20地址的值为0xffbbccaa

    1. adb shell /system/bin/r 0x9a6f0b20 0xffbbccaa 

    源码可以直接git clone git@github.com:green130181/kernel-study.git

    工程里的 pagemap直接拷贝到aosp的随便率性目次

    然后aosp的根目次履行

    1. source build/envsetup.sh 
    2.  
    3. lunch "your select" 
    4.  
    5. cd pagemap dir 

        推荐阅读

        推进信息化、智能化与司法的高度融合

      最后,信息化、智能化技巧结不雅的应用要遵守以工本钱的原则。《最高人平易近法院关于加快扶植聪明法院的看法》以及《关于人平易近法院信息化人才部队扶植的看法》均对技恋人才保障问题提出了明白的请求。不过,推动>>>详细阅读


      本文标题:Linux虚拟内存地址转化成物理内存地址

      地址:http://www.17bianji.com/lsqh/36400.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)