最近在研究Android設備唯一碼問題,發現avbobo獲取的機制有點有趣,具體分析如下:
RN
其開發采用RN引擎開發的,核心代碼用js寫的,放在apk/assets/index.android.bundle檔案下,直接分析該檔案即可
Sdcard
經過測驗其打開后會在/sdcard目錄下新建一個以*.id.txt格式明名的檔案,里面內容格式如下: xxxxxxxxxxxxxxxxxxxxxxxxxxxx|xxxxxxxxx
ID生成演算法
在bundle檔案搜索該檔案名找到如下代碼

可知其內容生成規則為hash(uniqueId+"fake"+hash("nR9I694ZiYHDN3iqWtYYjJTui20W7hAK7OswKO0zeM"))+"|"+uniqueId
至于uniqueId如何生成的,往下看

RNDeviceInfo經過全域搜索定位到其所在類名為com.learnium.RNDeviceInfo.RNDeviceModule
具體獲取uniqueId如下

即設備的android_id值
而上面的hash經猜測并驗證為md5計算
因此最終的設備唯一碼生成規則如下:
md5(android_id+"fake"+md5("nR9I694ZiYHDN3iqWtYYjJTui20W7hAK7OswKO0zeM"))+"|"+android_id
總結
ID生成演算法簡單,就一個MD5計算,知道了演算法可以通過外部修改,不用修改應用程式,直接修改那個*id.txt檔案內容就行
建議采用更加復雜的hash演算法,無法憑其特征猜測出其采用的演算法
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/244694.html
標籤:其他
