• topjohnwu's avatar
    Application Component Granularity MagiskHide · b1afd554
    topjohnwu authored
    Before switching to the new MagiskHide implementation (APK inotify),
    logcat parsing provides us lots of information to target a process.
    We were targeting components so that apps with multi-processes
    can still be hidden properly.
    
    After switching to the new implementation, our granularity is limited
    to the UID of the process. This is especially dangerous since Android
    allow apps signed with the same signature to share UIDs, and many system
    apps utilize this for elevated permissions for some services.
    
    This commit introduces process name matching. We could not blanketly
    target an UID, so the workaround is to verify its process name before
    unmounting.
    
    The tricky thing is that any app developer is allowed to name the
    process of its component to whatever they want; there is no 'one
    rule to catch them all' to target a specific package. As a result,
    Magisk Manager is updated to scan through all components of all apps,
    and show different processes of the same app, each as a separate
    hide target in the list.
    
    The hide target database also has to be updated accordingly.
    Each hide target is now a <package name, process name> pair. The
    magiskhide CLI and Magisk Manager is updated to support this new
    target format.
    b1afd554
db.cpp 7.65 KB