吾愛破解 - LCG - LSG |安卓破解|病毒分析|001aa.com

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

搜索
查看: 9708|回復: 152

[原創] 一次小米手環BLE通信協議的逆向之旅

    [復制鏈接]
樓主
FinchK 發表于 2020-5-8 14:41 回帖獎勵

0x0 前言

时时彩平台​        純逆向新手,接觸逆向兩個月左右。

时时彩平台​        手頭有一個小米手環4NFC版本,內置小愛同學,能夠語音對話,進而控制智能家居,做一些操作如設置鬧鐘等。因對其實現原理好奇,并且想拓展其功能,遂逆向。百度只有Miband3之前的研究,到了Miband4的新功能,我應該還是第一個。

0x1 逆向前準備

​        首先,要想使用小米手環中的語音助手,手環必須和手機保持連接,并且小米運動APP要保持后臺運行。很顯然,小米手環并沒有內置語音識別的功能,猜測其應該是將聲音傳感器的數據發送給手機,然后手機進行語音識別,自然語義處理之后再發送給手環。

​        而在安卓中,想要實現BLE(低功耗藍牙)通訊,必須要調用

boolean android.bluetooth.BluetoothGatt.writeCharacteristic(BluetoothGattCharacteristic characteristic)

​        具體API可以參考Google的

时时彩平台​        我們就從這里開始入手。

0x2 開始逆向

时时彩平台​        我們使用Jadx打開小米運動APP,查看其源代碼,發現大部分代碼混淆得有點厲害,不過這不是問題。

​        我們直接使用代碼搜索功能搜索“writeCharacteristic”,發現了我們想要的結果。

​        此處省略代碼查找過程,最終我們找到了實際發送字節流的函數。

​        我們繼續向上查找引用,或許可以直接通過靜態分析就知道它的數據包結構呢?結果...

​        Jadx反編譯失敗了...Emm....不管了,直接Hook吧。

时时彩平台​        我們可以通過Hook發送數據包的函數,獲取它到底發送了啥。當然也可以直接Hook安卓API,防止遺漏。這里我們這里選擇了后者。

​        成功了!這些包的結構都很明顯,大部分都是字符串和一些整數,且沒有加密,通過多次對比和猜測就能知道,就不深入講了。接下來我們重點分析小愛同學的通訊協議和小米手環認證算法。

0x3 小愛同學的通訊協議

时时彩平台​        為了抓到小愛同學的交互包,我們還需要Hook藍牙的讀取字節流的函數。在安卓里面,這個過程是通過Callback實現的,那我們需要Hook那個Callback函數。稍微一查就找到了:

com.xiaomi.hm.health.bt.O00000oO.O00000Oo.onCharacteristicChanged(BluetoothGatt bluetoothGatt, BluetoothGattCharacteristic bluetoothGattCharacteristic)

时时彩平台​        這樣我們也能抓到從手環發到APP的包了:

时时彩平台​        因為我正向開發的經驗還比較多,這里直接猜測就知道,前幾個包僅涉及到一些狀態的交換,如開始錄音,切換UI等。后面的聲音數據的解密才是重點。

时时彩平台​        我觀察這些聲音數據包,發現第一個字節代表數據包類型,第二個字節代表數據包序號,應該是防止亂序之類的(不知道BLE有沒有亂序這一說)。接下來應該是聲音數據,初步猜測是PCM,事實證明不是,還有一層編碼。打印調用堆棧似乎是不可行的,我這里繼續靜態分析APP。

​        通過搜索一些關鍵詞,我找到一些有意思的ENUM。

​        注意,這里向下追溯onCharacteristicChanged函數是沒用的,因為大多數APP都是用Intent間接傳遞參數的,并不是直接調用解密函數。

​        

时时彩平台​        我們只要向上查找這個枚舉的引用,就找到了解析語音數據包的代碼。

​        嗯,看來是找對了。

时时彩平台​        這里是解密函數,可以看到他在遍歷一個數組,先將元素寫到一個文件中,接著又調用了另一個函數,我們跟進去看看。

​        這里果然調用了一個decode函數,并且通過字符串我們知道最后的格式應該是pcm,16k。解密之前應該是opus。

​        發現他調用了一個so,不過opus的解密代碼是開源的,我們直接用開源庫寫一個demo試試。

