Skip to content

MASTG-TECH-0029: Obter Bibliotecas Nativas Carregadas

Usando Mapas de Memória do Processo

O arquivo /proc/<pid>/maps contém as regiões de memória atualmente mapeadas e suas permissões de acesso. Utilizando este arquivo, podemos obter a lista das bibliotecas carregadas no processo.

# cat /proc/9568/maps
12c00000-52c00000 rw-p 00000000 00:04 14917                              /dev/ashmem/dalvik-main space (region space) (deleted)
6f019000-6f2c0000 rw-p 00000000 fd:00 1146914                            /data/dalvik-cache/arm64/system@framework@boot.art
...
7327670000-7329747000 r--p 00000000 fd:00 1884627                        /data/app/com.google.android.gms-4FJbDh-oZv-5bCw39jkIMQ==/oat/arm64/base.odex
..
733494d000-7334cfb000 r-xp 00000000 fd:00 1884542                        /data/app/com.google.android.youtube-Rl_hl9LptFQf3Vf-JJReGw==/lib/arm64/libcronet.80.0.3970.3.so
...

Usando Frida

Você pode recuperar informações relacionadas ao processo diretamente do Frida CLI usando o comando Process. Dentro do comando Process, a função enumerateModules lista as bibliotecas carregadas na memória do processo.

[Huawei Nexus 6P::sg.vantagepoint.helloworldjni]-> Process.enumerateModules()
[
    {
        "base": "0x558a442000",
        "name": "app_process64",
        "path": "/system/bin/app_process64",
        "size": 32768
    },
    {
        "base": "0x78bc984000",
        "name": "libandroid_runtime.so",
        "path": "/system/lib64/libandroid_runtime.so",
        "size": 2011136
    },
...