AirTag是一款蓝牙无线追踪器,看起来像一个围棋棋子,配对体验与AirPods非常相似。 AirTag结合了蓝牙和UWB精确定位技术。它可以利用内置的蓝牙低功耗芯片发出信号,由附近“查找”网络中的苹果设备检测到该信号,然后将其坐标信息发送到iCloud以供用户定位。大概位置。其内置的苹果U1超宽带芯片也让AirTag具备了精准搜索的能力。在一定范围内,手机会指示AirTag的方向,并精确显示到米,解决了最终找到物品的距离问题。不过,要使用此功能,您需要配备U1芯片的同款iPhone。

AirTag内置2032纽扣电池,用户可以自行更换。如果每天播放四次声音并进行精确搜索,则可以使用一年以上。当电池电量低时,手机会收到通知。不过AirTag不支持AR搜索,可以在有效范围内被Siri唤醒。

那么奥地利高级工程师Adam Catley对苹果AirTag的逆向分析结果是什么呢?我们来看看吧~

1. AirTag的主要特点和发现

除了用于UWB 的Apple U1 芯片外,AirTag 还使用现成的组件;适用于BLE 和NFC 的流行nRF52832,待机电流消耗仅为2.3A,可提供超过10 年的潜在电池寿命;每天早上更新BLE地址04:00和公钥,每15分钟更新广播数据的最后一个字节;离开主人设备3天后进入丢失模式,丢失模式下每6小时发出噪音,可检测到移动,等待移动加速度计每10秒采样一次,一旦检测到移动则每0.5采样一次加速度计秒20 秒。

除此之外,远离其所有者设备时每2 秒发送一次BLE 广播,靠近其所有者设备时BLE 连接间隔为1 秒,nRF 需要至少~1.9V 电池电压才能启动,32Mbit 闪存未加密,nRF 编程接口(SWD) 可通过测试点轻松访问并解锁。

2. 背景

该研究旨在了解Apple 在其最新的29 美元低价产品中使用的电子设计和安全方法。

调查的方面有:

支持的设备有:iOS 14.5系统。

3、软件

目前,AirTag 可以进入的主要状态有:

未注册:当AirTag 是全新的、已重置或已从FindMy 网络中删除时,它每33 毫秒广播一次并等待连接。

初始化:AirTag 正在注册Apple ID,生成公钥/私钥,并与连接到AirTag 的iOS 设备共享它们。

已连接:所有者的设备在范围内并且不会生成广播。

已断开连接:所有者的设备超出范围,每2000 毫秒广播一次身份。

不同步:AirTag 与其所有者的设备分离后重新启动时会发生这种情况。与断开连接类似,但丢失了绝对时间,因此该事件与开机以来的时间有关。身份重置为其初始值。

丢失:进入断开连接或不同步状态后3 天开启。每6小时进入“等待移动”状态。

等待运动:加速度计每10 秒采样一次,直到检测到运动。

声音警报:从连接的设备或通过检测运动接收播放声音长达20 秒的指令。

精确查找:在“已连接”状态下由所有者的设备触发,并被声音警报覆盖

4. 硬件

拆除

由于电路板很薄并且焊接到塑料托盘上,因此移除电路板可能会造成损坏。

修订

经过多次拆卸,发现顶层铜层上的电路板标记发生了变化。如果可以确定早期生产运行没有启用所有安全功能来锁定设备,这将很有用。

右下角的数字看起来像制造数据代码(例如,“2920 17”可能是2020 年第29 周,第17 批)。从可用样本中获得的信息是:

美国设备在2920、3020、3120范围内;

欧洲是5220,几个月后;

亚洲版是1021,几个月后,距离发布只有几周了;

左侧3个大焊盘的左侧也有一个字母,可能与下面的U1芯片有关。在欧洲的设备上为A 和3 位数字,在世界其他地区的设备上为C。

丝印层上有一个常数值820-01736-A,看起来像内部Apple电路板零件号和修订版(A)。

董事会概览

主板包含带有BLE 和NFC 功能的Nordic nRF52832 SoC,以及32MHz 和32.768kHz 晶体; Apple U1 UWB 收发器;兆易创新GD25LE32D 32Mbit NOR闪存;博世BMA280加速度计;美信MAX98357AEWL音频放大器; TI TPS62746 DC-DC 降压转换器; TI TLV9001IDPWR运算放大器; 100uF电解电容(5x)等

