Linux系统用户态根据虚拟地址获取物理地址的方式
之前做项目的时候,也会遇到过根据页表,由虚拟地址翻译物理地址的需求,一般的做法是HACK内核,在内核中加入HACK代码,思路无非就是通过页表进行转换,但是现在有了一种新的方式,这种方式下,不需要HACK内核,也不需要重新编译内核,便能够根据进程的虚拟地址,得到它的物理地址,下面展开介绍。原理非常简单,依赖于 proc 文件系统的几个节点:/proc/$pid/pagemap /proc/kpagecount /proc/kpageflags准确的说,只依赖第一个就够了,这个节点的逻辑是现在内核源码文件./fs/proc/task_mmu.c中,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)1Y)) Y #define GET_PFN(X) X 0x7FFFFFFFFFFFFF const 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_offset, page_size; char path_buf [0x100] = {}; FILE * f; char *end; int read_pagemap(char * path_buf, unsigned long virt_addr); int main(int argc, char ** argv){ if(argc!=3){ printf("Argument number is not correct!\n pagemap PID VIRTUAL_ADDRESS\n"); return -1; } if(!memcmp(argv[1],"self",sizeof("self"))){ sprintf(path_buf, "/proc/self/pagemap"); pid = -1; } else{ pid = strtol(argv[1],end, 10); if (end == argv[1] || *end != '\0' || pid=0){ printf("PID must be a positive number or 'self'\n"); return -1; } } virt_addr = strtoll(argv[2], NULL, 16); if(pid!=-1) sprintf(path_buf, "/proc/%u/pagemap", pid); page_size = getpagesize(); read_pagemap(path_buf, virt_addr); return 0; } int read_pagemap(char * path_buf, unsigned long virt_addr){ printf("Big endian? %d\n", is_bigendian()); f = fopen(path_buf, "rb"); if(!f){ printf("Error! Cannot open %s\n", path_buf); return -1; } //Shifting by virt-addr-offset number of bytes //and multiplying by the size of an address (the size of an entry in pagemap file) file_offset = virt_addr / page_size * PAGEMAP_ENTRY; printf("Vaddr: 0x%lx, Page_size: %ld, Entry_size: %d\n", virt_addr, page_size, PAGEMAP_ENTRY); printf("Reading %s at 0x%llx\n", path_buf, (unsigned long long) file_offset); status = fseek(f, file_offset, SEEK_SET); if(status){ perror("Failed to do fseek!"); return -1; } errno = 0; read_val = 0; unsigned char c_buf[PAGEMAP_ENTRY]; for(i=0; i PAGEMAP_ENTRY; i++){ c = getc(f); if(c==EOF){ printf("\nReached end of the file\n"); return 0; } if(is_bigendian()) c_buf[i] = c; else c_buf[PAGEMAP_ENTRY - i - 1] = c; printf("[%d]0x%x ", i, c); } for(i=0; i PAGEMAP_ENTRY; i++){ //printf("%d ",c_buf[i]); read_val = (read_val 8) + c_buf[i]; } printf("\n"); printf("Result: 0x%llx\n", (unsigned long long) read_val); if(GET_BIT(read_val, 63)) { uint64_t pfn = GET_PFN(read_val); printf("PFN: 0x%lx (0x%lx)\n", pfn, pfn * page_size + virt_addr % page_size); } else printf("Page not present\n"); if(GET_BIT(read_val, 62)) printf("Page swapped\n"); fclose(f); return 0; }编译:czl@czl-RedmiBook-14:~/Workspace/memory$ gcc page.c -o virt2phy czl@czl-RedmiBook-14:~/Workspace/memory$验证,思路是找两个用户态进程,根据它们的地址空间,找到libc.so的运行地址,然后用上面的工具得到libc.so的物理地址,之所以选择libc.so是因为libc.so是所有的进程共享,它们应该具有相同的物理地址,即便虚拟地址不同。选择进程1:czl@czl-RedmiBook-14:~/Workspace/memory$ sudo cat /proc/1/maps [sudo] password for czl: 559ed662f000-559ed677f000 r-xp 00000000 08:08 1181921 /lib/systemd/systemd 559ed697e000-559ed69b9000 r--p 0014f000 08:08 1181921 /lib/systemd/systemd 559ed69b9000-559ed69ba000 rw-p 0018a000 08:08 1181921 /lib/systemd/systemd 559ed74fe000-559ed76e0000 rw-p 00000000 00:00 0 [heap] 7f18fc000000-7f18fc021000 rw-p 00000000 00:00 0 7f18fc021000-7f1900000000 ---p 00000000 00:00 0 7f1904000000-7f1904021000 rw-p 00000000 00:00 0 7f1904021000-7f1908000000 ---p 00000000 00:00 0 7f19082dd000-7f19082de000 ---p 00000000 00:00 0 7f19082de000-7f1908ade000 rw-p 00000000 00:00 0 7f1908ade000-7f1908adf000 ---p 00000000 00:00 0 7f1908adf000-7f19092df000 rw-p 00000000 00:00 0 7f19092df000-7f190947c000 r-xp 00000000 08:08 1184965 /lib/x86_64-linux-gnu/libm-2.27.so 7f190947c000-7f190967b000 ---p 0019d000 08:08 1184965 /lib/x86_64-linux-gnu/libm-2.27.so 7f190967b000-7f190967c000 r--p 0019c000 08:08 1184965 /lib/x86_64-linux-gnu/libm-2.27.so 7f190967c000-7f190967d000 rw-p 0019d000 08:08 1184965 /lib/x86_64-linux-gnu/libm-2.27.so 7f190967d000-7f190969a000 r-xp 00000000 08:08 1180247 /lib/x86_64-linux-gnu/libudev.so.1.6.9 7f190969a000-7f1909899000 ---p 0001d000 08:08 1180247 /lib/x86_64-linux-gnu/libudev.so.1.6.9 7f1909899000-7f190989a000 r--p 0001c000 08:08 1180247 /lib/x86_64-linux-gnu/libudev.so.1.6.9 7f190989a000-7f190989b000 rw-p 0001d000 08:08 1180247 /lib/x86_64-linux-gnu/libudev.so.1.6.9 7f190989b000-7f19098af000 r-xp 00000000 08:08 1185131 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0 7f19098af000-7f1909aae000 ---p 00014000 08:08 1185131 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0 7f1909aae000-7f1909aaf000 r--p 00013000 08:08 1185131 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0 7f1909aaf000-7f1909ab0000 rw-p 00014000 08:08 1185131 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0 7f1909ab0000-7f1909aba000 r-xp 00000000 08:08 1180918 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1 7f1909aba000-7f1909cb9000 ---p 0000a000 08:08 1180918 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1 7f1909cb9000-7f1909cba000 r--p 00009000 08:08 1180918 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1 7f1909cba000-7f1909cbb000 rw-p 0000a000 08:08 1180918 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1 7f1909cbb000-7f1909cc3000 r-xp 00000000 08:08 794506 /usr/lib/x86_64-linux-gnu/libargon2.so.0 7f1909cc3000-7f1909ec2000 ---p 00008000 08:08 794506 /usr/lib/x86_64-linux-gnu/libargon2.so.0 7f1909ec2000-7f1909ec3000 r--p 00007000 08:08 794506 /usr/lib/x86_64-linux-gnu/libargon2.so.0 7f1909ec3000-7f1909ec4000 rw-p 00008000 08:08 794506 /usr/lib/x86_64-linux-gnu/libargon2.so.0 7f1909ec4000-7f1909f2a000 r-xp 00000000 08:08 1185112 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 7f1909f2a000-7f190a129000 ---p 00066000 08:08 1185112 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 7f190a129000-7f190a12a000 r--p 00065000 08:08 1185112 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 7f190a12a000-7f190a12e000 rw-p 00066000 08:08 1185112 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 7f190a12e000-7f190a12f000 rw-p 00000000 00:00 0 7f190a12f000-7f190a133000 r-xp 00000000 08:08 1185078 /lib/x86_64-linux-gnu/libattr.so.1.1.0 7f190a133000-7f190a332000 ---p 00004000 08:08 1185078 /lib/x86_64-linux-gnu/libattr.so.1.1.0 7f190a332000-7f190a333000 r--p 00003000 08:08 1185078 /lib/x86_64-linux-gnu/libattr.so.1.1.0 7f190a333000-7f190a334000 rw-p 00004000 08:08 1185078 /lib/x86_64-linux-gnu/libattr.so.1.1.0 7f190a334000-7f190a338000 r-xp 00000000 08:08 1185093 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 7f190a338000-7f190a537000 ---p 00004000 08:08 1185093 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 7f190a537000-7f190a538000 r--p 00003000 08:08 1185093 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 7f190a538000-7f190a539000 rw-p 00004000 08:08 1185093 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 7f190a539000-7f190a53f000 r-xp 00000000 08:08 1180927 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f190a53f000-7f190a73e000 ---p 00006000 08:08 1180927 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f190a73e000-7f190a73f000 r--p 00005000 08:08 1180927 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f190a73f000-7f190a740000 rw-p 00006000 08:08 1180927 /lib/x86_64-linux-gnu/libuuid.so.1.3.0 7f190a740000-7f190a743000 r-xp 00000000 08:08 1181890 /lib/x86_64-linux-gnu/libdl-2.27.so 7f190a743000-7f190a942000 ---p 00003000 08:08 1181890 /lib/x86_64-linux-gnu/libdl-2.27.so 7f190a942000-7f190a943000 r--p 00002000 08:08 1181890 /lib/x86_64-linux-gnu/libdl-2.27.so 7f190a943000-7f190a944000 rw-p 00003000 08:08 1181890 /lib/x86_64-linux-gnu/libdl-2.27.so 7f190a944000-7f190a9b4000 r-xp 00000000 08:08 1185212 /lib/x86_64-linux-gnu/libpcre.so.3.13.3 7f190a9b4000-7f190abb4000 ---p 00070000 08:08 1185212 /lib/x86_64-linux-gnu/libpcre.so.3.13.3 7f190abb4000-7f190abb5000 r--p 00070000 08:08 1185212 /lib/x86_64-linux-gnu/libpcre.so.3.13.3 7f190abb5000-7f190abb6000 rw-p 00071000 08:08 1185212 /lib/x86_64-linux-gnu/libpcre.so.3.13.3 7f190abb6000-7f190abd0000 r-xp 00000000 08:08 1185050 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f190abd0000-7f190adcf000 ---p 0001a000 08:08 1185050 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f190adcf000-7f190add0000 r--p 00019000 08:08 1185050 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f190add0000-7f190add1000 rw-p 0001a000 08:08 1185050 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f190add1000-7f190add5000 rw-p 00000000 00:00 0 7f190add5000-7f190adf0000 r-xp 00000000 08:08 794419 /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1 7f190adf0000-7f190afef000 ---p 0001b000 08:08 794419 /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1 7f190afef000-7f190aff0000 r--p 0001a000 08:08 794419 /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1 7f190aff0000-7f190aff1000 rw-p 0001b000 08:08 794419 /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1 7f190aff1000-7f190b015000 r-xp 00000000 08:08 1185150 /lib/x86_64-linux-gnu/liblzma.so.5.2.2 7f190b015000-7f190b215000 ---p 00024000 08:08 1185150 /lib/x86_64-linux-gnu/liblzma.so.5.2.2 7f190b215000-7f190b216000 r--p 00024000 08:08 1185150 /lib/x86_64-linux-gnu/liblzma.so.5.2.2 7f190b216000-7f190b217000 rw-p 00025000 08:08 1185150 /lib/x86_64-linux-gnu/liblzma.so.5.2.2 7f190b217000-7f190b249000 r-xp 00000000 08:08 1185137 /lib/x86_64-linux-gnu/libidn.so.11.6.16 7f190b249000-7f190b448000 ---p 00032000 08:08 1185137 /lib/x86_64-linux-gnu/libidn.so.11.6.16 7f190b448000-7f190b449000 r--p 00031000 08:08 1185137 /lib/x86_64-linux-gnu/libidn.so.11.6.16 7f190b449000-7f190b44a000 rw-p 00032000 08:08 1185137 /lib/x86_64-linux-gnu/libidn.so.11.6.16 7f190b44a000-7f190b450000 r-xp 00000000 08:08 795074 /usr/lib/x86_64-linux-gnu/libip4tc.so.0.1.0 7f190b450000-7f190b64f000 ---p 00006000 08:08 795074 /usr/lib/x86_64-linux-gnu/libip4tc.so.0.1.0 7f190b64f000-7f190b650000 r--p 00005000 08:08 795074 /usr/lib/x86_64-linux-gnu/libip4tc.so.0.1.0 7f190b650000-7f190b651000 rw-p 00006000 08:08 795074 /usr/lib/x86_64-linux-gnu/libip4tc.so.0.1.0 7f190b651000-7f190b765000 r-xp 00000000 08:08 1185129 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1 7f190b765000-7f190b965000 ---p 00114000 08:08 1185129 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1 7f190b965000-7f190b967000 r--p 00114000 08:08 1185129 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1 7f190b967000-7f190b96c000 rw-p 00116000 08:08 1185129 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1 7f190b96c000-7f190b96d000 rw-p 00000000 00:00 0 7f190b96d000-7f190b971000 r-xp 00000000 08:08 1185095 /lib/x86_64-linux-gnu/libcap.so.2.25 7f190b971000-7f190bb71000 ---p 00004000 08:08 1185095 /lib/x86_64-linux-gnu/libcap.so.2.25 7f190bb71000-7f190bb72000 r--p 00004000 08:08 1185095 /lib/x86_64-linux-gnu/libcap.so.2.25 7f190bb72000-7f190bb73000 rw-p 00005000 08:08 1185095 /lib/x86_64-linux-gnu/libcap.so.2.25 7f190bb73000-7f190bbbc000 r-xp 00000000 08:08 1185103 /lib/x86_64-linux-gnu/libcryptsetup.so.12.2.0 7f190bbbc000-7f190bdbc000 ---p 00049000 08:08 1185103 /lib/x86_64-linux-gnu/libcryptsetup.so.12.2.0 7f190bdbc000-7f190bdbd000 r--p 00049000 08:08 1185103 /lib/x86_64-linux-gnu/libcryptsetup.so.12.2.0 7f190bdbd000-7f190bdbf000 rw-p 0004a000 08:08 1185103 /lib/x86_64-linux-gnu/libcryptsetup.so.12.2.0 7f190bdbf000-7f190bdc6000 r-xp 00000000 08:08 1185068 /lib/x86_64-linux-gnu/libacl.so.1.1.0 7f190bdc6000-7f190bfc5000 ---p 00007000 08:08 1185068 /lib/x86_64-linux-gnu/libacl.so.1.1.0 7f190bfc5000-7f190bfc6000 r--p 00006000 08:08 1185068 /lib/x86_64-linux-gnu/libacl.so.1.1.0 7f190bfc6000-7f190bfc7000 rw-p 00007000 08:08 1185068 /lib/x86_64-linux-gnu/libacl.so.1.1.0 7f190bfc7000-7f190bfd6000 r-xp 00000000 08:08 1185072 /lib/x86_64-linux-gnu/libapparmor.so.1.4.2 7f190bfd6000-7f190c1d5000 ---p 0000f000 08:08 1185072 /lib/x86_64-linux-gnu/libapparmor.so.1.4.2 7f190c1d5000-7f190c1d6000 r--p 0000e000 08:08 1185072 /lib/x86_64-linux-gnu/libapparmor.so.1.4.2 7f190c1d6000-7f190c1d7000 rw-p 0000f000 08:08 1185072 /lib/x86_64-linux-gnu/libapparmor.so.1.4.2 7f190c1d7000-7f190c1ed000 r-xp 00000000 08:08 1185146 /lib/x86_64-linux-gnu/libkmod.so.2.3.2 7f190c1ed000-7f190c3ec000 ---p 00016000 08:08 1185146 /lib/x86_64-linux-gnu/libkmod.so.2.3.2 7f190c3ec000-7f190c3ed000 r--p 00015000 08:08 1185146 /lib/x86_64-linux-gnu/libkmod.so.2.3.2 7f190c3ed000-7f190c3ee000 rw-p 00016000 08:08 1185146 /lib/x86_64-linux-gnu/libkmod.so.2.3.2 7f190c3ee000-7f190c40b000 r-xp 00000000 08:08 1185080 /lib/x86_64-linux-gnu/libaudit.so.1.0.0 7f190c40b000-7f190c60b000 ---p 0001d000 08:08 1185080 /lib/x86_64-linux-gnu/libaudit.so.1.0.0 7f190c60b000-7f190c60c000 r--p 0001d000 08:08 1185080 /lib/x86_64-linux-gnu/libaudit.so.1.0.0 7f190c60c000-7f190c60d000 rw-p 0001e000 08:08 1185080 /lib/x86_64-linux-gnu/libaudit.so.1.0.0 7f190c60d000-7f190c617000 rw-p 00000000 00:00 0 7f190c617000-7f190c624000 r-xp 00000000 08:08 1185199 /lib/x86_64-linux-gnu/libpam.so.0.83.1 7f190c624000-7f190c823000 ---p 0000d000 08:08 1185199 /lib/x86_64-linux-gnu/libpam.so.0.83.1 7f190c823000-7f190c824000 r--p 0000c000 08:08 1185199 /lib/x86_64-linux-gnu/libpam.so.0.83.1 7f190c824000-7f190c825000 rw-p 0000d000 08:08 1185199 /lib/x86_64-linux-gnu/libpam.so.0.83.1 7f190c825000-7f190c86c000 r-xp 00000000 08:08 1180910 /lib/x86_64-linux-gnu/libblkid.so.1.1.0 7f190c86c000-7f190ca6c000 ---p 00047000 08:08 1180910 /lib/x86_64-linux-gnu/libblkid.so.1.1.0 7f190ca6c000-7f190ca70000 r--p 00047000 08:08 1180910 /lib/x86_64-linux-gnu/libblkid.so.1.1.0 7f190ca70000-7f190ca71000 rw-p 0004b000 08:08 1180910 /lib/x86_64-linux-gnu/libblkid.so.1.1.0 7f190ca71000-7f190ca72000 rw-p 00000000 00:00 0 7f190ca72000-7f190cac3000 r-xp 00000000 08:08 1180920 /lib/x86_64-linux-gnu/libmount.so.1.1.0 7f190cac3000-7f190ccc2000 ---p 00051000 08:08 1180920 /lib/x86_64-linux-gnu/libmount.so.1.1.0 7f190ccc2000-7f190ccc4000 r--p 00050000 08:08 1180920 /lib/x86_64-linux-gnu/libmount.so.1.1.0 7f190ccc4000-7f190ccc5000 rw-p 00052000 08:08 1180920 /lib/x86_64-linux-gnu/libmount.so.1.1.0 7f190ccc5000-7f190ccc6000 rw-p 00000000 00:00 0 7f190ccc6000-7f190cceb000 r-xp 00000000 08:08 1185235 /lib/x86_64-linux-gnu/libselinux.so.1 7f190cceb000-7f190ceea000 ---p 00025000 08:08 1185235 /lib/x86_64-linux-gnu/libselinux.so.1 7f190ceea000-7f190ceeb000 r--p 00024000 08:08 1185235 /lib/x86_64-linux-gnu/libselinux.so.1 7f190ceeb000-7f190ceec000 rw-p 00025000 08:08 1185235 /lib/x86_64-linux-gnu/libselinux.so.1 7f190ceec000-7f190ceee000 rw-p 00000000 00:00 0 7f190ceee000-7f190cf21000 r-xp 00000000 08:08 1180923 /lib/x86_64-linux-gnu/libseccomp.so.2.4.3 7f190cf21000-7f190d120000 ---p 00033000 08:08 1180923 /lib/x86_64-linux-gnu/libseccomp.so.2.4.3 7f190d120000-7f190d139000 r--p 00032000 08:08 1180923 /lib/x86_64-linux-gnu/libseccomp.so.2.4.3 7f190d139000-7f190d13a000 rw-p 0004b000 08:08 1180923 /lib/x86_64-linux-gnu/libseccomp.so.2.4.3 7f190d13a000-7f190d141000 r-xp 00000000 08:08 1185059 /lib/x86_64-linux-gnu/librt-2.27.so 7f190d141000-7f190d340000 ---p 00007000 08:08 1185059 /lib/x86_64-linux-gnu/librt-2.27.so 7f190d340000-7f190d341000 r--p 00006000 08:08 1185059 /lib/x86_64-linux-gnu/librt-2.27.so 7f190d341000-7f190d342000 rw-p 00007000 08:08 1185059 /lib/x86_64-linux-gnu/librt-2.27.so 7f190d342000-7f190d4fa000 r-xp 00000000 08:08 1180295 /lib/systemd/libsystemd-shared-237.so 7f190d4fa000-7f190d6f9000 ---p 001b8000 08:08 1180295 /lib/systemd/libsystemd-shared-237.so 7f190d6f9000-7f190d783000 r--p 001b7000 08:08 1180295 /lib/systemd/libsystemd-shared-237.so 7f190d783000-7f190d784000 rw-p 00241000 08:08 1180295 /lib/systemd/libsystemd-shared-237.so 7f190d784000-7f190d786000 rw-p 00000000 00:00 0 7f190d786000-7f190d96d000 r-xp 00000000 08:08 1179742 /lib/x86_64-linux-gnu/libc-2.27.so 7f190d96d000-7f190db6d000 ---p 001e7000 08:08 1179742 /lib/x86_64-linux-gnu/libc-2.27.so 7f190db6d000-7f190db71000 r--p 001e7000 08:08 1179742 /lib/x86_64-linux-gnu/libc-2.27.so 7f190db71000-7f190db73000 rw-p 001eb000 08:08 1179742 /lib/x86_64-linux-gnu/libc-2.27.so 7f190db73000-7f190db77000 rw-p 00000000 00:00 0 7f190db77000-7f190dba0000 r-xp 00000000 08:08 1179738 /lib/x86_64-linux-gnu/ld-2.27.so 7f190dd78000-7f190dd88000 rw-p 00000000 00:00 0 7f190dda0000-7f190dda1000 r--p 00029000 08:08 1179738 /lib/x86_64-linux-gnu/ld-2.27.so 7f190dda1000-7f190dda2000 rw-p 0002a000 08:08 1179738 /lib/x86_64-linux-gnu/ld-2.27.so 7f190dda2000-7f190dda3000 rw-p 00000000 00:00 0 7ffc80c4a000-7ffc80c6b000 rw-p 00000000 00:00 0 [stack] 7ffc80c87000-7ffc80c8a000 r--p 00000000 00:00 0 [vvar] 7ffc80c8a000-7ffc80c8b000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall] czl@czl-RedmiBook-14:~/Workspace/memory$选择进程1806:czl@czl-RedmiBook-14:~/Workspace/linux-compile/linux-5.4.128$ sudo cat /proc/1806/maps [sudo] password for czl: 557b0444b000-557b04453000 r-xp 00000000 08:08 789204 /usr/lib/gnome-shell/gnome-shell-calendar-server 557b04652000-557b04653000 r--p 00007000 08:08 789204 /usr/lib/gnome-shell/gnome-shell-calendar-server 557b04653000-557b04654000 rw-p 00008000 08:08 789204 /usr/lib/gnome-shell/gnome-shell-calendar-server 557b063b8000-557b064ab000 rw-p 00000000 00:00 0 [heap] 7f2044000000-7f2044021000 rw-p 00000000 00:00 0 7f2044021000-7f2048000000 ---p 00000000 00:00 0 7f204c000000-7f204c082000 rw-p 00000000 00:00 0 7f204c082000-7f2050000000 ---p 00000000 00:00 0 7f2050000000-7f2050021000 rw-p 00000000 00:00 0 7f2050021000-7f2054000000 ---p 00000000 00:00 0 7f2055f26000-7f2055f27000 ---p 00000000 00:00 0 7f2055f27000-7f2056727000 rw-p 00000000 00:00 0 7f2056727000-7f2056732000 r-xp 00000000 08:08 1185027 /lib/x86_64-linux-gnu/libnss_files-2.27.so 7f2056732000-7f2056931000 ---p 0000b000 08:08 1185027 /lib/x86_64-linux-gnu/libnss_files-2.27.so 7f2056931000-7f2056932000 r--p 0000a000 08:08 1185027 /lib/x86_64-linux-gnu/libnss_files-2.27.so 7f2056932000-7f2056933000 rw-p 0000b000 08:08 1185027 /lib/x86_64-linux-gnu/libnss_files-2.27.so 7f2056933000-7f2056939000 rw-p 00000000 00:00 0 7f2056939000-7f2056950000 r-xp 00000000 08:08 1184968 /lib/x86_64-linux-gnu/libnsl-2.27.so 7f2056950000-7f2056b4f000 ---p 00017000 08:08 1184968 /lib/x86_64-linux-gnu/libnsl-2.27.so 7f2056b4f000-7f2056b50000 r--p 00016000 08:08 1184968 /lib/x86_64-linux-gnu/libnsl-2.27.so 7f2056b50000-7f2056b51000 rw-p 00017000 08:08 1184968 /lib/x86_64-linux-gnu/libnsl-2.27.so 7f2056b51000-7f2056b53000 rw-p 00000000 00:00 0 7f2056b53000-7f2056b5e000 r-xp 00000000 08:08 1185029 /lib/x86_64-linux-gnu/libnss_nis-2.27.so 7f2056b5e000-7f2056d5d000 ---p 0000b000 08:08 1185029 /lib/x86_64-linux-gnu/libnss_nis-2.27.so 7f2056d5d000-7f2056d5e000 r--p 0000a000 08:08 1185029 /lib/x86_64-linux-gnu/libnss_nis-2.27.so 7f2056d5e000-7f2056d5f000 rw-p 0000b000 08:08 1185029 /lib/x86_64-linux-gnu/libnss_nis-2.27.so 7f2056d5f000-7f2056d67000 r-xp 00000000 08:08 1185018 /lib/x86_64-linux-gnu/libnss_compat-2.27.so 7f2056d67000-7f2056f67000 ---p 00008000 08:08 1185018 /lib/x86_64-linux-gnu/libnss_compat-2.27.so 7f2056f67000-7f2056f68000 r--p 00008000 08:08 1185018 /lib/x86_64-linux-gnu/libnss_compat-2.27.so 7f2056f68000-7f2056f69000 rw-p 00009000 08:08 1185018 /lib/x86_64-linux-gnu/libnss_compat-2.27.so 7f2056f69000-7f2056f7a000 r-xp 00000000 08:08 806472 /usr/lib/evolution-data-server/camel-providers/libcamelpop3.so 7f2056f7a000-7f2057179000 ---p 00011000 08:08 806472 /usr/lib/evolution-data-server/camel-providers/libcamelpop3.so 7f2057179000-7f205717a000 r--p 00010000 08:08 806472 /usr/lib/evolution-data-server/camel-providers/libcamelpop3.so 7f205717a000-7f205717b000 rw-p 00011000 08:08 806472 /usr/lib/evolution-data-server/camel-providers/libcamelpop3.so 7f205717b000-7f2057191000 r-xp 00000000 08:08 806470 /usr/lib/evolution-data-server/camel-providers/libcamelnntp.so 7f2057191000-7f2057391000 ---p 00016000 08:08 806470 /usr/lib/evolution-data-server/camel-providers/libcamelnntp.so 7f2057391000-7f2057392000 r--p 00016000 08:08 806470 /usr/lib/evolution-data-server/camel-providers/libcamelnntp.so 7f2057392000-7f2057393000 rw-p 00017000 08:08 806470 /usr/lib/evolution-data-server/camel-providers/libcamelnntp.so 7f2057393000-7f2057399000 r-xp 00000000 08:08 806474 /usr/lib/evolution-data-server/camel-providers/libcamelsendmail.so 7f2057399000-7f2057598000 ---p 00006000 08:08 806474 /usr/lib/evolution-data-server/camel-providers/libcamelsendmail.so 7f2057598000-7f2057599000 r--p 00005000 08:08 806474 /usr/lib/evolution-data-server/camel-providers/libcamelsendmail.so 7f2057599000-7f205759a000 rw-p 00006000 08:08 806474 /usr/lib/evolution-data-server/camel-providers/libcamelsendmail.so 7f205759a000-7f20575fc000 r-xp 00000000 08:08 806466 /usr/lib/evolution-data-server/camel-providers/libcamelimapx.so 7f20575fc000-7f20577fb000 ---p 00062000 08:08 806466 /usr/lib/evolution-data-server/camel-providers/libcamelimapx.so 7f20577fb000-7f20577fe000 r--p 00061000 08:08 806466 /usr/lib/evolution-data-server/camel-providers/libcamelimapx.so 7f20577fe000-7f20577ff000 rw-p 00064000 08:08 806466 /usr/lib/evolution-data-server/camel-providers/libcamelimapx.so 7f20577ff000-7f2057800000 ---p 00000000 00:00 0 7f2057800000-7f2058000000 rw-p 00000000 00:00 0 7f2058000000-7f2058021000 rw-p 00000000 00:00 0 7f2058021000-7f205c000000 ---p 00000000 00:00 0 7f205c000000-7f205c031000 rw-p 00000000 00:00 0 7f205c031000-7f2060000000 ---p 00000000 00:00 0 7f2060000000-7f2060021000 rw-p 00000000 00:00 0 7f2060021000-7f2064000000 ---p 00000000 00:00 0 7f2064035000-7f206403f000 r-xp 00000000 08:08 806476 /usr/lib/evolution-data-server/camel-providers/libcamelsmtp.so 7f206403f000-7f206423e000 ---p 0000a000 08:08 806476 /usr/lib/evolution-data-server/camel-providers/libcamelsmtp.so 7f206423e000-7f206423f000 r--p 00009000 08:08 806476 /usr/lib/evolution-data-server/camel-providers/libcamelsmtp.so 7f206423f000-7f2064240000 rw-p 0000a000 08:08 806476 /usr/lib/evolution-data-server/camel-providers/libcamelsmtp.so 7f2064240000-7f2064267000 r-xp 00000000 08:08 806468 /usr/lib/evolution-data-server/camel-providers/libcamellocal.so 7f2064267000-7f2064466000 ---p 00027000 08:08 806468 /usr/lib/evolution-data-server/camel-providers/libcamellocal.so 7f2064466000-7f2064468000 r--p 00026000 08:08 806468 /usr/lib/evolution-data-server/camel-providers/libcamellocal.so 7f2064468000-7f2064469000 rw-p 00028000 08:08 806468 /usr/lib/evolution-data-server/camel-providers/libcamellocal.so 7f2064469000-7f206446a000 ---p 00000000 00:00 0 7f206446a000-7f2064c6a000 rw-p 00000000 00:00 0 7f2064c6a000-7f2064c76000 r-xp 00000000 08:08 1051083 /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so 7f2064c76000-7f2064e75000 ---p 0000c000 08:08 1051083 /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so 7f2064e75000-7f2064e76000 r--p 0000b000 08:08 1051083 /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so 7f2064e76000-7f2064e77000 rw-p 0000c000 08:08 1051083 /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so 7f2064e77000-7f2064e78000 ---p 00000000 00:00 0 7f2064e78000-7f2065678000 rw-p 00000000 00:00 0 7f2065678000-7f2065679000 ---p 00000000 00:00 0 7f2065679000-7f2065e79000 rw-p 00000000 00:00 0 7f2065e79000-7f2065e7a000 ---p 00000000 00:00 0 7f2065e7a000-7f206667a000 rw-p 00000000 00:00 0 7f206667a000-7f2066683000 r-xp 00000000 08:08 1179744 /lib/x86_64-linux-gnu/libcrypt-2.27.so 7f2066683000-7f2066882000 ---p 00009000 08:08 1179744 /lib/x86_64-linux-gnu/libcrypt-2.27.so 7f2066882000-7f2066883000 r--p 00008000 08:08 1179744 /lib/x86_64-linux-gnu/libcrypt-2.27.so 7f2066883000-7f2066884000 rw-p 00009000 08:08 1179744 /lib/x86_64-linux-gnu/libcrypt-2.27.so 7f2066884000-7f20668b2000 rw-p 00000000 00:00 0 7f20668b2000-7f20668f8000 r-xp 00000000 08:08 795028 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0 7f20668f8000-7f2066af7000 ---p 00046000 08:08 795028 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0 7f2066af7000-7f2066afa000 r--p 00045000 08:08 795028 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0 7f2066afa000-7f2066afb000 rw-p 00048000 08:08 795028 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0 7f2066afb000-7f2066afc000 rw-p 00000000 00:00 0 7f2066afc000-7f2066b0a000 r-xp 00000000 08:08 795012 /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0 7f2066b0a000-7f2066d09000 ---p 0000e000 08:08 795012 /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0 7f2066d09000-7f2066d0a000 r--p 0000d000 08:08 795012 /usr/lib/x86_64-linu