​        成功了!這樣我們就完成了從聲音數據的捕獲到聲音數據的解密。

0x4 小米手環認證算法

时时彩平台​        小愛同學等相關功能在未認證的情況下是不能使用的,所以有一個認證過程。

时时彩平台​        這個網上也有相關的文章,靜態動態結合分析就行了,不過提醒一點,那個驗證包的一個參數貌似變了,跟我網上搜索的文章講的不一樣。主要就是AES算法的data和key。

0x5 心得與后記

时时彩平台​        分析這個APP很簡單,整個過程花費了一個下午,也沒啥復雜的加密流程,軟件本身也沒保護,但還是學到很多,比如:

  1. 從軟件調用的API考慮,向上回溯查找

  2. 關鍵詞查找

  3. 動態靜態結合分析

  4. 时时彩平台掌握一些軟件設計模式(軟件工程這門學問),APP正向開發思路,能更快更好的猜想。

    其實,還有一個更簡單的方法,那就是Hook那個打印日志的函數,等我一波騷操作后才發現,小米運動的日志是真詳細(逃)。

    再貼一個和github老哥親切交談的圖,貌似小米手環要走向國際化了呢。



免費評分

參與人數 96吾愛幣 +91 熱心值 +85 收起 理由
思卿卿 + 1 我很贊同!
imaweno + 1 + 1 個個都是人才,說話又好聽。
shi128862 + 1 + 1 謝謝@Thanks!
jsang + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
DW32 + 1 我很贊同!
最喜歡又又了 + 1 + 1 用心討論,共獲提升!
PerfectFJH + 1 就看懂了最后一張圖
多德 + 1 我很贊同!
webber.yan + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
樂鹵類小沖兒 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
whychobits + 1 + 1 謝謝@Thanks!
匿名網友喲 + 1 + 1 謝謝@Thanks!
19950120 + 1 + 1 我很贊同!
Big_Orange + 1 + 1 你的手環即將被沒收
rubber_ball + 1 + 1 我很贊同!
純粹520 + 1 我很贊同!
剛打電話 + 1 + 1 用心討論,共獲提升!
xiahhhr + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
網友tb503 + 1 + 1 謝謝@Thanks!
wjsjwr + 1 厲害!
nulu + 1 我很贊同!
淋哉哉 + 1 + 1 已經處理,感謝您對吾愛破解論壇的支持!
ALCATEL + 1 + 1 用心討論,共獲提升!
lonely_coder + 1 + 1 用心討論,共獲提升!
love514415 + 1 + 1 鼓勵轉貼優秀軟件安全工具和文檔!
laohucai + 1 + 1 謝謝@Thanks!
YunYi1021 + 1 + 1 大佬
小小萊 + 1 + 1 謝謝@Thanks!
lintao199 + 1 + 1 用心討論,共獲提升!
夢溪筆談2048 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
bradbox + 1 鼓勵轉貼優秀軟件安全工具和文檔!
onepercent + 1 + 1 謝謝@Thanks!
bullshit + 1 + 1 謝謝@Thanks!
SureFire2 + 1 能不能改手環內置的步數,讓其翻倍(滑稽
liu2514 + 2 + 1 用心討論,共獲提升!
VERTMIN + 1 用心討論,共獲提升!
1759105749 + 1 + 1 已經處理,感謝您對吾愛破解論壇的支持!
yuweb + 1 + 1 吾愛破解都是人才
leewoosang + 1 + 1 我很贊同!
5rfn + 1 + 1 謝謝@Thanks!
dldl + 1 + 1 謝謝@Thanks!
stardust21 + 1 + 1 我很贊同!
w1zar6 + 1 + 1 用心討論,共獲提升!
yalolo + 1 + 1 老大這么牛逼
起個稀奇古怪的 + 1 + 1 用心討論,共獲提升!
rapheal + 1 熱心回復!
rourou1105 + 1 + 1 熱心回復!
都同學 + 1 + 1 謝謝@Thanks!
z_more + 1 + 1 熱心回復!
198FOR + 1 + 1 我很贊同!
冰課玏好喝 + 1 + 1 我很贊同!
jnez112358 + 1 + 1 謝謝@Thanks!
何枝可依 + 1 厲害,不知道能不能從軟件層面寫入id卡數據,買寫卡設備復制加密卡太特么貴.
難得清閑難得 + 1 + 1 我很贊同!
Owen_QAQ + 1 牛批
YAO21 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
wang956 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
zhyao2003 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
kicebeauty + 1 + 1 用心討論,共獲提升!
huahuali + 1 + 1 我很贊同!
chin688 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
malno + 1 + 1 牛🐮🍺🍻
aileki + 1 + 1 熱心回復!
行者orz + 1 + 1 熱心回復!
iamcjsyr + 1 + 1 用心討論,共獲提升!
醉鄉不怕套路深 + 1 + 1 謝謝@Thanks!牛批
pass101 + 1 + 1 用心討論,共獲提升!
魅夜 + 1 + 1 熱心回復!
洛寒楓 + 1 + 1 謝謝@Thanks!
Spwpun + 1 + 1 有點意思啊!
gaosld + 1 + 1 用心討論,共獲提升!
alt12920 + 1 感謝您的寶貴建議,我們會努力爭取做得更好!
chanchan + 1 + 1 我很贊同!
CraftDeadMRC + 1 + 1 大佬強無敵!
tzxinqing + 2 + 1 樓主快跑路吧,雷布斯已經在對你的手環遠程施法了,馬上屏幕就黑了
wgf8088 + 1 + 1 謝謝@Thanks!
獨行風云 + 1 + 1 我很贊同!
Cctv_Missx + 1 我很贊同!
神魔_吥信邪 + 1 + 1 我很贊同!
tht1994haha + 1 + 1 我很贊同!
mcyaas + 1 用心討論,共獲提升!
yangxin325 + 1 + 1 熱心回復!
雨落丶千寒 + 1 + 1 熱心回復!
7252986 + 1 + 1 厲害!
redstking + 1 + 1 小心,你手環電池沒了=。=
ck1397 + 1 + 1 熱心回復!
生有涯知無涯 + 1 我很贊同!
千與千尋了個啥 + 1 + 1 我很贊同!
sczsczscz66 + 1 我就是來水的
mhwuliao + 1 + 1 666
uubuhaowan + 1 + 1 厲害厲害
Chost + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
雪萊鳥 + 2 你幣有了!
Monitor + 2 + 1 佩服了
chenlian035 + 1 + 1 牛!
1yttoni + 1 + 1 臥槽,牛批!

查看全部評分

發帖前要善用論壇搜索时时彩平台功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

推薦
濤之雨 發表于 2020-5-9 17:11
姨姐很久前送我一個米3手環。。。
現在一直沒法用。。。

(上面那是積灰,屏幕被我擦了一下)
打開(實際上也關不掉,只能等沒電)就顯示鏈接app升級。
手機app連接時顯示請先恢復出廠設置,才能連接。。。

我。。。。(無語ing)
自從拿來升級后就成這樣。
然后。。。
推薦
tw柳葉·飄絮 發表于 2020-5-8 16:06
推薦
wsb0626 發表于 2020-5-8 16:09
看到最后我也是笑了,真有趣的啊,吾愛破解都是人才 都是大實話。
5#
syx594 發表于 2020-5-8 15:15
可以的,前來支持
6#
索白 發表于 2020-5-8 15:19
圍觀大佬
7#
kingwl 發表于 2020-5-8 15:27
牛皮!!!!!!!1
8#
不寫書怎周樹人 發表于 2020-5-8 15:42
可以可以,太厲害了。
9#
赤座燈里 發表于 2020-5-8 15:53
誒最后一張圖和我在隔壁論壇看的不一樣啊
10#
17773441534 發表于 2020-5-8 15:57
np,膜拜大佬
11#
yinyewangzi 發表于 2020-5-8 16:14
這技術可以啊,支持
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:本版塊禁止灌水或回復與主題無關內容,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|聯系我們|吾愛破解 - LCG - LSG ( )

GMT+8, 2020-5-25 12:47

Powered by Discuz!

时时彩平台Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表
时时彩平台官网-欢迎您 时时彩平台注册-爱问知识人 时时彩平台app-互动百科 时时彩平台投注-百科词条 超级快三-搜霸天下 时时彩平台邀请码-即可搜索 时时彩平台开户-新浪爱彩 彩神大发快三-一定牛 彩神大发快三官网-360云盘 彩神大发快三注册-百度耨米