Android netlink&svc 获取 Mac方法深入分析

本文深入探讨了通过Linux的Netlink协议在Android系统中获取网卡MAC地址的方法,详细介绍了Netlink的原理和特性,以及如何绕过权限限制直接获取信息。在Android中,通过Netlink连接获取网卡信息的过程涉及getifaddrs方法,以及防止recv函数被hook的安全封装技巧,包括使用syscall和内联汇编。文章还提到了Android 8.1及以上版本的seccomp安全机制及其对系统调用的影响。
摘要由CSDN通过智能技术生成

前言

今天主要介绍的是通过内核通讯的方式获取设备网卡mac指纹,主要通过netlink的方式和内核通讯去获取mac网卡地址 。

这种方式可以直接绕过android的权限。

在不给app授权的时候也可以直接获取到网卡信息。因为很难进行mock,所以很多大厂app也都是采用这种办法去获取。

netlink简介:

Netlink是linux提供的用于内核和用户态进程之间的通信方式。

  • 但是注意虽然Netlink主要用于用户空间内核空间的通信,但是也能用于用户空间的两个进程通信
  • 只是进程间通信有其他很多方式,一般不用Netlink。除非需要用到Netlink的广播特性时。
  • NetLink机制是一种特殊的socket,它是Linux特有的,由于传送的消息是暂存在socket接收缓存中,并不为接受者立即处理,所以netlink是一种异步通信机制。系统调用和ioctl是同步通信机制。

一般来说用户空间和内核空间的通信方式有三种:

proc

ioctl

Netlink

而前两种都是单向的,但是Netlink可以实现双工通信

Netlink协议基于BSD socket和AF_NETLINK地址簇(address family)。

使用32位的端口号寻址(以前称为PID),每个Netlink协议(或称作总线,man手册中则称之为netlink family),通常与一个或者一组内核服务/组件相关联,如N

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值