Android 权限是如何强制执行的?

发布于 2024-10-19 21:02:26 字数 247 浏览 0 评论 0原文

如果我在 JNI C 方法中调用 socket() 函数,应用程序仍然会因权限错误而失败。如果我在 AndroidManifest.xml 中添加使用权限行,问题就得到解决。

所以看来 Android 权限检查没有在 Dalvik 虚拟机中实现,因为我正在调用本机 C 函数并且仍然受到检查。我想知道如何在 Android 内核中执行检查,或者如何使用 ptrace 之类的东西跟踪应用程序以拦截每个系统调用,或以任何其他方式。非常感谢。

If I call socket() function in JNI C methods, the application will still fail with a permission error. And if I put a uses-permission line in AndroidManifest.xml, the problem is fixed.

So it seems Android permission check is not implemented in Dalvik virtual machine since I'm calling a native C function and still gets checked. I would like to know how where check is performed, in Android kernel, or the application is traced with something like ptrace to intercept every system call, or any other way. Many thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一萌ing 2024-10-26 21:02:26

检查由 Linux 内核执行,使用组成员身份来确定访问权限。

如果您查看zygote fork代码 VM,您可以使用 setgroups() 设置补充组 ID 来查看它。如果您在应用程序框架代码中稍微追踪一下,您可以看到它在哪里确定权限并将它们传递给 forkAndSpecialize()。

The checks are performed by the Linux kernel, using group membership to determine access rights.

If you look in the zygote fork code in the VM you can see it using setgroups() to set the supplementary groups IDs. If you chase it around a bit in the app framework code you can see where it determines the permissions and passes them down to forkAndSpecialize().

天煞孤星 2024-10-26 21:02:26

本机代码在 SDK 应用程序使用的同一沙箱中运行,因此受到与 SDK 应用程序相同的安全模型的约束。

请参阅下载 Android NDK

如果您编写本机代码,您的
应用程序仍然被打包成
.apk 文件,它们仍然在里面运行
设备上的虚拟机。
基本的 Android 应用程序
型号不变。

Native code runs in the same sandbox that SDK apps use and are therefore subject to the same security model as SDK apps.

See Download the Android NDK:

If you write native code, your
applications are still packaged into
an .apk file and they still run inside
of a virtual machine on the device.
The fundamental Android application
model does not change.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文