相关新闻

从零基础到行业标杆:为什么安康中小企业选择安康鼎盛网站建设能少走五年弯路?

从零基础到行业标杆:为什么安康中小企业选择安康鼎盛网站建设能少走五年弯路?

在这个数字化浪潮席卷每一个角落的今天,咱们做实业的老板们,尤其是身在咱们安康这片山水秀美之地的创业者们,心里可能都有过这样的焦虑:手机微信能联系客户,但怎么显得更有“排面”?朋友圈能发广告,但怎么让客户觉得咱们是正规军而非散兵游勇?很多老友跟我聊天时都会叹…

2026/8/14 5:24:37 阅读更多 →
苏州初创企业票据管理一站式指南,新手创业老板必读

苏州初创企业票据管理一站式指南,新手创业老板必读

别等月底翻抽屉找票——票据管不好,账就是一笔糊涂账 很多初创老板对“票据”的理解就一句话:发票嘛,客户要我就开,采购给了我就收,月底一股脑扔给会计就行了。 但现实往往是——月底会计催票,你翻遍手机相…

2026/8/14 5:24:37 阅读更多 →
从本地化自研到效果可落地:2026华中区域GEO服务商TOP5实力拆解

从本地化自研到效果可落地:2026华中区域GEO服务商TOP5实力拆解

