Android 逆向Android 系统文件分析 ( /proc/pid 进程号对应进程目录 | oom_adj | maps | smaps | mem | task | environ )(代码片

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 逆向Android 系统文件分析 ( /proc/pid 进程号对应进程目录 | oom_adj | maps | smaps | mem | task | environ )(代码片相关的知识,希望对你有一定的参考价值。





一、/proc/pid_num 进程号对应进程信息文件



在 /proc 目录下 , 有许多以整数命名的文件 ;

这些整数都是进程号 ;

1|walleye:/proc # ls
1     1334  198   231   253   28    318  370  417  469  517 588  71   813 922         keys
10    14    199   23138 25331 280   3182 371  418  47   518 59   715  814 927         kmsg
100   149   19998 232   25391 281   319  372  419  470  519 590  72   82  928         kpagecount
1008  15    2     233   254   2817  32   373  420  471  52  592  720  821 93          kpageflags
101   150   20    23340 255   282   3207 374  421  472  522 5951 723  823 94          loadavg
1015  151   200   23341 25506 283   321  375  422  473  523 598  729  826 941         locks
102   152   20000 23342 2558  284   322  376  423  474  524 599  73   829 942         mdstat
1023  15329 201   23350 25584 2848  323  377  424  475  525 6    730  83  945         meminfo
1024  16    202   23354 256   285   324  378  425  476  526 60   731  830 946         misc
1028  1628  2024  23355 257   286   325  379  426  477  527 600  732  831 947         modules
103   1645  20275 23356 258   287   326  38   4260 478  528 602  74   84  95          mounts
104   1654  203   234   25844 2871  327  380  427  479  529 603  748  845 950         net
1048  16867 204   235   25852 2876  328  381  428  48   53  604  75   848 958         pagetypeinfo
105   17    205   236   25887 288   329  382  429  480  530 61   750  849 9607        partitions
106   1708  206   237   259   289   33   383  43   481  531 610  751  85  962         sched_debug
107   17695 207   238   25936 29    330  384  430  482  532 614  753  86  963         schedstat
108   1775  208   23808 25946 290   331  385  431  483  533 616  754  87  964         scsi
11    17851 2086  23855 25954 291   332  386  432  484  534 617  755  870 97          self
110   1814  209   239   260   292   333  387  433  485  535 618  756  871 98          softirqs
111   184   21    2391  26020 293   338  388  434  486  536 62   757  873 983         stat
1110  1849  210   23937 26021 294   339  389  435  487  537 625  758  877 985         swaps
112   185   211   23967 26086 295   343  39   436  488  538 626  759  878 986         sys
113   1850  21123 23993 261   296   344  390  437  489  539 63   76   879 99          sysrq-trigger
11348 1851  21137 23997 26159 297   345  391  438  49   54  637  761  88  999         thread-self
11349 186   212   24    262   298   346  392  439  490  540 638  762  880 asound      timer_list
114   18691 213   240   26209 299   347  393  44   491  542 639  764  881 ath_pktlog  timer_stats
115   187   21399 241   26248 2990  348  394  440  494  543 64   765  882 buddyinfo   tty
11529 18751 214   24133 26268 3     349  395  441  495  544 640  766  884 bus         uid
116   188   2150  242   26298 30    35   396  442  496  546 641  767  885 cgroups     uid_cpupower
117   18838 21537 24217 263   300   350  397  443  499  547 646  768  889 cld         uid_cputime
1176  18865 217   243   26320 301   351  398  444  5    548 65   7686 89  cmdline     uid_io
118   189   218   24327 26346 302   352  40   445  500  549 650  769  890 config.gz   uid_procstat
1184  1895  219   24378 26365 303   353  401  446  501  55  652  77   891 consoles    uid_time_in_state
1185  19    22    24397 264   304   354  402  447  502  550 655  770  897 cpuinfo     uptime
119   19048 220   244   265   3048  355  4022 45   503  551 656  771  898 crypto      version
1191  19060 221   245   266   305   356  403  450  504  552 657  772  9   debugdriver vmallocinfo
12    19088 222   24510 267   306   357  404  451  505  553 667  774  90  device-tree vmstat
120   191   223   246   268   3078  358  405  453  5050 554 669  78   900 devices     zoneinfo
121   19120 224   247   269   308   359  406  454  506  555 67   781  909 diskstats
1213  1915  22417 248   27    309   36   407  455  507  556 677  784  91  driver
122   192   225   24836 270   31    361  408  456  508  56  679  787  910 execdomains
123   1924  226   249   271   310   362  409  457  509  564 68   79   912 fb
1259  193   22686 24977 272   311   363  41   459  51   565 683  791  913 filesystems
12843 19313 22695 24992 273   312   364  410  46   510  566 684  795  914 fs
13    194   227   25    274   313   365  411  460  511  568 685  798  915 interrupts
1315  19489 228   250   275   31359 366  412  461  512  57  688  8    917 iomem
1316  195   229   251   276   314   367  413  462  513  571 69   801  918 ioports
1331  196   23    25122 277   315   368  414  463  514  574 7    804  919 irq
1332  197   230   252   278   316   369  415  464  515  586 70   807  92  kallsyms
1333  19791 23051 25299 279   317   37   416  465  516  587 7022 81   921 key-users


1、进程查询


执行 ps -ef 命令 , 可以查看当前所有进程 , 这些进程对应的 PID 就是上述 /proc/ 目录下的所有整数对应的文件 ;

在 /proc/ 目录下使用 ls -l | grep 31359 命令 , 查询 31359 进程号对应的文件 , 该 /proc/31359 进程信息文件对应 ps -ef 输出的如下进程信息 ; 腾讯 QQ 进程对应的进程号是 31359 , 对应的进程信息文件是 /proc/31359 文件 ;

u0_a296      31359   730 2 09:52 ?        00:04:44 com.tencent.mobileqq


2、进程目录


进入 /proc/31359 目录中 , 有如下文件 :

walleye:/proc # cd 31359
walleye:/proc/31359 # ls
attr       concurrent_active_time exe       maps       ns            root         stat          timerslack_ns
auxv       concurrent_policy_time fd        mem        oom_adj       sched        statm         wchan
cgroup     coredump_filter        fdinfo    mountinfo  oom_score     schedstat    status
clear_refs cpuset                 io        mounts     oom_score_adj smaps        syscall
cmdline    cwd                    limits    mountstats pagemap       smaps_rollup task
comm       environ                map_files net        personality   stack        time_in_state
walleye:/proc/31359 #


3、进程启动命令 / 包名


/proc/31359/cmdline 文件内容 : 进程应用对应的包名 ;

walleye:/proc/31359 # cat cmdline
com.tencent.mobileqq

查看 /proc/1/cmdline 文件内容 , 1 进程号对应的进程的 cmdline 文件中 , 显示的是 /init 可执行文件 , 这是个应用程序 , 这是 android 系统启动时 , Linux 初始化 Android 环境时 , 调用到的进程 ;

walleye:/proc/1 # cat /proc/1/cmdline
/init

4、oom_adj 进程优先级


查看 /proc/31359/oom_adj 文件内容 : 16 , 这是进程的优先级 , 在之前进行进程保活时 , 分析过该参数 ; oom_adj 值越小 , 进程优先级越高 , 越不容易被杀死 ;

walleye:/proc/31359 # cat oom_adj
16

查看 /proc/31359/oom_adj 文件内容 : 该文件展示进程所使用到的内存 ;


5、maps 进程内存使用概况


查看 /proc/1/maps 文件内容 : init 进程对应的内存使用情况 ;


6、smaps 进程内存使用详情


查看 /proc/1/smaps 文件内容 : 这是进程使用内存的详细说明 , 比 maps 信息更详细 ; 内存的实际大小 Size: 2008 kB , 真正使用的大小 Rss: 428 kB ;

这是声明了 2008kB 内存 , 只使用了 428 kB 内存 , 一旦使用了更多的内存 , 会触发缺页中断 , 由系统补上空缺的内存 , 然后结束中断 , 继续执行 ;


7、mem 进程内存映射


mem 是进程的内存映射文件 , 通过 smaps 可以获取各个模块的地址 , 如下面的 7fcf430000-7fcf451000 , 这些地址是进程内存中的偏移地址 ;

7fcf430000-7fcf451000 rw-p 00000000 00:00 0                              [stack]
Size:                132 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:                  12 kB
Pss:                  12 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:        12 kB
Referenced:           12 kB
Anonymous:            12 kB
AnonHugePages:         0 kB
Shared_Hugetlb:        0 kB
Private_Hugetlb:       0 kB
Swap:                 28 kB
SwapPss:              28 kB
Locked:                0 kB
VmFlags: rd wr mr mw me gd ac

将 mem 看做一个文件 , 使用 fseek 跳转到对应偏移地址中 , 可以读取对应地址内存中的数据 ;

Android 逆向时 , 该文件很重要 ;


8、task 子线程


查看 /proc/31359/task 目录内容 : task 目录是该进程的子线程 , 下面是腾讯QQ 的子线程 ;

1|walleye:/proc/31359 # ls
attr       comm                   cwd     io        mountinfo  oom_adj       root         stack   task
auxv       concurrent_active_time environ limits    mounts     oom_score     sched        stat    time_in_state
cgroup     concurrent_policy_time exe     map_files mountstats oom_score_adj schedstat    statm   timerslack_ns
clear_refs coredump_filter        fd      maps      net        pagemap       smaps        status  wchan
cmdline    cpuset                 fdinfo  mem       ns         personality   smaps_rollup syscall
walleye:/proc/31359 # cat task/
cat: task/: Is a directory
1|walleye:/proc/31359 #
1|walleye:/proc/31359 # cd task/
walleye:/proc/31359/task # ls
13090 16652 2015 2381  31370 31389 31484 31504 31563 31666 31696 31731 31766 31791 31831 31870 32482 5933
1484  16663 2084 2440  31371 31395 31493 31505 31564 31667 31697 31733 31774 31792 31834 31876 32500 5934
1485  1702  2104 31359 31372 31396 31494 31507 31566 31668 31699 31741 31777 31793 31838 31877 32545 5935
16427 1733  2113 31364 31373 31397 31495 31508 31580 31678 31700 31744 31778 31808 31844 31931 32557 5942
16429 1841  2120 31365 31377 31399 31496 31509 31589 31680 31701 31751 31779 31810 31845 32240 32603
16430 1842  2125 31366 31379 31408 31497 31512 31592 31685 31702 31752 31780 31823 31846 32241 3711
16434 1918  2226 31367 31380 31409 31498 31514 31617 31687 31703 31753 31783 31826 31848 32242 5555
16442 1945  2273 31368 31381 31410 31502 31522 31653 31693 31704 31757 31785 31828 31857 32243 5565
16456 2013  2374 31369 31388 31413 31503 31538 31654 31694 31710 31765 31790 31830 31868 32340 5566
walleye:/proc/31359/task #


9、environ 环境变量


查看 /proc/31359/environ 文件内容 : 该文件内容是该应用环境变量配置 ;

walleye:/proc/31359 # cat environ
PATH=/sbin:/system/sbin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbinDOWNLOAD_CACHE=/data/cacheANDROID_BOOTLOGO=1ANDROID_ROOT=/systemANDROID_ASSETS=/system/appANDROID_DATA=/dataANDROID_STORAGE=/storageEXTERNAL_STORAGE=/sdcardASEC_MOUNTPOINT=/mnt/asecBOOTCLASSPATH=/system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/bouncycastle.jar:/system/framework/apache-xml.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/android.hidl.base-V1.0-java.jar:/system/framework/android.hidl.manager-V1.0-java.jar:/system/framework/framework-oahl-backward-compatibility.jar:/system/framework/android.test.base.jar:/system/framework/com.google.vr.platform.jarSYSTEMSERVERCLASSPATH=/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/com.android.location.provider.jarANDROID_SOCKET_zygote_secondary=12walleye:/proc/31359 #
walleye:/proc/31359 #

以上是关于Android 逆向Android 系统文件分析 ( /proc/pid 进程号对应进程目录 | oom_adj | maps | smaps | mem | task | environ )(代码片的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 系统文件分析 ( Android 系统 root 环境准备 | 查看 Android 根目录信息 )

Android 逆向Android 系统文件分析 ( Android 系统 root 环境准备 | 查看 Android 根目录信息 )

Android 逆向Android 系统文件分析 ( cmdline 系统启动参数文件 | crypto 密码算法信息文件 | devices 设备信息文件 )

Android 逆向Android 系统文件分析 ( cmdline 系统启动参数文件 | crypto 密码算法信息文件 | devices 设备信息文件 )

Android 逆向Android 系统文件分析 ( 外部存储设备文件 | sbin 命令程序目录 | dev 字符设备目录 )

Android 逆向Android 系统文件分析 ( 外部存储设备文件 | sbin 命令程序目录 | dev 字符设备目录 )