• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于LLVM 的Android 應(yīng)用程序加固方法

    2021-05-28 06:04:10江秋語(yǔ)殷芙萍
    現(xiàn)代計(jì)算機(jī) 2021年11期
    關(guān)鍵詞:基本塊控制流字符串

    江秋語(yǔ),殷芙萍

    (1.四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065;2.上海理工大學(xué)管理學(xué)院,上海200082)

    0 引言

    Android 平臺(tái)的開源特性使它在全球智能手機(jī)市場(chǎng)占據(jù)主導(dǎo)地位[1]。然而,近90%的Android 應(yīng)用程序中存在重打包的現(xiàn)象,嚴(yán)重侵犯了開發(fā)者的知識(shí)產(chǎn)權(quán)。由于Java 類文件和DEX 文件保留了大部分的語(yǔ)義信息,攻擊者使用逆向工具可以輕而易舉地進(jìn)行破解以獲取程序的源代碼。

    為解決此問(wèn)題,常用混淆技術(shù)對(duì)Android 應(yīng)用程序進(jìn)行加固。代碼混淆技術(shù)是一種代碼轉(zhuǎn)換機(jī)制,通過(guò)將易讀的代碼或數(shù)據(jù)進(jìn)行保留語(yǔ)義的轉(zhuǎn)換、重組和整理來(lái)加大代碼分析難度,達(dá)到保護(hù)軟件安全的目的。但是對(duì)Java 代碼進(jìn)行混淆會(huì)大大降低程序的性能,為了解決這個(gè)問(wèn)題,本文提出了一種基于LLVM 的Android應(yīng)用程序的混淆方法,利用LLVM 將DEX 文件中的Java 函數(shù)轉(zhuǎn)化為本地代碼,相比于Java 代碼,本地代碼具有更少的語(yǔ)義信息和更快的加載速度,能有效增加攻擊者分析的難度,減少混淆帶來(lái)的性能損失。

    1 相關(guān)工作

    近年來(lái),由于本地代碼具有更少的語(yǔ)義信息和更快的加載速度的特點(diǎn),Android 應(yīng)用保護(hù)的研究方向也逐漸轉(zhuǎn)向本地代碼的保護(hù),研究人員開始結(jié)合代碼混淆技術(shù)和虛擬化保護(hù)方法來(lái)保護(hù)Android 應(yīng)用中的本地代碼。

    Vivek Balachandran 等人[2]提出一種針對(duì)Java 層代碼的混淆保護(hù)方法,利用切片技術(shù)將函數(shù)劃分為多個(gè)代碼片段,通過(guò)pack 和switch 指令將代碼片段的控制流平展,同時(shí)插入垃圾代碼擴(kuò)展分支語(yǔ)句來(lái)增強(qiáng)其控制流復(fù)雜程度,為了防止符號(hào)執(zhí)行方法恢復(fù)混淆后的控制流,使用try 和catch 指令來(lái)隱藏控制流的跳轉(zhuǎn)。但僅僅增加控制流的復(fù)雜程度不能很好地增加攻擊者分析的難度,而且對(duì)APK 內(nèi)所有基本塊進(jìn)行切片并進(jìn)行混淆會(huì)導(dǎo)致很大的性能開銷,因此只能選擇部分關(guān)鍵函數(shù)進(jìn)行保護(hù)。

    Kyeonghwan Lim 等人[3]進(jìn)一步提出針對(duì)Android 本地代碼的保護(hù)方法,通過(guò)將Android 字節(jié)碼以更安全和高效的形式保存在本地代碼中并使用OLLVM 來(lái)對(duì)其進(jìn)行混淆,以增強(qiáng)代碼最終的安全性,但是近年來(lái)有很多針對(duì)OLLVM 的反混淆研究,僅僅使用OLLVM 進(jìn)行混淆保護(hù)不能很好的增加攻擊者分析的難度,因此需要增加混淆方式的多樣性和復(fù)雜性以便更好的保護(hù)Android 應(yīng)用程序。

    趙貝貝等人[4]提出了針對(duì)DEX 文件和SO 文件的多重虛擬化保護(hù)方法,通過(guò)將DEX 文件中的部分函數(shù)轉(zhuǎn)化為本地層函數(shù),然后分別對(duì)其和SO 文件進(jìn)行指令的虛擬化,大大增加的逆向分析的難度。由于虛擬化保護(hù)技術(shù)需要將被保護(hù)代碼全部轉(zhuǎn)化為自定義的虛擬指令,然后在運(yùn)行的時(shí)候根據(jù)自定義的解釋器逐條翻譯虛擬指令,這樣會(huì)大大降低Android 應(yīng)用程序的執(zhí)行效率。

    綜上所述,現(xiàn)有的Android 應(yīng)用程序保護(hù)方法能夠在一定程度上提高程序的安全性,但是仍然存在性能開銷過(guò)大和無(wú)法有效抵御動(dòng)態(tài)攻擊的問(wèn)題。

    2 具體實(shí)現(xiàn)

    圖1 描述了本文所提Android 應(yīng)用程序加固方法的五個(gè)步驟:首先是關(guān)鍵函數(shù)的提取,通過(guò)一個(gè)決策模型選擇被保護(hù)函數(shù),將其反匯編為Smali 代碼;再對(duì)Smali 代碼進(jìn)行解析,將其轉(zhuǎn)化為同語(yǔ)義的C++代碼;接著由LLVM[5]前端Clang 解析、驗(yàn)證和診斷輸入的C++代碼;然后通過(guò)編寫LLVM 中端的優(yōu)化模塊完成對(duì)LLVMIR 的優(yōu)化、轉(zhuǎn)換、混淆[6]等一系列自定義操作,將優(yōu)化后的指令轉(zhuǎn)化為本地代碼;最后將修改后的DEX文件和LLVM 后端生成的本地代碼重新打包為一個(gè)新的APK 文件。下面介紹一些關(guān)鍵技術(shù)的具體實(shí)現(xiàn),如選擇關(guān)鍵函數(shù)、關(guān)鍵函數(shù)的轉(zhuǎn)化、控制流混淆、不透明謂詞混淆、整型數(shù)和字符串混淆。

    圖1 本文所提加固方法的主要流程

    2.1 選擇關(guān)鍵函數(shù)

    對(duì)所有Java 層函數(shù)進(jìn)行加固會(huì)造成巨大開銷[7],部分函數(shù)的程序框架,如窗口操作和界面渲染,已經(jīng)被業(yè)內(nèi)人士所熟知。相比于核心加密和通信邏輯的函數(shù),這些函數(shù)本身調(diào)用了許多其他函數(shù),無(wú)需浪費(fèi)額外的資源對(duì)其進(jìn)行加固,因此本文構(gòu)建一個(gè)決策模型識(shí)別DEX 文件中的關(guān)鍵函數(shù):

    首先深度優(yōu)先遍歷反匯編后的Smali 文件,生成每個(gè)函數(shù)的函數(shù)調(diào)用樹;其次選擇樹中的葉子節(jié)點(diǎn),也就是不存在函數(shù)調(diào)用的函數(shù),將函數(shù)名添加到被保護(hù)函數(shù)列表中,修改函數(shù)屬性為Native 類型;最后刪除原函數(shù)體并添加無(wú)用的垃圾指令來(lái)影響攻擊者逆向分析。

    圖2 函數(shù)F調(diào)用樹

    2.2 關(guān)鍵函數(shù)的轉(zhuǎn)化

    將關(guān)鍵函數(shù)轉(zhuǎn)化為C++代碼通過(guò)指令逐條翻譯和程序語(yǔ)義恢復(fù)實(shí)現(xiàn)。

    指令逐條翻譯:圖3 是一個(gè)函數(shù)反匯編生成的Smali 代碼,Smali 是基于寄存器的指令,由于同一個(gè)寄存器一般儲(chǔ)存多個(gè)不同類型的變量,因此在翻譯每一條指令時(shí)要對(duì)寄存器里的值進(jìn)行區(qū)分。將Smali 指令逐條翻譯后如圖4 所示:為每一個(gè)寄存器操作分配一個(gè)新的臨時(shí)變量來(lái)翻譯指令,當(dāng)該寄存器進(jìn)行賦值操作后,用一個(gè)新的臨時(shí)變量替代之前的臨時(shí)變量。

    圖3 Smali 指令

    圖4 C++代碼

    程序語(yǔ)義恢復(fù):構(gòu)建一個(gè)以每一條指令作為一個(gè)節(jié)點(diǎn)的指令圖,深度優(yōu)先搜索圖中的每一個(gè)節(jié)點(diǎn),根據(jù)每個(gè)節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)和后繼節(jié)點(diǎn)以及節(jié)點(diǎn)的出度和入度,刪除不必要的變量并增加新的變量關(guān)聯(lián),恢復(fù)程序正常的邏輯關(guān)系和上下文。

    圖5 C++代碼的指令圖

    圖6 優(yōu)化后的C++代碼

    2.3 控制流平坦化

    控制流圖[8]是程序的抽象表現(xiàn),圖中每一個(gè)節(jié)點(diǎn)代表一個(gè)基本塊??刂屏髌教够瘜⒊绦虻目刂屏鲌D轉(zhuǎn)化為一個(gè)有很多分支的switch 結(jié)構(gòu),通過(guò)替換程序中的循環(huán)判斷條件和計(jì)數(shù)器,將程序的跳轉(zhuǎn)過(guò)程集中在switch 的判斷語(yǔ)句。一個(gè)函數(shù)的原始控制流圖,包含一些變量的賦值和一個(gè)循環(huán),如圖7 所示。圖8 是對(duì)其進(jìn)行控制流平坦化后的控制流圖,通過(guò)變量V 來(lái)控制程序的執(zhí)行,每執(zhí)行完一個(gè)基本塊后,對(duì)V 進(jìn)行賦值操作來(lái)決定下一個(gè)要執(zhí)行的基本塊。

    圖7 函數(shù)的原始控制流圖

    實(shí)現(xiàn)流程如下面的偽代碼所示:遍歷函數(shù)中所有的基本塊,選擇第一個(gè)基本塊作為函數(shù)的入口,若是有條件的基本塊,則將其轉(zhuǎn)為一個(gè)無(wú)條件的基本塊和一個(gè)有條件的基本塊,并將無(wú)條件的基本塊作為程序的入口;為每一個(gè)基本塊分配一個(gè)唯一的編號(hào),并修改其結(jié)尾的跳轉(zhuǎn)指令,若當(dāng)前基本塊為非條件跳轉(zhuǎn),將變量V 的值賦值為要跳轉(zhuǎn)的基本塊的編號(hào);若當(dāng)前基本塊為條件跳轉(zhuǎn),則需要修改為兩個(gè)條件賦值指令。最后,將基本塊插入到switch 結(jié)構(gòu)中。

    圖8 控制流平坦化后的控制流圖

    圖9 偽代碼

    2.4 不透明謂詞混淆

    不透明謂詞[9]是一種布爾表達(dá)式,其結(jié)果為真或者為假。攻擊者只有在程序執(zhí)行到一定階段才能利用逆向工具對(duì)它進(jìn)行分析,因此不透明謂詞混淆可以抵御大部分靜態(tài)攻擊,本文選擇數(shù)論的結(jié)論來(lái)生成不透明謂詞。

    實(shí)現(xiàn)過(guò)程如下:對(duì)基本塊進(jìn)行拆分,直到每個(gè)基本塊都無(wú)法再被拆分,向前驅(qū)基本塊插入一個(gè)無(wú)條件跳轉(zhuǎn)指令指向其后繼基本塊,以保證程序的正確運(yùn)行;生成一組不透明謂詞(pi,i=1,2,…,n,其中任意一個(gè)pi 的值為真時(shí),其他所有不透明謂詞的值都為真)將其插入到拆分后的基本塊中,如圖10 所示。

    圖10 不透明謂詞混淆

    2.5 整型數(shù)替換

    整型數(shù)替換相比于加密優(yōu)勢(shì)在于,加密后的數(shù)據(jù)在內(nèi)存中運(yùn)行時(shí)解密,很容易被攻擊者發(fā)現(xiàn)并利用,而混淆后的數(shù)據(jù)在內(nèi)存中保持原有的形式,攻擊者難以理解。整型數(shù)替換的原理是將一個(gè)整型數(shù)拆分為高位和低位長(zhǎng)度相同的兩部分,分別儲(chǔ)存在寄存器中并對(duì)整型數(shù)的基本運(yùn)算進(jìn)行替換。例如,可以將一個(gè)長(zhǎng)為2N 的整型數(shù)A 拆分為長(zhǎng)度均為N 的Ah(高位)和Al(低位)。

    對(duì)于加法運(yùn)算A=B+C,

    Al=(Bl+Cl)mod(1<>N)mod(1<

    對(duì)于減法運(yùn)算A=B-C,

    Al=(Bl-Cl)mod(1<>N)mod(1<

    對(duì)于比較運(yùn)算,只需要先比較高位,若不相等則不需要再比較低位。

    對(duì)于位運(yùn)算,只需要同時(shí)對(duì)高位或低位進(jìn)行相同的位運(yùn)算操作即可。

    對(duì)于移位運(yùn)算A=B>>x,

    其中0>x,Ah=Bh>>x

    對(duì)于除法和乘法運(yùn)算,LLVM 在編譯器優(yōu)化過(guò)程會(huì)對(duì)乘除法指令進(jìn)行替換,轉(zhuǎn)化為由移位和加法等指令等價(jià)表示的形式,由于乘法和除法的拆分會(huì)造成很大的開銷,因此不對(duì)存在乘法和除法的代碼進(jìn)行整型數(shù)的拆分。

    LLVMIR[10]使用了一個(gè)由%字符命名的無(wú)限寄存器集合,而不是一個(gè)固定的命名寄存器集合。整型變量的表示一般以i 為起始標(biāo)志,i32 表示32 位整型數(shù),all?oca i32 指令用于分配32 位長(zhǎng)度的整型數(shù)變量。例如加法運(yùn)算A=B+C,%1、%2、%3 分別用于儲(chǔ)存A、B、C的值,然后將B 和C 的值讀取出來(lái),相加后儲(chǔ)存到A中;其進(jìn)行整型數(shù)拆分的結(jié)果如圖11 所示,分別使用兩個(gè)寄存器儲(chǔ)存A、B、C 的值,首先是低位相加,再對(duì)65536 取模,完成低位相加,然后是高位相加的結(jié)果和低位和右移16 位的結(jié)果相加,最后對(duì)65536 取模完成高位相加。

    圖11 混淆前的LLVMIR

    圖12 混淆后的LLVMIR

    2.6 字符串混淆

    代碼中hashcode 的字符串可以在生成的binary 中查找到,因此增加破解的難度對(duì)字符串進(jìn)行混淆很重要。常用方法是在編譯過(guò)程中使用密鑰對(duì)原字符串異或加密,然后在函數(shù)頭部插入解密代碼在運(yùn)行時(shí)進(jìn)行字符串解密[11],文件加載后,字符串在內(nèi)存中仍是解密后的形式,因此,需要對(duì)字符串的解密進(jìn)行隱藏。

    實(shí)現(xiàn)過(guò)程如下:首先生成隨機(jī)密鑰對(duì)字符串異或加密,在函數(shù)要使用加密的字符串時(shí)調(diào)用解密函數(shù)。解密函數(shù)會(huì)首先申請(qǐng)一個(gè)與原字符串等長(zhǎng)的??臻g,用于保存解密后的字符串,并修改原字符串的引用地址到當(dāng)前棧的地址;字符串使用后會(huì)釋放棧的空間,解密后的字符串不會(huì)一直存在內(nèi)存中,能一定程度上抵抗動(dòng)態(tài)攻擊。

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

    從手動(dòng)分析、通用脫殼工具攻擊和運(yùn)行性能三個(gè)

    方面進(jìn)行測(cè)試。編譯時(shí)系統(tǒng)使用Ubuntu 16.04 和LLVM 5.0 版本;測(cè)試端使用Android 5.0。

    3.1 手動(dòng)攻擊

    本部分主要以攻擊者的角度,使用一些逆向工具來(lái)分析加固后的代碼。首先,使用JEB[12]的工具反編譯Android 應(yīng)用程序。如圖13 所示,可以看到未加固代碼的邏輯是清晰可見,而加固后的代碼在Java 層中只有方法的聲明。攻擊者再進(jìn)一步的分析,結(jié)合Java 文件中的函數(shù)聲明和從IDA[13]輸出的偽代碼,可以快速找到函數(shù)的實(shí)現(xiàn),但是經(jīng)過(guò)字符串和整型變量混淆以后,它們都沒(méi)有完整的語(yǔ)義,導(dǎo)致攻擊者很難理解。所以,攻擊者想要獲取應(yīng)用程序的原始邏輯需要大量的時(shí)間和精力。

    圖13 原始代碼反編譯結(jié)果

    圖14 加固后代碼反編譯結(jié)果

    3.2 通用脫殼工具攻擊

    本部分主要選擇了六個(gè)常見的Android 脫殼工具,并使用它們來(lái)分析加固后的應(yīng)用程序。DEXExtractor[14]原理是修改系統(tǒng)DVM 虛擬機(jī)模塊代碼DEXFile.cpp文件的DEXFileParse 函數(shù),在系統(tǒng)調(diào)用DEXFileParse函數(shù)之前將原始DEX 文件從內(nèi)存dump 出來(lái)。但是本文的方法已經(jīng)將DEX 文件中的關(guān)鍵函數(shù)本地化,即使在內(nèi)存中dump 出DEX 文件依然得不到函數(shù)的實(shí)現(xiàn)方式。Drizzledumper[15]原理是在root 環(huán)境下,通過(guò)ptrace附加需要脫殼的APK 進(jìn)程,然后在脫殼的APK 進(jìn)程的內(nèi)存中進(jìn)行DEX 文件頭的特征搜索,當(dāng)搜索到DEX文件時(shí)進(jìn)行DEX 文件的內(nèi)存dump。由于函數(shù)經(jīng)過(guò)本地化保護(hù)后在內(nèi)存中找不到DEX 頭文件,因此這個(gè)工具對(duì)于本方法是無(wú)效的。ZjDroid[16]基于Xposed 框架,通過(guò)hook 每個(gè)應(yīng)用進(jìn)程在Java 級(jí)別獲取DEX 文件并利用獲得的mcookie dump 出DEX 文件,因此它無(wú)法在本地層還原代碼。DEXHunter[17]原理是在Android 系統(tǒng)代碼調(diào)用函數(shù)dvmDefineClass 進(jìn)行類加載之前,主動(dòng)地一次性加載并初始化DEX 文件所有的類。但它不能處理帶有代碼混淆和垃圾指令的加殼程序。Packer?Grind[18]從運(yùn)行時(shí)跟蹤、系統(tǒng)跟蹤和指令跟蹤對(duì)加殼的App 進(jìn)行監(jiān)控和分析,最后進(jìn)行還原。本文對(duì)代碼的控制流和數(shù)據(jù)都進(jìn)行了混淆,不透明謂詞產(chǎn)生的虛假控制流使它無(wú)法決定哪個(gè)代碼是正確的。DROIDUN?PACK 可以對(duì)JNI 接口進(jìn)行檢查,進(jìn)而知道哪些函數(shù)已經(jīng)本地化,本文的方法對(duì)數(shù)據(jù)進(jìn)行了混淆,使得它很難將其還原為正確的指令執(zhí)行。

    結(jié)果如表1 所示,DROIDUNPACK 是目前最強(qiáng)大的脫殼工具,但是對(duì)本文提出的方法無(wú)效。這是因?yàn)楸疚牡姆椒▽EX 字節(jié)碼編譯時(shí)混淆成本機(jī)代碼,在運(yùn)行代碼時(shí)動(dòng)態(tài)還原并在使用后再次加密。實(shí)驗(yàn)結(jié)果表明,本文提出的加固方法克服了傳統(tǒng)加固方法容易被還原的缺點(diǎn),對(duì)通用逆向工具有良好的抵抗能力。

    表1 脫殼工具以及對(duì)應(yīng)的脫殼結(jié)果

    3.3 運(yùn)行性能

    本部分從CPU 占用率、大小和運(yùn)行時(shí)內(nèi)存使用率三個(gè)方面來(lái)評(píng)估加固前后程序的運(yùn)行性能。選擇了六個(gè)常見的Android 應(yīng)用,每一個(gè)應(yīng)用程序都要運(yùn)行10次,取其結(jié)果的平均值作為最后的實(shí)驗(yàn)結(jié)果。在測(cè)試過(guò)程中,通過(guò)Monkey[19]觸發(fā)隨機(jī)點(diǎn)擊、幻燈片、文本或字符輸入模擬用戶的行為,隨機(jī)事件設(shè)置間隔為1s,每次數(shù)據(jù)收集的時(shí)間為10 分鐘。最后使用騰訊的開源性能測(cè)試工具GT[20]獲得了相應(yīng)的實(shí)驗(yàn)數(shù)據(jù),如表2所示。

    CPU 使用率:可以看出,加固后程序的CPU 使用率與原應(yīng)用程序幾乎相同。

    大?。簭谋碇锌梢钥闯?,所有加固后的應(yīng)用程序比原應(yīng)用程序約增加20%,原因是加固后的應(yīng)用程序包含一個(gè)修改過(guò)的DEX 文件和一個(gè)新生成的SO 文件。雖然DEX 文件中的一些函數(shù)是在本機(jī)層中實(shí)現(xiàn)的,但它在原函數(shù)的指令中添加了JNI 注冊(cè)信息以及一些垃圾指令,因此它比原函數(shù)要占用更大的內(nèi)存空間,并且在一定程度上增加了攻擊者逆向分析的難度。

    內(nèi)存使用:加固后,程序總內(nèi)存使用量呈上升趨勢(shì),但增幅不大,增加的內(nèi)存消耗主要來(lái)自本機(jī)代碼的消耗。

    綜上所述,由于本機(jī)層代碼直接執(zhí)行效率更高、更直觀的CPU 指令,使得函數(shù)的本地化提高了程序的運(yùn)行效率、抵消了部分混淆帶來(lái)的性能開銷,因此加固前后程序的性能未受到很大影響。

    表2 加固前后程序運(yùn)行性能對(duì)比

    4 結(jié)語(yǔ)

    本文提出了一種基于LLVM 的Android 應(yīng)用加固方法,該方法將被保護(hù)程序中的Java 函數(shù)轉(zhuǎn)化為本地代碼并對(duì)其進(jìn)行混淆保護(hù),能夠有效抵抗逆向軟件的靜態(tài)分析和攻擊者的動(dòng)態(tài)調(diào)試。將關(guān)鍵函數(shù)反匯編為Smali 指令后轉(zhuǎn)化為C++代碼,利用LLVM 框架的特點(diǎn)對(duì)C++代碼進(jìn)行分析得到LLVM 中間表示,然后對(duì)LL?VMIR 指令進(jìn)行優(yōu)化和混淆,最后輸出機(jī)器碼。實(shí)驗(yàn)結(jié)果表明,本文提出的方法具有較高的隱蔽性,相比其他混淆保護(hù)方法使用更少的性能消耗和代碼體積,且能夠抵御大部分通用脫殼工具的攻擊,因此本文的方法具有更優(yōu)越的性能。

    本文僅選擇不存在函數(shù)調(diào)用的函數(shù)作為保護(hù)的對(duì)象,在具有函數(shù)調(diào)用的函數(shù)中可能存在比較重要、需要被保護(hù)的函數(shù)。在以后的工作中,將考慮保護(hù)更多函數(shù)時(shí)應(yīng)用程序性能的變化,以及如何在保證高安全性的前提下克服代碼混淆帶來(lái)的性能開銷。

    猜你喜歡
    基本塊控制流字符串
    基于級(jí)聯(lián)森林的控制流錯(cuò)誤檢測(cè)優(yōu)化算法
    抵御控制流分析的Python 程序混淆算法
    距離與權(quán)重相結(jié)合的導(dǎo)向式灰盒模糊測(cè)試方法
    工控系統(tǒng)中PLC安全漏洞及控制流完整性研究
    電子科技(2021年2期)2021-01-08 02:25:58
    抵御控制流分析的程序混淆算法
    一種檢測(cè)控制流錯(cuò)誤的多層分段標(biāo)簽方法
    基于控制流隱藏的代碼迷惑
    一種新的基于對(duì)稱性的字符串相似性處理算法
    依據(jù)字符串匹配的中文分詞模型研究
    一種針對(duì)Java中字符串的內(nèi)存管理方案
    黑人欧美特级aaaaaa片| 全区人妻精品视频| 国产乱人偷精品视频| 97精品久久久久久久久久精品| 久久国产亚洲av麻豆专区| 国产成人精品婷婷| 99久久精品一区二区三区| 国产爽快片一区二区三区| 男女高潮啪啪啪动态图| 草草在线视频免费看| 乱人伦中国视频| 人妻人人澡人人爽人人| 校园人妻丝袜中文字幕| 精品久久久久久久久av| 草草在线视频免费看| 免费播放大片免费观看视频在线观看| 日产精品乱码卡一卡2卡三| 国产永久视频网站| 成人毛片a级毛片在线播放| 国产欧美亚洲国产| 欧美+日韩+精品| 久久狼人影院| 久久精品国产a三级三级三级| 欧美3d第一页| 成人漫画全彩无遮挡| 国产精品成人在线| 超色免费av| 国产在线免费精品| 丁香六月天网| 中文字幕免费在线视频6| 久久久久国产精品人妻一区二区| 午夜激情av网站| 久久久久精品性色| 精品卡一卡二卡四卡免费| 18禁在线无遮挡免费观看视频| 啦啦啦中文免费视频观看日本| 久久综合国产亚洲精品| 日韩成人av中文字幕在线观看| 久久久久久久精品精品| 天堂8中文在线网| 亚洲国产欧美在线一区| 精品国产乱码久久久久久小说| 婷婷色麻豆天堂久久| 亚洲一区二区三区欧美精品| 永久免费av网站大全| 精品国产露脸久久av麻豆| 欧美日韩一区二区视频在线观看视频在线| 亚洲成人av在线免费| 中文字幕人妻丝袜制服| 美女脱内裤让男人舔精品视频| 日韩熟女老妇一区二区性免费视频| 少妇高潮的动态图| 人人妻人人爽人人添夜夜欢视频| 久久久精品免费免费高清| 免费人成在线观看视频色| 日本91视频免费播放| 精品亚洲乱码少妇综合久久| 国产深夜福利视频在线观看| 免费黄网站久久成人精品| 自线自在国产av| 久久久久久人妻| 久久精品国产a三级三级三级| 亚洲美女搞黄在线观看| 成年av动漫网址| 午夜精品国产一区二区电影| 乱人伦中国视频| 伊人久久国产一区二区| av在线app专区| 国产一区有黄有色的免费视频| 免费少妇av软件| 丁香六月天网| 18禁观看日本| 狠狠精品人妻久久久久久综合| 欧美丝袜亚洲另类| 亚洲人与动物交配视频| 夜夜骑夜夜射夜夜干| 99久久精品国产国产毛片| 91精品国产国语对白视频| 国产av国产精品国产| 国产精品女同一区二区软件| 多毛熟女@视频| 成人影院久久| 观看美女的网站| av在线播放精品| 亚洲国产精品一区三区| 国产成人av激情在线播放 | 久久人人爽av亚洲精品天堂| 男女边吃奶边做爰视频| 国产亚洲最大av| 久久久久人妻精品一区果冻| 成人影院久久| 热re99久久国产66热| 国产精品久久久久成人av| 2021少妇久久久久久久久久久| 亚洲欧美清纯卡通| 一区二区三区乱码不卡18| 能在线免费看毛片的网站| 亚洲高清免费不卡视频| 男男h啪啪无遮挡| 91精品国产国语对白视频| 国产精品久久久久成人av| 亚洲精品日本国产第一区| 成人二区视频| 国产老妇伦熟女老妇高清| 大片免费播放器 马上看| 热re99久久国产66热| 亚洲欧美清纯卡通| 亚洲精品日本国产第一区| 建设人人有责人人尽责人人享有的| 久久久精品区二区三区| 内地一区二区视频在线| 国产亚洲精品第一综合不卡 | 51国产日韩欧美| 久久久久国产精品人妻一区二区| 999精品在线视频| 国产日韩欧美视频二区| 少妇人妻精品综合一区二区| 欧美3d第一页| 乱人伦中国视频| 久久婷婷青草| 久久av网站| 亚洲中文av在线| 国产女主播在线喷水免费视频网站| 亚洲av中文av极速乱| 欧美日韩在线观看h| 国产精品一国产av| 美女国产视频在线观看| 桃花免费在线播放| 久久午夜综合久久蜜桃| 好男人视频免费观看在线| 日韩免费高清中文字幕av| 亚洲人与动物交配视频| 18禁动态无遮挡网站| av线在线观看网站| 免费人成在线观看视频色| 亚洲国产精品999| 十八禁网站网址无遮挡| 国产精品久久久久久久电影| 久久久久久久久久久久大奶| 91国产中文字幕| 免费观看无遮挡的男女| 毛片一级片免费看久久久久| 曰老女人黄片| 亚洲av不卡在线观看| 少妇被粗大的猛进出69影院 | 亚洲av不卡在线观看| 日本91视频免费播放| 蜜桃在线观看..| 久久久国产精品麻豆| 永久网站在线| 街头女战士在线观看网站| 亚洲av.av天堂| 成人影院久久| 日韩欧美精品免费久久| 亚洲精品成人av观看孕妇| 在线亚洲精品国产二区图片欧美 | 亚洲国产av影院在线观看| 国产亚洲欧美精品永久| 91精品国产国语对白视频| a 毛片基地| 亚洲人成网站在线播| 精品人妻一区二区三区麻豆| 国产成人午夜福利电影在线观看| 夫妻性生交免费视频一级片| 国产精品久久久久久久电影| 国产精品成人在线| 七月丁香在线播放| 啦啦啦在线观看免费高清www| 国产国拍精品亚洲av在线观看| 国精品久久久久久国模美| 在线 av 中文字幕| 在线亚洲精品国产二区图片欧美 | 亚洲国产av影院在线观看| 免费av中文字幕在线| 一区二区三区免费毛片| 一级黄片播放器| 亚洲国产精品国产精品| 热99久久久久精品小说推荐| 国产欧美亚洲国产| 成人毛片a级毛片在线播放| 久久精品国产自在天天线| 成人国产av品久久久| 另类亚洲欧美激情| 女人久久www免费人成看片| 天天躁夜夜躁狠狠久久av| 成人国产麻豆网| 搡老乐熟女国产| 成人无遮挡网站| 亚洲五月色婷婷综合| 亚洲国产精品国产精品| av视频免费观看在线观看| 成人亚洲欧美一区二区av| 久久久午夜欧美精品| 色婷婷av一区二区三区视频| 国产精品女同一区二区软件| 99久国产av精品国产电影| 女的被弄到高潮叫床怎么办| 免费人成在线观看视频色| 欧美日本中文国产一区发布| 交换朋友夫妻互换小说| 人人妻人人澡人人看| 久久久精品94久久精品| 久久 成人 亚洲| 亚洲精品第二区| 少妇精品久久久久久久| 免费av不卡在线播放| 高清视频免费观看一区二区| 人人妻人人澡人人爽人人夜夜| 日韩av不卡免费在线播放| 亚洲综合色惰| 日韩成人av中文字幕在线观看| 亚洲国产精品成人久久小说| 精品亚洲乱码少妇综合久久| 亚洲在久久综合| 久久热精品热| 中国三级夫妇交换| 中文字幕av电影在线播放| 亚洲欧美日韩另类电影网站| 国产一区有黄有色的免费视频| 国产免费现黄频在线看| 成人手机av| 国产高清国产精品国产三级| 婷婷色综合www| 99热这里只有精品一区| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 婷婷色麻豆天堂久久| 日韩中文字幕视频在线看片| videossex国产| 婷婷色av中文字幕| 午夜免费观看性视频| 久久99一区二区三区| 日韩大片免费观看网站| 一区二区三区四区激情视频| 水蜜桃什么品种好| 天天影视国产精品| 久久久久久久久久久免费av| 欧美精品一区二区免费开放| 一边亲一边摸免费视频| 国产在视频线精品| 十八禁高潮呻吟视频| 国产免费现黄频在线看| 最新中文字幕久久久久| 在线观看美女被高潮喷水网站| 最近的中文字幕免费完整| 一级爰片在线观看| av.在线天堂| 七月丁香在线播放| 人妻一区二区av| 亚洲第一av免费看| 欧美最新免费一区二区三区| 26uuu在线亚洲综合色| 亚洲国产精品一区三区| 亚洲精品第二区| 两个人免费观看高清视频| 人成视频在线观看免费观看| 自拍欧美九色日韩亚洲蝌蚪91| 精品久久久精品久久久| 亚洲美女搞黄在线观看| 性高湖久久久久久久久免费观看| 日本色播在线视频| xxxhd国产人妻xxx| 欧美3d第一页| 考比视频在线观看| 国产女主播在线喷水免费视频网站| 日韩制服骚丝袜av| 国产精品久久久久久av不卡| 美女视频免费永久观看网站| 高清视频免费观看一区二区| 黄片无遮挡物在线观看| 国产精品欧美亚洲77777| 亚洲欧美清纯卡通| 新久久久久国产一级毛片| av有码第一页| 亚洲欧美成人综合另类久久久| 亚洲色图综合在线观看| 国产精品一二三区在线看| 国产不卡av网站在线观看| 国产黄色免费在线视频| 国产精品免费大片| 简卡轻食公司| 人妻 亚洲 视频| 国产黄色免费在线视频| av一本久久久久| 免费黄色在线免费观看| 18+在线观看网站| 纵有疾风起免费观看全集完整版| av又黄又爽大尺度在线免费看| 亚洲av免费高清在线观看| 一个人免费看片子| 满18在线观看网站| 国产亚洲欧美精品永久| 精品一区二区三区视频在线| 一区二区日韩欧美中文字幕 | 午夜免费观看性视频| 三级国产精品欧美在线观看| 精品午夜福利在线看| 丝袜脚勾引网站| 另类亚洲欧美激情| 亚洲av国产av综合av卡| 黑人欧美特级aaaaaa片| 婷婷成人精品国产| 国产精品一区二区三区四区免费观看| 日本与韩国留学比较| 黄色怎么调成土黄色| 特大巨黑吊av在线直播| 久久久久久久久久久免费av| 亚洲美女视频黄频| av国产久精品久网站免费入址| 午夜福利视频在线观看免费| 亚洲第一区二区三区不卡| 一本—道久久a久久精品蜜桃钙片| 人妻人人澡人人爽人人| 又黄又爽又刺激的免费视频.| 精品国产一区二区三区久久久樱花| 久久久久视频综合| 精品一区二区三区视频在线| 免费看不卡的av| 最新的欧美精品一区二区| 综合色丁香网| 蜜桃久久精品国产亚洲av| 国产高清不卡午夜福利| 亚洲av男天堂| 一本大道久久a久久精品| 免费少妇av软件| 男的添女的下面高潮视频| 男女国产视频网站| 丰满饥渴人妻一区二区三| 亚洲,欧美,日韩| 精品国产乱码久久久久久小说| 一级毛片我不卡| 丁香六月天网| 国产有黄有色有爽视频| 久久久久久伊人网av| 中文字幕精品免费在线观看视频 | 精品视频人人做人人爽| 男的添女的下面高潮视频| 国产精品一区二区在线不卡| 飞空精品影院首页| 色网站视频免费| 精品久久国产蜜桃| 啦啦啦啦在线视频资源| 欧美激情国产日韩精品一区| 五月伊人婷婷丁香| 卡戴珊不雅视频在线播放| 精品亚洲成国产av| av网站免费在线观看视频| 精品一区在线观看国产| 建设人人有责人人尽责人人享有的| 黄色一级大片看看| 亚洲av.av天堂| 亚洲人与动物交配视频| 99国产精品免费福利视频| 国产一区二区在线观看日韩| av国产久精品久网站免费入址| 国产精品麻豆人妻色哟哟久久| 天天躁夜夜躁狠狠久久av| 日本爱情动作片www.在线观看| 精品人妻一区二区三区麻豆| 肉色欧美久久久久久久蜜桃| 欧美国产精品一级二级三级| 少妇熟女欧美另类| 成年人免费黄色播放视频| 亚洲一级一片aⅴ在线观看| 一边摸一边做爽爽视频免费| 久久精品国产亚洲av涩爱| 日本vs欧美在线观看视频| 女性被躁到高潮视频| 蜜桃在线观看..| 免费播放大片免费观看视频在线观看| 热99国产精品久久久久久7| h视频一区二区三区| 亚洲精品日韩在线中文字幕| 久久 成人 亚洲| 在线观看一区二区三区激情| 人成视频在线观看免费观看| 人人妻人人添人人爽欧美一区卜| 国产爽快片一区二区三区| 在线看a的网站| 人人妻人人添人人爽欧美一区卜| 亚洲av在线观看美女高潮| 美女大奶头黄色视频| 国产免费视频播放在线视频| 春色校园在线视频观看| 成人综合一区亚洲| 一区二区三区精品91| 日韩欧美精品免费久久| 午夜免费观看性视频| 亚洲美女黄色视频免费看| 一本大道久久a久久精品| 久久亚洲国产成人精品v| 视频区图区小说| 国产黄色视频一区二区在线观看| 免费看光身美女| 最近最新中文字幕免费大全7| 免费黄色在线免费观看| 不卡视频在线观看欧美| 最近最新中文字幕免费大全7| 少妇熟女欧美另类| 久久久久久久久久久免费av| 啦啦啦在线观看免费高清www| 麻豆精品久久久久久蜜桃| 久久久久久久久久人人人人人人| av一本久久久久| 久久精品国产a三级三级三级| 男女免费视频国产| 国精品久久久久久国模美| 青春草视频在线免费观看| 蜜臀久久99精品久久宅男| av卡一久久| 欧美老熟妇乱子伦牲交| 少妇人妻 视频| 99热6这里只有精品| 男女免费视频国产| 亚洲av福利一区| 久久久久久久国产电影| 中文天堂在线官网| 卡戴珊不雅视频在线播放| 赤兔流量卡办理| 99热国产这里只有精品6| 国产成人aa在线观看| 成人亚洲精品一区在线观看| 国产精品人妻久久久影院| 如何舔出高潮| 久久热精品热| 黄色毛片三级朝国网站| 久久久精品免费免费高清| 国产伦精品一区二区三区视频9| 最近2019中文字幕mv第一页| 成人免费观看视频高清| 日韩强制内射视频| 日本91视频免费播放| 欧美日韩在线观看h| 一本一本综合久久| 国产精品一区二区三区四区免费观看| 国产亚洲午夜精品一区二区久久| 免费黄网站久久成人精品| 久久久午夜欧美精品| 在现免费观看毛片| 久久精品人人爽人人爽视色| 欧美另类一区| 极品少妇高潮喷水抽搐| 日本av免费视频播放| 2021少妇久久久久久久久久久| 大香蕉久久网| 青春草亚洲视频在线观看| 免费黄频网站在线观看国产| 午夜av观看不卡| 国产精品一区www在线观看| 老司机影院毛片| 色视频在线一区二区三区| 精品视频人人做人人爽| 亚洲精品国产色婷婷电影| 国语对白做爰xxxⅹ性视频网站| 日韩欧美一区视频在线观看| 亚洲伊人久久精品综合| 成人二区视频| 日韩av不卡免费在线播放| 国语对白做爰xxxⅹ性视频网站| 久久精品国产亚洲av涩爱| 国产片内射在线| 午夜影院在线不卡| 少妇被粗大猛烈的视频| 久久人人爽人人片av| 亚洲欧美一区二区三区黑人 | 亚洲中文av在线| 免费av中文字幕在线| 午夜影院在线不卡| 少妇人妻 视频| 性色av一级| 亚洲第一区二区三区不卡| 亚洲高清免费不卡视频| 日本黄色日本黄色录像| 久久久精品94久久精品| 97在线人人人人妻| 国产一区二区在线观看日韩| 国产乱来视频区| 国产女主播在线喷水免费视频网站| 狂野欧美激情性xxxx在线观看| 一级黄片播放器| 国产精品不卡视频一区二区| 精品熟女少妇av免费看| 婷婷色综合大香蕉| 一级片'在线观看视频| 欧美性感艳星| 在线 av 中文字幕| av线在线观看网站| 十八禁网站网址无遮挡| 久久久久视频综合| 精品99又大又爽又粗少妇毛片| 纵有疾风起免费观看全集完整版| 久久午夜福利片| 久久精品国产亚洲av涩爱| 黑人猛操日本美女一级片| 乱人伦中国视频| 精品久久久久久久久亚洲| 99热6这里只有精品| 91久久精品电影网| av电影中文网址| 久久久国产精品麻豆| 精品少妇久久久久久888优播| a级片在线免费高清观看视频| 2018国产大陆天天弄谢| 免费黄频网站在线观看国产| 日韩 亚洲 欧美在线| 国产高清不卡午夜福利| 国产成人免费无遮挡视频| 日日摸夜夜添夜夜添av毛片| 又粗又硬又长又爽又黄的视频| 99久久人妻综合| 免费播放大片免费观看视频在线观看| 国产69精品久久久久777片| 亚洲激情五月婷婷啪啪| 国产片特级美女逼逼视频| 中文字幕人妻丝袜制服| videossex国产| 日韩熟女老妇一区二区性免费视频| 久久影院123| 少妇被粗大的猛进出69影院 | 中文天堂在线官网| 高清欧美精品videossex| 国产高清不卡午夜福利| 亚洲成人手机| 精品酒店卫生间| 亚洲精品久久午夜乱码| 日韩成人伦理影院| 中文字幕最新亚洲高清| 久久久精品免费免费高清| 最近最新中文字幕免费大全7| 高清毛片免费看| 亚洲精品日韩在线中文字幕| 久久精品夜色国产| 一级,二级,三级黄色视频| a 毛片基地| 狠狠婷婷综合久久久久久88av| 精品卡一卡二卡四卡免费| 人人妻人人澡人人爽人人夜夜| av国产精品久久久久影院| 亚洲久久久国产精品| 青青草视频在线视频观看| 欧美老熟妇乱子伦牲交| a级毛片免费高清观看在线播放| 日韩精品免费视频一区二区三区 | 大话2 男鬼变身卡| 国产精品久久久久成人av| 99视频精品全部免费 在线| 国产免费一区二区三区四区乱码| 精品酒店卫生间| 高清不卡的av网站| 99re6热这里在线精品视频| 国产高清国产精品国产三级| 久久毛片免费看一区二区三区| √禁漫天堂资源中文www| 久久这里有精品视频免费| 精品久久国产蜜桃| 99久久精品一区二区三区| 丰满乱子伦码专区| 亚洲精品久久成人aⅴ小说 | av不卡在线播放| 永久网站在线| 日韩亚洲欧美综合| 我的老师免费观看完整版| 久久久久网色| 久久99一区二区三区| 五月天丁香电影| 久久热精品热| 国产黄色视频一区二区在线观看| 久久免费观看电影| 久久人人爽人人片av| 日产精品乱码卡一卡2卡三| 麻豆精品久久久久久蜜桃| 亚洲美女黄色视频免费看| 亚洲国产欧美日韩在线播放| 免费观看a级毛片全部| 如何舔出高潮| 国产一区二区在线观看日韩| 午夜精品国产一区二区电影| 国产国语露脸激情在线看| 乱人伦中国视频| 国产成人91sexporn| 国产亚洲精品第一综合不卡 | 亚洲综合色网址| 国产淫语在线视频| 国产视频首页在线观看| 亚洲性久久影院| 午夜福利视频精品| 全区人妻精品视频| 在线 av 中文字幕| 这个男人来自地球电影免费观看 | 久久久久久久久久久丰满| 中国三级夫妇交换| 日韩精品免费视频一区二区三区 | 街头女战士在线观看网站| 久热久热在线精品观看| 亚洲av成人精品一二三区| 国产一区有黄有色的免费视频| 精品久久久久久久久av| 国产精品不卡视频一区二区| av国产精品久久久久影院| 久久女婷五月综合色啪小说| 亚洲国产最新在线播放| 日本黄大片高清| 熟女人妻精品中文字幕| 久久久午夜欧美精品| 国产一级毛片在线| 日本wwww免费看| 天天影视国产精品| av天堂久久9| 国产在线免费精品| 一本久久精品| 天天躁夜夜躁狠狠久久av| 热re99久久精品国产66热6| 少妇被粗大猛烈的视频| 国产日韩欧美亚洲二区| 久久久国产一区二区| 在线播放无遮挡|