引言随着生成式 AI 搜索全面渗透华中地区企业客户决策链路,GEO(生成式引擎优化,Generative Engine Optimization)已成为武汉及周边城市企业抢占 AI 流量、构建区域品牌心智的核心战略工具。2026 年国内 AI 搜索月活突破 8.2 亿&am…

2026/8/14 5:24:37 阅读更多 →

最新新闻

MySQL优化器成本计算原理:从I/O与CPU成本到索引选择实战

MySQL优化器成本计算原理:从I/O与CPU成本到索引选择实战

1. 项目概述:为什么成本计算是MySQL优化的核心做MySQL优化,绕不开一个词:执行计划。我们经常用EXPLAIN看它,但很多人只是机械地看type是ALL还是index,看key有没有用到索引。这没错,但知其然更要知其所以然。…

2026/8/14 10:14:17 阅读更多 →
WarcraftHelper魔兽争霸3辅助工具使用教程:三步安装,告别卡顿、黑边与中文路径报错

WarcraftHelper魔兽争霸3辅助工具使用教程:三步安装,告别卡顿、黑边与中文路径报错

WarcraftHelper魔兽争霸3辅助工具使用教程:三步安装,告别卡顿、黑边与中文路径报错 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper …

2026/8/14 10:14:17 阅读更多 →
数据库主键设计:从自增ID到分布式ID生成器的选型与实战

