日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android检测模拟器

發(fā)布時(shí)間:2023/12/8 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android检测模拟器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 前言

模擬器大家都應(yīng)該很熟悉的吧!現(xiàn)在市面上的模擬器多的數(shù)不清,例如:雷電模擬器、夜神模擬器等等。而因?yàn)槟M器所搭載的Android系統(tǒng)是閹割過(guò)的,一些安全相關(guān)的功能都沒(méi)有了。這就造成了一個(gè)安全問(wèn)題,在模擬器運(yùn)行的APP,可被動(dòng)態(tài)調(diào)試、抓取數(shù)據(jù)等,從而增大APP被破解、敏感數(shù)據(jù)遭泄露的風(fēng)險(xiǎn)。所以一些公司就會(huì)禁止用戶(hù)在模擬器中使用他們的APP。

那怎么檢測(cè)APP當(dāng)前運(yùn)行的環(huán)境是模擬器呢?接下來(lái)我就介紹一個(gè)方案給大家吧!

2. 解決方案

網(wǎng)上相關(guān)資料其實(shí)蠻多的,但是因?yàn)槟M器的技術(shù)也在逐步增長(zhǎng),所以有些資料其實(shí)并沒(méi)有完全有用,還是會(huì)出現(xiàn)無(wú)法檢測(cè)某些模擬器。

我在GitHub上發(fā)現(xiàn)了一個(gè)開(kāi)源項(xiàng)目 anti-emulator 。經(jīng)測(cè)試可以檢測(cè)出市面上較常用的模擬器。我將關(guān)鍵代碼提取了出來(lái),封裝成一個(gè)module,詳見(jiàn) lib_anti_emulator。

我封裝了兩個(gè)方法,如下所示:

/*** 檢測(cè)是否是模擬器** @param context 上下文* @return true:是模擬器;false:不是模擬器*/ public static boolean check(Context context) {try {return isTaintTrackingDetected(context) || isMonkeyDetected() || isDebugged()|| isQEmuEnvDetected(context);} catch (Exception e) {e.printStackTrace();return false;} }/*** 檢測(cè)是否是模擬器,安全模式<br>* 機(jī)制較弱,可避免部分真機(jī)被識(shí)別為模擬器,但是這也造成了有些模擬器無(wú)法被識(shí)別** @param context 上下文* @return true:是模擬器;false:不是模擬器*/ public static boolean checkSafely(Context context) {try {return isTaintTrackingDetected(context) || isMonkeyDetected() || isDebugged()|| isQEmuEnvSafeDetected(context);} catch (Exception e) {e.printStackTrace();return false;} }

這兩個(gè)方法的區(qū)分,看注釋大家也應(yīng)該很清楚了。而這也是 anti-emulator 的最大缺點(diǎn),可以說(shuō)是檢測(cè)機(jī)制太強(qiáng),或者說(shuō)某些真機(jī)系統(tǒng)被魔改了,造成真機(jī)會(huì)被錯(cuò)誤識(shí)別為模擬器的bug。所以如果使用 check 方法,為了避免用戶(hù)無(wú)法正常使用APP,就需要我們?cè)僮鲆恍┨幚?#xff0c;例如當(dāng)被檢測(cè)為模擬器時(shí),可以彈出窗口,引導(dǎo)用戶(hù)上報(bào)相關(guān)真機(jī)信息,然后后臺(tái)審核并記錄這些信息,將此用戶(hù)所使用的真機(jī)加入白名單,免檢測(cè)模擬器。

當(dāng)然如果APP不需要這么強(qiáng)的檢測(cè)機(jī)制的話(huà),那就用 checkSafely 方法就行了。

3. 演示

我在我的 BlogDemo 中已加入演示代碼,感興趣的可以去看看。下面是演示的相關(guān)內(nèi)容,演示環(huán)境是雷電模擬器。

3.1 標(biāo)準(zhǔn)模式

能夠正確檢測(cè)模擬器,提示“是模擬器”。

3.2 安全模式

不能夠正確檢測(cè)模擬器,提示“不是模擬器”。PS:雷電模擬器的仿真程度真高,所以平時(shí)大家調(diào)試APP的時(shí)候,如果不想用真機(jī),可以試試?yán)纂娔M器哦!比起 Android Studio 自帶的模擬器,不會(huì)那么吃 CPU 和內(nèi)存。


如果想進(jìn)一步交流和學(xué)習(xí)的同學(xué),可以加一下QQ群哦!

總結(jié)

以上是生活随笔為你收集整理的Android检测模拟器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。