测试点

TP#

类型

描述

1

扬声器

音圈的一端

5

电源

VCC2输入(3V)

6

电源

VCC1输入(3V)

7

电源

地面

19

闪存

数据录入

20

闪存

数据输出

21

闪存

VCC (1.8V) 为闪存供电

22

闪存

时钟时钟

23

闪存

CS

29

电源

接地(带Apple标志)

30

射频

快速恢复时间

31

调试

斯沃

35

调试

时钟信号

36

调试

SWDIO

38

扬声器

音圈的另一端

天线

AirTag 内部共有三个天线,分别是:

1. 低功耗蓝牙(左)- 2.4GHz

2. NFC(中)- 13.56MHz

3.超宽带(右)——6.5-8GHz

所有三个天线均通过激光直接成型蚀刻到一块塑料中,然后焊接到边缘周围的电路板上。 NFC 天线在塑料板的另一侧也有一条短迹线(连接到两端的过孔),用于将线圈的内端连接回电路板。

扬声器

音圈粘在塑料外壳上,充当分离器。由于磁铁是静止的,当线圈通电时,它会前后移动以产生声音,起到扬声器的作用。

无论是否连接音圈,AirTag 的操作都是相同的。

离开所有者的设备3 天后,如果检测到移动,扬声器将发出长达20 秒的响亮蜂鸣声。它将在接下来的6 个小时内保持沉默,直到等待再次移动。

即使没有连接音圈,播放声音的功耗也是待机时的3000 倍,约为8mA。这可能是因为nRF 必须使用音频样本快速更新DAC。在播放丢失状态的AirTag 噪声时,电流(黄色)与相应的声波(蓝色)同步绘制:

电源

有两个电池正极端子,都需要施加3V 电压才能激活AirTag。

然而,只有左侧电池端子为电子设备供电。右侧端子上的电压被感测,但在所有模式下仅消耗约50nA。

电路板顶部边缘周围的5 个100uF 电容器可在取出电池的情况下使设备保持开机状态几秒钟,如果短时间内连续取出电池5 次,这可能有助于重置过程。

AirTag 在重新连接电源后不会保留当前时间,直到重新连接到其所有者设备为止。

低功耗蓝牙(BLE)

nRF52832 支持BLE 5.2,并具有单个2.4GHz 天线。 Nordic SoftDevice用于实现BLE堆栈,可能是S112型号。

5. 广播数据

本节将介绍AirTag 注册到FindMy 网络时的蓝牙活动。

地址类型:随机静态(每日变化,公钥前6 个字节)

广播PDU 类型:可连接非定向广播(ADV_IND)

广播周期:2000ms

广播传输时间:4ms(包括唤醒)

字节

价值

描述

0

0x1E

广播数据长度:31(允许的最大长度)

1

0xFF

广播数据类型:制造商特定数据

2-3

0x004C

苹果标志

4

0x12

Apple 负载类型指示FindMy 网络广播

5

0x19

Apple 有效负载长度(31-6=25=0x19)

6

0x10

状态字节

7-29日

改变

FindMy 网络使用的EC P-224 公钥。每天都在变化

30

0-3

ECC公钥第一个字节的高2位

31

改变

加密计数器值?每15 分钟更改为随机值

根据苹果的记录,BLE 广播数据包含NIST EC P-224 公钥。密钥至少有28+1个字节长,但广播数据中只改变了23+1个字节。另外6个字节被巧妙地用作设备的蓝牙地址。这就是Apple 将公钥安装在单个BLE 数据包中的方式。

似乎还有一种方法可以预测未来蓝牙地址的一部分,但这需要更多的后续调查。

Apple 可能正在使用身份验证来阻止非Apple 设备连接到AirTags,因为连接很快就会被AirTags 终止。

未注册的行为

当AirTag 未注册到FindMy 网络时,它具有类似的行为,但使用其默认设备地址以33 毫秒的间隔进行广播,并使用不同的Apple 有效负载。

字节

价值

描述

0

0x1E

广播数据长度:31(允许的最大长度)

1

0xFF

广播数据类型:制造商特定数据

2-3

0x004C

苹果标志

4

0x07

指的是FindMy 设备的Apple 负载类型?

5

0x19

Apple 有效负载长度(31-6=25=0x19)

6-31

改变

尚未调查

超宽带广播(UWB)