数据库主键设计:从自增ID到分布式ID生成器的选型与实战

1. 项目概述数据库自增字段,这玩意儿几乎是每个后端开发者和数据库管理员(DBA)的“老熟人”了。乍一看,不就是个自动1的ID嘛,有什么好讲的?但真到了选型、设计或者排查问题的时候,你会发现这里面…

2026/8/14 10:14:17 阅读更多 →
2024年广州中小企业如何通过越秀网站建设公司打造高转化官网及避坑指南

2024年广州中小企业如何通过越秀网站建设公司打造高转化官网及避坑指南

在这个数字化浪潮汹涌的时代,如果你还认为拥有一个网站只是老板坐在办公室里拍脑袋决定的“面子工程”,那我建议你先把这篇干货看完。特别是当你正纠结于找哪家具体的服务商,或者对预算、效果充满疑虑时,这篇文章也许能帮你省下不少冤枉钱,少走很多弯路。今天我们不谈那些…

2026/8/14 10:14:17 阅读更多 →
Nginx SSL证书更换全流程:从原理到平滑更新实践

Nginx SSL证书更换全流程:从原理到平滑更新实践

1. 从一次凌晨告警说起:为什么SSL证书更换是运维的必修课 凌晨三点,手机屏幕突然亮起,一条来自监控系统的告警信息弹了出来:“SSL证书即将过期”。相信很多负责线上服务的运维或开发同学都经历过这种心跳加速的时刻。SSL证书过期…

2026/8/14 10:14:17 阅读更多 →
图像尺寸测量:从像素坐标到物理长度的转换原理与实践

图像尺寸测量:从像素坐标到物理长度的转换原理与实践

1. 数字图像中的尺寸测量 在计算机视觉、图像处理和工业检测等领域,从数字图像中准确测量物体的实际尺寸是一项基础而重要的任务。与直接用尺子测量物理世界不同,数字图像测量涉及两个关键坐标系:像素坐标系和物理坐标系。 本文将系统介绍&…

2026/8/14 10:13:16 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →