• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于本地代碼特征的Android惡意代碼檢測(cè)方法

      2018-06-15 01:17:46
      信息安全研究 2018年6期
      關(guān)鍵詞:控制流字節(jié)代碼

      何 平 胡 勇

      (四川大學(xué)電子信息學(xué)院 成都 610065) (721247751@qq.com)

      智能手機(jī)給人們的生活帶來(lái)巨大的變化,各種重要信息和業(yè)務(wù)由手機(jī)存儲(chǔ)和處理,使得手機(jī)越來(lái)越重要,也成為不法分子攻擊的目標(biāo).從2010年發(fā)現(xiàn)首個(gè)Android木馬程序以來(lái),Android下的惡意軟件數(shù)量急速增長(zhǎng),給用戶的數(shù)據(jù)安全帶來(lái)難以預(yù)測(cè)的風(fēng)險(xiǎn).根據(jù)360互聯(lián)網(wǎng)安全實(shí)驗(yàn)室發(fā)布的報(bào)告,僅在2017年第3季度,Android手機(jī)的新增惡意軟件數(shù)就高達(dá)188萬(wàn)個(gè),平均每天有大約2萬(wàn)新的Android惡意軟件出現(xiàn).增長(zhǎng)較快的Android惡意代碼主要是資源消耗、惡意扣費(fèi)和隱私竊取等類型,最近甚至出現(xiàn)了鎖屏和加密等勒索類型的惡意應(yīng)用.面對(duì)如此嚴(yán)重的威脅,檢測(cè)Android惡意代碼已成為信息安全領(lǐng)域的一個(gè)重要研究方向.

      1 研究現(xiàn)狀

      近年來(lái),各國(guó)專家學(xué)者提出了多種檢測(cè)Android惡意代碼的方法,主要分為靜態(tài)分析和動(dòng)態(tài)分析兩大類.

      靜態(tài)分析是指不運(yùn)行程序僅對(duì)Android應(yīng)用及其解析生成的文件進(jìn)行分析的方法.靜態(tài)分析的對(duì)象主要包括AndroidManifest.xml文件、Java源代碼、Dalvik字節(jié)碼和本地代碼,利用從這些文件或代碼中提取出的權(quán)限特征、文本特征以及API調(diào)用特征等來(lái)識(shí)別應(yīng)用是否包含惡意代碼.靜態(tài)分析具有快速、高效的優(yōu)點(diǎn),但對(duì)經(jīng)過(guò)代碼混淆和多態(tài)變形后的惡意代碼不太適用,需要做更多的工作.

      動(dòng)態(tài)分析是一種基于應(yīng)用程序運(yùn)行時(shí)行為的檢測(cè)技術(shù),通常需要修改Android系統(tǒng),以監(jiān)控該應(yīng)用對(duì)網(wǎng)絡(luò)、系統(tǒng)調(diào)用、文件和內(nèi)存的訪問(wèn),信息的訪問(wèn)模式及其處理行為等.通過(guò)分析這些行為是否正常來(lái)判斷其惡意性.動(dòng)態(tài)分析的優(yōu)點(diǎn)是不受代碼混淆和加密的影響,但需耗費(fèi)系統(tǒng)資源,對(duì)分析人員的技術(shù)能力要求也較高,不利于對(duì)大規(guī)模的應(yīng)用進(jìn)行檢測(cè).

      從Android應(yīng)用所包含的代碼中提取相應(yīng)特征進(jìn)行惡意代碼檢測(cè),已經(jīng)有較多的方法和研究.李寅等人[1]將DEX文件反編譯,并分析其Dalvik字節(jié)碼中調(diào)用的系統(tǒng)函數(shù).通過(guò)對(duì)每個(gè)系統(tǒng)函數(shù)分配不同的風(fēng)險(xiǎn)等級(jí),統(tǒng)計(jì)整個(gè)應(yīng)用中各系統(tǒng)函數(shù)出現(xiàn)的頻次,計(jì)算其加權(quán)平均值,以其值是否超過(guò)閾值判斷這個(gè)應(yīng)用是否是惡意應(yīng)用.李挺等人[2]通過(guò)提取Dalvik指令序列,然后以Smali代碼中的方法為單位將指令序列進(jìn)行形式化描述,并采用MOSS算法、閔可夫斯基距離以及編輯距離算法計(jì)算形式化描述后的代碼與已知惡意特征的相似度,并根據(jù)相似度比對(duì)結(jié)果判斷待測(cè)應(yīng)用是否含有惡意代碼.Kang等人[3]則提出了一種通過(guò)分析Dalvik字節(jié)碼頻率來(lái)對(duì)惡意代碼進(jìn)行檢測(cè)的方法.陳鐵明等人[4]從Dalvik字節(jié)碼序列中提取N-Gram特征,然后利用隨機(jī)森林對(duì)惡意代碼進(jìn)行檢測(cè)和分類.李自清[5]提出了一種利用函數(shù)調(diào)用圖來(lái)檢測(cè)Android惡意代碼的方法,通過(guò)反編譯DEX文件提取出函數(shù)調(diào)用圖,然后計(jì)算出函數(shù)調(diào)用圖的特征向量,利用得到的特征向量進(jìn)行惡意代碼的檢測(cè).

      上述方法都是從DEX文件中提取Dalvik字節(jié)碼的特征進(jìn)行惡意代碼檢測(cè),主要利用了Dalvik字節(jié)碼的文本特征、API調(diào)用特征和函數(shù)調(diào)用圖的特征,然后通過(guò)相似度比較或者機(jī)器學(xué)習(xí)的方法對(duì)惡意代碼進(jìn)行檢測(cè),以上方法并沒(méi)有提取SO文件包含的本地代碼的相關(guān)特征.同時(shí)有研究[6]表明現(xiàn)在86%的Android常用應(yīng)用都包含本地代碼.如果惡意應(yīng)用將其惡意代碼放入SO文件的本地代碼中,上述靜態(tài)檢測(cè)手段無(wú)法取得較好的檢測(cè)結(jié)果.

      針對(duì)上述方法沒(méi)有提取SO文件包含的本地代碼特征的問(wèn)題,本文提出一種基于本地代碼特征的Android惡意代碼靜態(tài)檢測(cè)方法,將待檢測(cè)應(yīng)用的DEX文件和SO文件轉(zhuǎn)化為ARM匯編代碼,并提取匯編代碼的控制流圖集合,將其與已知惡意應(yīng)用的控制流圖集合進(jìn)行相似性比較,得出它們的相似度.如果相似度大于某個(gè)閾值,則可以確定待檢測(cè)的Android應(yīng)用包含了惡意代碼.由于提取了SO文件中包含的代碼的特征,該方法的代碼覆蓋率比傳統(tǒng)的靜態(tài)檢測(cè)方法高.

      2 方法描述

      本文提出一種基于本地代碼特征的Android惡意代碼檢測(cè)方法,該方法通過(guò)提取Android應(yīng)用的本地代碼的控制流圖特征來(lái)檢測(cè)和分析惡意代碼,流程如圖1所示:

      圖1 檢測(cè)方法的流程

      2.1 ART虛擬機(jī)

      Android應(yīng)用程序包含的代碼通常分為DEX字節(jié)碼和預(yù)編譯的本地二進(jìn)制代碼,應(yīng)用通常運(yùn)行在Dalvik虛擬機(jī)上.Dalvik虛擬機(jī)采用和標(biāo)準(zhǔn)的JVM相同的實(shí)時(shí)編譯方法(JIT)來(lái)編譯程序,也就是在應(yīng)用運(yùn)行時(shí)進(jìn)行編譯.

      從Android4.4開(kāi)始,Google使用ART(Android runtime)替換了Dalvik虛擬機(jī).ART使用的是提前編譯方法(AOT),即在應(yīng)用安裝時(shí)進(jìn)行編譯.ART提高了應(yīng)用的運(yùn)行效率,并且減少了電量消耗,但是增加了應(yīng)用的安裝時(shí)間和占用的空間.ART將DEX文件中的Dalvik字節(jié)碼編譯生成一個(gè)后綴.oat的文件,該文件包含了Dalvik字節(jié)碼對(duì)應(yīng)的本地代碼.如圖2所示,利用ART的這一功能將Dalvik字節(jié)碼轉(zhuǎn)換成本地代碼.

      圖2 DEX文件生成本地代碼

      2.2 反匯編

      將本地代碼轉(zhuǎn)化為匯編代碼,需要進(jìn)行反匯編.常用的反匯編算法有2種:線性掃描算法和遞歸遍歷算法.線性掃描算法就是從第1個(gè)字節(jié)開(kāi)始依次進(jìn)行指令的反匯編,直到最后1個(gè)字節(jié).該方法的優(yōu)點(diǎn)是代碼覆蓋全面,但是如果代碼中混合有數(shù)據(jù),該方法不能有效區(qū)分代碼和數(shù)據(jù),會(huì)產(chǎn)生錯(cuò)誤的反匯編結(jié)果.使用線性掃描方式的反匯編工具有Windbg,objdump等.第2種方法是遞歸遍歷算法,以程序的控制流作為參考,只有一條指令被另一條指令引用,才會(huì)將這條指令反匯編.其優(yōu)點(diǎn)是能夠有效區(qū)分?jǐn)?shù)據(jù)和代碼,但是如果一個(gè)分支的目的地址不能靜態(tài)確定,就可能無(wú)法找到并反匯編有效的指令,結(jié)合其他方法來(lái)進(jìn)行反匯編處理可以達(dá)到很好的效果.IDA Pro使用了遞歸遍歷算法進(jìn)行反匯編,比使用線性掃描的反匯編器有更好的反匯編效果.根據(jù)需求,本文選擇遞歸遍歷算法進(jìn)行本地代碼的反匯編處理和程序控制流圖的生成.

      2.3 控制流圖匹配

      程序的控制流圖可以用來(lái)進(jìn)行源碼的相似性比較[7-8],本文將其應(yīng)用在惡意代碼的檢測(cè)中.將DEX文件通過(guò)ART Compiler生成的本地代碼和SO文件包含的本地代碼反匯編生成ARM匯編代碼,再以函數(shù)為單位轉(zhuǎn)化為控制流圖,并利用相應(yīng)的模式對(duì)控制流圖進(jìn)行注釋,生成經(jīng)過(guò)注釋的控制流圖集合,然后與惡意代碼樣本的控制流圖集合進(jìn)行相似性比較.

      2.3.1子圖同構(gòu)算法

      子圖同構(gòu)算法用于確定一個(gè)控制流圖是否包含另一個(gè)控制流圖,或者被另一個(gè)控制流圖包含.Garey等人[9]提出子圖同構(gòu)問(wèn)題是NP完全問(wèn)題,通常生成的程序控制流圖是稀疏圖,能在可接受的時(shí)間內(nèi)計(jì)算出結(jié)果.常用的子圖匹配算法有Ullmann算法[10]和VF2算法[11],在算法的時(shí)間復(fù)雜度上VF2算法要優(yōu)于Ullmann算法.

      本文采用VF2算法來(lái)實(shí)現(xiàn)程序控制流圖的子圖同構(gòu)計(jì)算.VF2的基本思想如下:

      若圖G1=(V1,E1)與圖G2=(V2,E2)同構(gòu),其中V1,V2表示圖G1,G2的節(jié)點(diǎn)集合,E1,E2表示邊的集合,則G1與G2必定存在映射M={(m,n)∈V1×V2},其中,m為圖G1的節(jié)點(diǎn),n為圖G2的節(jié)點(diǎn).

      該算法用狀態(tài)空間表達(dá)式(SSR)來(lái)表示確定映射函數(shù)的步驟.其中M(s)是M的子集,其中s表示每個(gè)狀態(tài).用狀態(tài)s到狀態(tài)s′的轉(zhuǎn)移來(lái)表示1對(duì)新的匹配的節(jié)點(diǎn)加入到當(dāng)前的狀態(tài)空間表達(dá)式.初始狀態(tài)為s0,則M(s0)=?.對(duì)于每個(gè)中間狀態(tài)s,算法會(huì)計(jì)算出可加入當(dāng)前狀態(tài)的候選節(jié)點(diǎn)對(duì)的集合P(s).對(duì)于P(s)中的每個(gè)節(jié)點(diǎn)對(duì),通過(guò)判斷是否滿足可行性規(guī)則F(s,n,m),若F(s,n,m)為真,則將節(jié)點(diǎn)對(duì)加入到M(s),從狀態(tài)s轉(zhuǎn)移到新的狀態(tài)s′,然后重復(fù)上述步驟.圖3展示了2個(gè)匹配的控制流圖,其中虛線表示匹配成功的部分.

      圖3 2個(gè)子圖同構(gòu)的控制流圖

      2.3.2模式匹配

      當(dāng)一個(gè)節(jié)點(diǎn)數(shù)較少的控制流圖(如只有3個(gè)節(jié)點(diǎn))與其他控制流圖作子圖同構(gòu)匹配時(shí),如果不考慮節(jié)點(diǎn)的屬性即節(jié)點(diǎn)中包含匯編語(yǔ)句,則會(huì)產(chǎn)生錯(cuò)誤的匹配結(jié)果,例如子圖匹配成功的某些節(jié)點(diǎn)中的匯編語(yǔ)句不同,所以僅根據(jù)子圖匹配的結(jié)果無(wú)法準(zhǔn)確判斷2個(gè)控制流圖是否匹配.有2種方法可以解決這個(gè)問(wèn)題:

      1) 比較控制流圖中已匹配的各個(gè)節(jié)點(diǎn)中的每條ARM匯編語(yǔ)句;

      2) 以指令和操作數(shù)類型為控制流圖節(jié)點(diǎn)的每條語(yǔ)句分配對(duì)應(yīng)的模式,然后對(duì)控制流圖的節(jié)點(diǎn)進(jìn)行模式匹配.

      由于ARM匯編有眾多的指令和不同的操作數(shù),方法1)會(huì)耗費(fèi)大量時(shí)間,所以我們使用方法2)按指令類型和操作數(shù)類型定義了18種模式,在反編譯生成ARM匯編代碼和控制流圖時(shí)注釋其中的匯編語(yǔ)句.該方法不僅能解決節(jié)點(diǎn)數(shù)較少時(shí)控制流圖的子圖同構(gòu)問(wèn)題,而且可以提高子圖同構(gòu)的計(jì)算效率,這18種模式如表1所示(操作數(shù)類型為空表示不以操作數(shù)的類型區(qū)分模式):

      表1 命令分類與18種模式

      在生成控制流圖時(shí),使用這些模式對(duì)各個(gè)節(jié)點(diǎn)模塊中的語(yǔ)句進(jìn)行注釋,生成帶注釋的控制流圖.圖4為一個(gè)經(jīng)過(guò)模式注釋的控制流圖.

      在進(jìn)行子圖匹配時(shí),2個(gè)控制流圖已匹配的每個(gè)節(jié)點(diǎn)中對(duì)應(yīng)的模式也必須完全匹配,才表示2個(gè)控制流圖匹配成功.

      圖4 模式注釋生成的控制流圖

      2.3.3惡意代碼相似性識(shí)別

      利用上文所述的方法,為匯編程序的每一個(gè)函數(shù)都生成帶有注釋的控制流圖,這樣就得到了一個(gè)Android應(yīng)用的控制流圖的集合.將這個(gè)集合作為Android應(yīng)用的特征與惡意代碼樣本生成的特征作匹配.如果一個(gè)應(yīng)用的控制流圖的集合中有一定比例的控制流圖和惡意代碼樣本的控制流圖匹配,則可以判斷這個(gè)應(yīng)用包含惡意代碼.

      定義待檢測(cè)應(yīng)用A與樣本應(yīng)用B的相似度SimilarityA,B,其計(jì)算公式如下:

      (1)

      NumofCFGSetB表示應(yīng)用B中控制流圖的總數(shù),NumofCFGSets表示應(yīng)用A與應(yīng)用B匹配的控制流圖總數(shù).如果一個(gè)待檢測(cè)應(yīng)用與惡意代碼樣本庫(kù)中的某個(gè)應(yīng)用的相似度SimilarityA,B大于某個(gè)閾值,則認(rèn)為這個(gè)應(yīng)用包含惡意代碼.

      3 實(shí)驗(yàn)分析

      本文使用Android ART提供的Compiler將Dalvik字節(jié)碼轉(zhuǎn)換為本地代碼,使用IDA Pro和編程進(jìn)行反匯編,最后通過(guò)編程實(shí)現(xiàn)控制流圖的注釋和匹配.

      實(shí)驗(yàn)所采用的Android惡意代碼樣本來(lái)自Drebin項(xiàng)目[12],正常樣本來(lái)源于Google Play隨機(jī)下載.實(shí)驗(yàn)從所有惡意代碼應(yīng)用樣本中隨機(jī)選擇70個(gè)組成惡意代碼樣本庫(kù),使用前文描述的方法得到每個(gè)樣本的控制流圖集合.然后再?gòu)氖S嗟膼阂鈽颖局须S機(jī)選取100個(gè)與從正常樣本中隨機(jī)選取的200個(gè)組成測(cè)試樣本集SampleSet1,使用同樣方法組成測(cè)試樣本集SampleSet2.處理2個(gè)測(cè)試樣本集生成每個(gè)樣本的控制流圖集合,然后取不同的閾值對(duì)SampleSet1進(jìn)行檢測(cè).圖5顯示了在取不同的閾值(threshold)時(shí),惡意代碼的檢測(cè)率TPR以及誤報(bào)率FPR.

      檢測(cè)率TPR定義為正確檢測(cè)出的惡意應(yīng)用的個(gè)數(shù)與總的惡意應(yīng)用的個(gè)數(shù)的比值,檢測(cè)率的計(jì)算公式如下:

      (2)

      其中,TP為被正確檢測(cè)出的惡意應(yīng)用的個(gè)數(shù),F(xiàn)N為被錯(cuò)誤地判斷成正常應(yīng)用的惡意應(yīng)用的個(gè)數(shù).誤報(bào)率FPR定義為被誤報(bào)為惡意應(yīng)用的正常應(yīng)用的個(gè)數(shù)與正常應(yīng)用的總數(shù)的比值.誤報(bào)率的計(jì)算公式如下:

      (3)

      其中,FP表示被錯(cuò)誤地判斷為惡意應(yīng)用的正常應(yīng)用的個(gè)數(shù),TN表示被正確檢測(cè)出的正常軟件的個(gè)數(shù).準(zhǔn)確率Accuracy的計(jì)算公式如下:

      (4)

      對(duì)圖5進(jìn)行分析,雖然閾值為20%時(shí),檢測(cè)的檢測(cè)率達(dá)到98%,但同時(shí)誤報(bào)率高達(dá)33%.隨著閾值的增加,發(fā)現(xiàn)檢測(cè)率和誤報(bào)率都呈現(xiàn)下降的趨勢(shì),綜合考慮檢測(cè)率和誤報(bào)率,采用60%作為本文實(shí)驗(yàn)的閾值.

      圖5 SampleSet1檢測(cè)結(jié)果分析

      利用該閾值對(duì)測(cè)試樣本集SampleSet2進(jìn)行檢測(cè),其檢測(cè)結(jié)果如表2所示.

      表2 SampleSet2的檢測(cè)結(jié)果

      根據(jù)式(2)~(4),計(jì)算得到該方法對(duì)于測(cè)試樣本集SampleSet2的檢測(cè)率為92%、誤報(bào)率為5%、準(zhǔn)確率為94%.實(shí)驗(yàn)結(jié)果表明,利用本文提出的方法能有效地檢測(cè)Android應(yīng)用中是否包含已知的惡意代碼,其惡意代碼檢測(cè)率能達(dá)到90%以上.

      使用靜態(tài)分析工具Androguard對(duì)樣本集SampleSet2進(jìn)行檢測(cè),將其檢測(cè)結(jié)果與本文方法的檢測(cè)結(jié)果作比較.其對(duì)比結(jié)果如表3所示:

      表3 與Androguard的對(duì)比結(jié)果

      使用表3中的檢測(cè)結(jié)果,計(jì)算出Androguard工具在檢測(cè)樣本集SampleSet2時(shí)的檢測(cè)率為67%,誤報(bào)率為3%,準(zhǔn)確率為87%.可以看出本文方法的檢測(cè)率和準(zhǔn)確率都要明顯優(yōu)于Androguard工具,而誤報(bào)率也在可接受的范圍內(nèi).

      4 結(jié) 語(yǔ)

      本文提出一種基于本地代碼特征的Android惡意代碼檢測(cè)方法,該方法將Android中的Dalvik字節(jié)碼通過(guò)ART提供的Compiler編譯為ARM本地代碼,與SO文件一起進(jìn)行反匯編生成的ARM匯編代碼和控制流圖,同時(shí)根據(jù)指令和操作碼的類型定義了18種模式來(lái)對(duì)控制流圖進(jìn)行注釋處理,最后以控制流圖為特征利用子圖匹配和模式匹配來(lái)進(jìn)行惡意性檢測(cè).與現(xiàn)有方法相比較,該方法覆蓋了應(yīng)用中的本地代碼,比現(xiàn)有方法的代碼覆蓋率高,而且提取的是匯編級(jí)的特征,能有效應(yīng)對(duì)Java層的代碼混淆.經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,上述方法能夠成功檢測(cè)出應(yīng)用是否包含已知惡意代碼,并且相對(duì)于Androguard有更高的檢測(cè)率和準(zhǔn)確率.

      在下一步工作中,需要結(jié)合Android應(yīng)用程序的其他特征,并且利用數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)相關(guān)方法,進(jìn)一步提高檢測(cè)的準(zhǔn)確率,此外還可研究對(duì)加固惡意應(yīng)用的檢測(cè).

      [1]李寅, 范明鈺, 王光衛(wèi). 基于反編譯的Android平臺(tái)惡意代碼靜態(tài)分析[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2012, 21(11): 187-189

      [2]李挺, 董航, 袁春陽(yáng), 等. 基于Dalvik指令的Android惡意代碼特征描述及驗(yàn)證[J]. 計(jì)算機(jī)研究與發(fā)展, 2014, 51(7): 1458-1466

      [3]Kang B, Kang B J, Kim J, et al. Android malware classification method: Dalvik bytecode frequency analysis[C]Research in Adaptive and Convergent Systems. New York: ACM, 2013: 349-350

      [4]陳鐵明, 楊益敏, 陳波. Maldetect:基于Dalvik指令抽象的Android惡意代碼檢測(cè)系統(tǒng)[J]. 計(jì)算機(jī)研究與發(fā)展, 2016, 53(10): 2299-2306

      [5]李自清. 基于函數(shù)調(diào)用圖的Android惡意代碼檢測(cè)方法研究[J]. 計(jì)算機(jī)測(cè)量與控制, 2017, 25(10): 198-201

      [6]Sun M, Tan G. NativeGuard: Protecting Android applications from third-party native libraries[C]Proc of the 2014 ACM Conf on Security and Privacy in Wireless & Mobile Networks. New York: ACM, 2014: 165-176

      [7]陳新. 基于程序控制流圖源代碼相似程度分析系統(tǒng)[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2013, 22(3): 144-147

      [8]呂博然, 吳軍華. 基于路徑序列相似度判別的程序克隆檢測(cè)方法[J].計(jì)算機(jī)工程與應(yīng)用, 2018, 54(2): 55-61

      [9]Garey M R, Johnson D S. Computers and Intractability: A Guide to the Theory of NP-Completeness[M]. San Francisco: W H Freeman, 1983: 208-209

      [10]Ullmann J R. An algorithm for subgraph isomorphism[J]. Journal of the ACM, 1976, 23(1): 31-42

      [11]Cordella L P, Foggia P, Sansone C, et al. A (sub)graph isomorphism algorithm for matching large graphs[J]. IEEE Trans on Pattern Analysis & Machine Intelligence, 2004, 26(10): 1367-1372

      [12]Arp D, Spreitzenbarth M, Hübner M, et al. DREBIN: Effective and explainable detection of Android malware in your pocket[C]Proc of Network and Distributed System Security Symposium. Reston: Internet Society, 2014

      猜你喜歡
      控制流字節(jié)代碼
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      抵御控制流分析的Python 程序混淆算法
      工控系統(tǒng)中PLC安全漏洞及控制流完整性研究
      電子科技(2021年2期)2021-01-08 02:25:58
      抵御控制流分析的程序混淆算法
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      簡(jiǎn)談MC7字節(jié)碼
      青岛市| 苏尼特右旗| 古浪县| 都匀市| 建昌县| 宿迁市| 浦县| 无棣县| 潞西市| 洪泽县| 金阳县| 穆棱市| 平定县| 大邑县| 鹤庆县| 开化县| 格尔木市| 红桥区| 缙云县| 双牌县| 平和县| 阳高县| 双峰县| 黎川县| 惠水县| 赤壁市| 都匀市| 岑巩县| 五指山市| 石首市| 永靖县| 洛浦县| 桂平市| 绍兴县| 左贡县| 叙永县| 伊通| 云南省| 禄丰县| 稷山县| 太保市|