“Pin Look”状态使用苹果的U1 和单个天线进行超宽带通信。目前对苹果设计的定制芯片知之甚少。

超科普高级工程师逆向分析苹果AirTags

它可能包含处理器,因为闪存芯片包含nRF52832 不支持的64 位ARM 指令。

U1 位于标记为USI 的模块内部(AirTag 模块标记可以在此处看到)。 AirTags 中的数据包看起来与iPhone 11 等其他Apple 设备中的数据包不同。

左边是iPhone 11 的USI 模块的内部,右边是AirTag 较小模块的内部,没有前端和天线巴伦(现在位于电路板上)。可以看到U1是两个模块中的黑色方形芯片,上面有几行标记。两者的U1 芯片照片显示相同的标记TMKA75。

FCC测试报告:

UWB 通道5 (6.5GHz) 和9 (8GHz); 500MHz带宽; BPSK调制; 1 个天线(上图)。

测试精确查找功能给人的印象是,UWB 仅用于测量到AirTags 的距离,而不是方向。 AirTag 只需从其单个天线每约60 毫秒发送一个脉冲。接收器或发射器需要多个天线来根据相位距离测量方向。 BLE 5 通过AoA 和AoD 支持。

近场通信(NFC)

AirTag 使用nRF52832 的NFC-A 外设以只读模式实现NXP MIFARE Plus(类型4)标签。 NFC天线位于白色盖板后面,如上图所示。

NFC 用于让任何找到AirTags 的人都可以识别所有者,即使他们使用的是Android 设备。

仅当AirTag 由电池供电时才能读取标签。它仅包含一个URL,用于唯一标识AirTag,具体取决于其当前状态。

未注册

当AirTag 是全新的、重置的或从FindMy 网络中删除时,存储在标签上的URL 是固定的,并且值不会更改。它遵循以下格式:

https://found.apple.com/airtag?pid=5500b=00pt=004cfv=00100e10dg=00z=00bt=A0B1C2D3E4F5sr=ABCDEF123456bp=0015

范围

价值

描述

PID

5500

AirTag 产品ID?

00

电池有关?

004c

UWB精确跟踪/寻找版本?

00100e10

固件版本?

dg

00

诊断代码?

z

00

未知

BT

XXXXXXXXXXXX

默认蓝牙地址(十六进制)

高级

XXXXXXXXXXXX

标签的序列号(字母数字)

BP

0015

蓝牙协议版本?

尽管此数据唯一标识AirTag,但如果您在设备注册之前距离足够近以读取NFC(小于10 厘米),则设备将使用您可以访问的标识符:

设备的蓝牙地址bt 也用于此状态下的广播(因此可以在设置过程中被附近的人捕获)。

sr 序列号不是秘密。它印在设备电池下方(以及设备包装上的贴纸上)。也可以通过访问URL获取。

Apple 服务器接受值和参数名称的任意组合。唯一使用的是sr,它可以为空。

https://found.apple.com/airtag?sr=

我只有一个AirTag,因此无法比较不同设备的值。对于单个单元,这些值在电源周期、长时间运行、重置和不同模式下都是恒定的。

挂号的

AirTag 通过iOS 设备注册到FindMy 网络后,URL 标签将稍微更改为以下格式:

https://found.apple.com/airtag?pid=5500b=00pt=004cfv=00100e10dg=00z=00pi=793f8d9fccaa91c3c177f32acf47160656873168d72f070cd925ce97

范围

价值

描述

PID

5500

AirTag 产品ID?

00

电池有关?

004c

UWB精确跟踪/寻找版本?

00100e10

固件版本?

dg

00

诊断代码?

z

00

未知

圆周率

改变

公共身份(224 位长)

总之,参数bt、sr 和bp 已被删除,并由单个匿名标识符pi 代替(不要与pid 混淆)。

pi 是唯一改变的参数。当蓝牙地址和/或广播数据发生变化时,它至少每15 分钟更新一次。它可能是当前的P-224 公钥,或密钥的SHA-224 哈希值。它与应包含公钥的BLE 广播数据不匹配。

同样,大多数参数都是可选的。唯一的要求是pi 有效。

Apple 服务器可以通过某种方式将其连接到特定设备,因为页面会显示相应的序列号(甚至可能在AirTag 注册之前),以及所有者丢失的消息和电话号码(如果有的话)。苹果声称不会存储有关AirTags 的任何信息,只有所有者的手机和AirTags 才能生成其轮换公钥。

