mac_permission定制

mac_permissions.xml文件提供在安装应用时的强制控制(MMAC),通过识别X.509证书将seinfo标签与APP关联起来从而当Zygote启动一个APP时为它分配正确的域(domain)。

AOSP的example:

<?xml version="1.0" encoding="utf-8"?>
<policy>
    <!-- Platform dev key in AOSP -->
    <signer signature="@PLATFORM" >
        <seinfo value="platform" />
    </signer>
    <!-- All other keys -->
    <default>
        <seinfo value="default" />
    </default>
</policy>

signature的值在insertkeys.py执行后会被真正的证书中的内容base16之后的值所替换。用post_process_mac_perms和setool来扩展

生成过程还支持添加额外的字段去允许设备具体化他们的实体.


关于post_process_mac_perms:

这个脚本可以让你想mac_permissions.xml中添加没有的app证书。你可以把一个你想给予单独seinfo的APP的签名用这个脚本添加进去

post_process_mac_perms -s netapps -d ./APK -f mac_permissions.xml

-d后面是存有你APK的目录

执行前:

<?xml version="1.0" encoding="utf-8"?>
<policy>
    <signer signature="- certificate here -" ><seinfo value="platform"/></signer>
    <default><seinfo value="default"/></default>
</policy>
执行后:
<?xml version="1.0" encoding="utf-8"?>
<policy>
    <signer signature="- certificate here -" ><seinfo value="platform"/></signer>
    <default><seinfo value="default"/></default>
    <signer signature="- certificate here -"><seinfo value="netapps"/></signer>
</policy>


关于setool:功能跟上面的类似 但是好像AOSP并没有提供


好的现在我们再回到自己的mac_permissions.xml

<?xml version="1.0" encoding="utf-8"?>
<policy>
    <!-- NET_APPS key and seinfo for SE4A-NetClient & SE4A-NetServer apps. -->
    <signer signature="@NET_APPS" >
        <package name="com.se4android.netclient" >
            <seinfo value="netclient" />
        </package>
        <package name="com.se4android.netserver" >
            <seinfo value="netserver" />
        </package>
    </signer>
</policy>


在安装APP时会尝试匹配APP的签名 若匹配则此APP会获得对应的seinfo供下一层external/sepolicy/seapp_contexts使用而再这一层seinfo会有它对应的domain和type这样就可以转到类似selinux的处理机制中去了~



本文由Hack Blog原创,如需转载注明原文链接

作者:wesly 分类:Android 浏览:3839 评论:3
留言列表
访客
访客 大神对手机很有研究我的wifi老是获取ip咋办  回复
访客
访客 多半是AP设置了固定IP 没开开启自动分配IP吧  回复
访客
访客 大神这个post_process_mac_perms脚本在哪里啊?是自己写的吗?能不能发给我一下啊?  回复
发表评论
来宾的头像