6. 隐私问题

虽然与AirTag 类似的其他产品也可用于跟踪人员,但这些产品的全球覆盖范围远不及FindMy 网络那么广泛,这使得AirTag 对不良行为者更具吸引力。这就是为什么隐私功能很重要。

考虑到这些已知的安全问题,让我们来看看苹果声称的AirTags 隐私功能与实际使用情况的比较。

1. 声音警报不太常见且不太可能发生

“在移动时,任何与注册者分离一段时间的AirTags 都会发出声音来提醒附近的人。”

实际情况:分开三天后,声音警报才会响起。即便如此,这也只会在设备检测到移动后才会发生,并且最多需要20 秒。 AirTag 每次将安静6 小时,等待移动以发出声音警报,可持续长达20 秒。

影响:放置在某人物品中的AirTags 可用于在其不知情的情况下跟踪他们至少3 天,足以在日常生活中识别他们的身份。此后,在正常通勤期间(两次移动触发之间的间隔大于或等于6小时),每天最多可以发出噪音40秒。移动警报可能会被嘈杂的交通或覆盖AirTags 的物品所遮挡。

解决方案:更频繁或随机地检查持续时间较长的声音警报,或者等待移动停止(在结束警报之前)以增加被听到的机会。苹果暗示声音警报周期是可以调整的。

2. 可以禁用扬声器

“长时间不在注册者身边的AirTags 也会播放声音。”

实际情况:无需拆卸即可断开线圈。在未连接音圈的情况下,AirTag 仍可正常运行。我观察到所有与声音相关的事件仍然发生,但没有发出声音。此外,如果AirTags 更新为检查开路,则也可以移除磁铁。

影响:不良行为者可以轻松修改AirTags 并将设备放入某人的物品中,以在他人不知情的情况下跟踪目标位置,并且AirTags 不会发出声音来提醒他们设备的存在。

解决方案:使用加速度计来测量振动,否则会因声音过大而引起振动,或者添加麦克风。

3.全天定位追踪

“AirTag 传输的蓝牙信号标识符会经常轮换,以防止不必要的位置跟踪。”

“该标志每天会轮换几次。”

实际发生的情况:当Airtag 与所有者的设备分离时,它会更改其身份,并在当地时间上午04:00 每天广播一次。或者,在电源循环后每24 小时更换一次。 Apple 要求蓝牙配件每15 分钟更改一次身份,包括其他FindMy 设备。然而,AirTag 仅更新其BLE 广播数据的最后一个字节。 BLE 设备地址和公钥在第二天之前保持不变。注意:AirTag 仅在离开其所有者的设备时才开始广播,并在断开连接时生成新的身份。

影响:蓝牙范围内的任何人都可以在当天剩余时间内唯一识别和跟踪AirTag 用户。这可能包括去他们家。

解决方案:更新公钥的频率高于每24 小时一次,但低于每15 分钟一次,以便“AirTag 发现与您一起移动”警报功能仍然可用。

4. 位置可能被欺骗

“如果AirTag 与其所有者分离并且超出蓝牙范围,FindMy 网络可以帮助跟踪它。”

事实:AirTags 只能由通过BLE 广播数据包广播的公钥来识别。此身份没有任何身份验证。任何附近的BLE 设备都可以捕获这些身份并重放它们,使其看起来像真正的AirTag。

影响:不良行为者可能会窃取AirTagged 个人物品并在取出电池之前记录当前的公共身份。该身份可以重播到目标位置的任何BLE 设备,为所有者提供错误的搜索区域。

解决方案:机主手机上的FindMy 应用程序可以过滤掉快速移动、不切实际的位置报告或使用过期身份的报告。苹果的后端无法做到这一点,因为位置报告是端到端加密的。由于有效负载大小有限,很难将身份验证标签附加到BLE 数据包上。

5. 可以避免“AirTag 发现与您一起移动”警报

“如果发现未知的AirTag 与您一起移动,FindMy 将通知您。”

事实:对于使用iOS 设备的人来说,这是一个很棒的功能。然而,当靠近其他AirTag 所有者时,如果没有误报,此功能很难可靠。为了避免这种情况,当iOS 设备到达已知位置(例如家中)时,Apple 会检查剩余的未知AirTags。

影响:AirTags 可以重新编程,以比触发此警报的时间窗口(而不是默认的24 小时)更频繁地更改其身份。或者,可以记录多个有效身份,并对自定义BLE 设备进行编程,以足够快地循环这些身份,以显示为多个不同的AirTags 并避免触发警报。

解决方案:这很难修复,但允许用户选择最适合他们触发警报的时间窗口。

6.位置记录可解密

“FindMy 网络是端到端加密的,因此只有设备的所有者才能访问其位置数据。”

实际情况:苹果解释说,用于生成新身份的私钥对在设备之间同步。这意味着AirTags 需要在没有合适的安全存储的情况下存储秘密。注意:Apple 可能修改了FindMy 加密机制,使其更适合AirTag 不安全的硬件,并且仅存储公钥。

影响:可以分析丢失的AirTags 并从内存中提取私钥。由此可以计算出公钥以下载所有者的位置记录并使用现在已知的私钥进行解密。

解决方案:仅存储公钥,或将密钥限制在易失性存储器中。我所看到的行为表明AirTag 可能会在有限的范围内执行此操作,至少直到它与所有者分离3 天,然后在电源周期之间保持其身份。

7. 安全问题

AirTags 令人惊讶地缺乏基本的安全控制,导致设备上的任何数据似乎都无法防止篡改或信息泄露。苹果知道这一点,所以他们必须相信这不仅仅是一个威胁。

nRF52832

未受保护的内部存储器

nRF52832 具有访问端口保护(APPROTECT)。这将禁止通过SWD 访问调试端口并阻止读取内部闪存。 AirTags 已确认此安全功能已启用。

然而,众所周知,这种保护很容易受到旁道攻击,并且可以通过所有nRF52 器件上的电压毛刺来绕过。在AirTag 上,很容易在靠近测试焊盘的电路板顶部找到故障引脚。

我们可以假设Apple 已经意识到了此漏洞,因为该漏洞已于2020 年第二季度披露。此时AirTag 开发周期已接近尾声,因此尚不清楚Apple 是否或如何解决此风险。

FindMy 设备使用的隐私机制使用有据可查的加密技术,因此不依赖于固件机密性。然而,苹果宣传的其他隐私功能可以被禁用,提取蓝牙配对密钥以连接到所有者的手机,或者运行完全定制的固件。

(缺乏)安全启动

修改固件后仍然可以启动。这表明固件的签名未根据受信任的Apple 证书进行检查。

无线更新

目前尚不清楚是否通过DFU 对OTA 更新映像进行签名检查。如果没有,这可能会带来许多严重的可能性,例如远程禁用隐私功能、提取私钥,甚至恶意固件作为蠕虫将自身传播到任何附近的AirTags。

不安全的储存

32Mbit NOR 闪存未加密,包含多种资产。

nRF52832 不具有任何安全存储功能。

目前尚不清楚U1是否具有安全存储能力。

FindMy 根私钥对是否存储以及存储在何处尚待确认。

模块

缩小AirTags 以跟踪其他设备

AirTags 可以做得更小以适应其他设备吗?

主机设备的电池用于提供电力,设备外壳通过连接音圈充当扬声器的振膜。在保留所有功能的同时可以实现的最小尺寸是:

版本

直径

高的

贮存

32毫米

8.0毫米

拆卸

26毫米

3.3毫米

遥控

我通过将AirTags 添加到经常放错地方的物品(遥控器)来证明这个想法是可行的。所有功能均被保留。

信用卡

Andrew Ngai 将拆卸下来的AirTags 改造成了信用卡的形状,这样他就可以追踪他的钱包。

使用自定义声音

AirTag 激活和丢失时发出的声音可以更改吗?

需要调查原始音频文件(以及它们的存储位置)是否以编程方式即时使用或生成。

启动声音由3kHz 左右的多个频率组成。地图:

添加对Android 设备的支持

可以修改固件以允许Android 设备连接。但仍需要Apple ID 才能使用FindMy 网络来验证加密位置历史记录的下载。

电池寿命

AirTag配备松下CR2032锂纽扣电池。其标称容量和电压分别为225mAh和3V。

当AirTag 空闲时,我测量了电池上的2.3A 负载。数据表显示,在如此小的负载下,预期容量几乎是整个225mAh。 AirTag 的供电电压至少为2V,与电池的2.0V 截止电压配合良好。

如果设备永远不会退出待机状态,则最大电池寿命至少为11 年。

根据数据表,考虑到nRF52832 仅使用1.9A (1.8V) 来在待机状态下运行RTC,能够实现2.3A 待机电流令人印象深刻。这意味着电路的其余部分设计得非常高效,最大限度地减少泄漏并主动关闭或移除未使用的组件(例如U1 和闪存)的电源。

蓝牙广播

0.4mA 唤醒并准备就绪。 3 个广告通道(37、38、39) 上的6-7mA BLE TX。总事件长度约为4 毫秒。每2000 毫秒发生一次

1 毫秒/格(水平)。 1mA/格(垂直)。

精确搜索

在~25mA 处有一个5ms 宽的尖峰,随后是在~4mA 处的50ms 基极电流。每30 毫秒发生一次BLE 连接事件。

用户评论

﹎℡默默的爱

哇,高级工程师逆向分析苹果AirTags,这太酷了!我一直对这类技术感兴趣,希望看到更多细节。

    有19位网友表示赞同!

我怕疼别碰我伤口

逆向分析这种高科技产品,真的很厉害啊。我虽然不懂技术,但觉得这种探索精神值得学习。

    有9位网友表示赞同!

寻鱼水之欢

苹果AirTags的逆向分析,听起来很有挑战性。高级工程师们辛苦了,期待看到更多成果分享。

    有16位网友表示赞同!

算了吧

逆向分析苹果AirTags,这个话题好吸引我。我一直在关注苹果产品的技术细节,希望这篇博文能给我带来新知识。

    有11位网友表示赞同!

゛指尖的阳光丶

逆向分析苹果AirTags,感觉这个工程师一定很专业。我也想学习这方面的知识,这篇博文给了我很大的启发。

    有8位网友表示赞同!

日久见人心

高级工程师逆向分析苹果AirTags,这种深度剖析真的很厉害。我期待看到更多类似的技术分析。

    有7位网友表示赞同!

残花为谁悲丶

逆向分析苹果AirTags,这让我对科技产生了浓厚的兴趣。希望这篇博文能让我对这类产品有更深入的了解。

    有20位网友表示赞同!

玻璃渣子

逆向分析苹果AirTags,这样的技术揭秘真的很吸引人。我也想尝试逆向分析,但感觉难度太大。

    有19位网友表示赞同!

爱情的过失

高级工程师逆向分析苹果AirTags,这种逆向思维太强大了。我也想学习这种技术,但不知道从何入手。

    有8位网友表示赞同!

漫长の人生

苹果AirTags的逆向分析,让我对技术有了新的认识。逆向工程师们真的很厉害,希望他们能继续分享更多知识。

    有7位网友表示赞同!

古巷青灯

逆向分析苹果AirTags,感觉这个工程师对技术的研究真的很深入。我也想了解逆向工程,这篇博文给了我很大帮助。

    有10位网友表示赞同!

别悲哀

逆向分析苹果AirTags,这种技术揭秘让我对苹果产品有了新的认识。希望工程师们能继续分享更多精彩内容。

    有19位网友表示赞同!

一笑抵千言

高级工程师逆向分析苹果AirTags,这种逆向思维真的很神奇。我也想学习逆向工程,但感觉自己水平不够。

    有20位网友表示赞同!

夏日倾情

逆向分析苹果AirTags,感觉这个工程师一定对技术有着深厚的功底。我也想向他学习,但不知道如何开始。

    有11位网友表示赞同!

安好如初

苹果AirTags的逆向分析,这个话题太有意思了。我也想尝试逆向分析,但不知道能否达到工程师的水平。

    有5位网友表示赞同!

丢了爱情i

逆向分析苹果AirTags,这篇博文让我对逆向工程有了更深的理解。希望工程师们能继续分享更多经验。

    有8位网友表示赞同!

太易動情也是罪名

高级工程师逆向分析苹果AirTags,这种技术揭秘让我对科技产生了浓厚的兴趣。希望看到更多类似的分析。

    有12位网友表示赞同!

半梦半醒半疯癫

逆向分析苹果AirTags,这个工程师太厉害了。我也想学习逆向工程,但感觉难度太大,不知道如何下手。

    有20位网友表示赞同!

花海

苹果AirTags的逆向分析,感觉这个工程师真的很专业。我也想了解逆向工程,这篇博文给了我很大的帮助。

    有18位网友表示赞同!

标签: