精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android Hook技術(shù)防范漫談

企業(yè)動態(tài)
隨著互聯(lián)網(wǎng)和數(shù)據(jù)的思維深入人心,一些灰色產(chǎn)業(yè)悄然興起,數(shù)據(jù)販子、爬蟲、外掛軟件等等也接踵而來,互聯(lián)網(wǎng)行業(yè)中各公司競爭對手之間不僅業(yè)務(wù)競爭十分激烈,黑科技的比拼也越發(fā)重要。

背景

當下,數(shù)據(jù)就像水、電、空氣一樣無處不在,說它是“21世紀的生產(chǎn)資料”一點都不夸張,由此帶來的是,各行業(yè)對于數(shù)據(jù)的爭奪熱火朝天。隨著互聯(lián)網(wǎng)和數(shù)據(jù)的思維深入人心,一些灰色產(chǎn)業(yè)悄然興起,數(shù)據(jù)販子、爬蟲、外掛軟件等等也接踵而來,互聯(lián)網(wǎng)行業(yè)中各公司競爭對手之間不僅業(yè)務(wù)競爭十分激烈,黑科技的比拼也越發(fā)重要。隨著移動互聯(lián)網(wǎng)的興起,爬蟲和外掛也從單一的網(wǎng)頁轉(zhuǎn)向了App,其中利用Android平臺下Dalvik模式中的Xposed Installer和Cydia Substrate框架對App的函數(shù)進行Hook這一招,堪稱老牌經(jīng)典。

[[219767]]

接下來,本文將分別介紹針對這兩種框架的防護技術(shù)。

Xposed Installer

原理

Zygote

在Android系統(tǒng)中App進程都是由Zygote進程“孵化”出來的。Zygote進程在啟動時會創(chuàng)建一個虛擬機實例,每當它“孵化”一個新的應(yīng)用程序進程時,都會將這個Dalvik虛擬機實例復(fù)制到新的App進程里面去,從而使每個App進程都有一個獨立的Dalvik虛擬機實例。

Zygote進程在啟動的過程中,除了會創(chuàng)建一個虛擬機實例之外還會將Java Rumtime加載到進程中并注冊一些Android核心類的JNI(Java Native Interface,Java本地接口)方法。一個App進程被Zygote進程孵化出來的時候,不僅會獲得Zygote進程中的虛擬機實例拷貝,還會與Zygote進程一起共享Java Rumtime,也就是可以將XposedBridge.jar這個Jar包加載到每一個Android App進程中去。安裝Xposed Installer之后,系統(tǒng)app_process將被替換,然后利用Java的Reflection機制覆寫內(nèi)置方法,實現(xiàn)功能劫持。下面我們來看一下細節(jié)。

Hook和Replace

Xposed Installer框架中真正起作用的是對方法的Hook和Replace。在Android系統(tǒng)啟動的時候,Zygote進程加載XposedBridge.jar,將所有需要替換的Method通過JNI方法hookMethodNative指向Native方法xposedCallHandler,這個方法再通過調(diào)用handleHookedMethod這個Java方法來調(diào)用被劫持的方法轉(zhuǎn)入Hook邏輯。

上面提到的hookMethodNative是XposedBridge.jar中的私有的本地方法,它將一個方法對象作為傳入?yún)?shù)并修改Dalvik虛擬機中對于該方法的定義,把該方法的類型改變?yōu)镹ative并將其實現(xiàn)指向另外一個B方法。

換言之,當調(diào)用那個被Hook的A方法時,其實調(diào)用的是B方法,調(diào)用者是不知道的。在hookMethodNative的實現(xiàn)中,會調(diào)用XposedBridge.jar中的handleHookedMethod這個方法來傳遞參數(shù)。handleHookedMethod這個方法類似于一個統(tǒng)一調(diào)度的Dispatch例程,其對應(yīng)的底層的C++函數(shù)是xposedCallHandler。而handleHookedMethod實現(xiàn)里面會根據(jù)一個全局結(jié)構(gòu)hookedMethodCallbacks來選擇相應(yīng)的Hook函數(shù)并調(diào)用他們的before和after函數(shù),當多模塊同時Hook一個方法的時候Xposed會自動根據(jù)Module的優(yōu)先級來排序。

調(diào)用順序如下:A.before -> B.before -> original method -> B.after -> A.after

檢測

在做Android App的安全防御中檢測點眾多,Xposed Installer檢測是必不可少的一環(huán)。對于Xposed框架的防御總體上分為兩層:Java層和Native層。

Java層檢測

需要說明的是,Java層的檢測基本只能檢測出基礎(chǔ)的Xposed Installer框架,而不能防護其對App內(nèi)方法的Hook,如果框架中帶有反檢測則Java層檢測大多不起作用。

下面列出Java層的檢測點,僅供參考。

① 通過PackageManager查看安裝列表

最簡單的檢測,我們調(diào)用Android提供的PackageManager的API來遍歷系統(tǒng)中App的安裝情況來辨別是否有安裝Xposed Installer相關(guān)的軟件包。

  1. PackageManager packageManager = context.getPackageManager(); 
  2. List applicationInfoList = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); 
  3. for (ApplicationInfo applicationInfo: applicationInfoList) { 
  4.     if (applicationInfo.packageName.equals("de.robv.android.xposed.installer")) { 
  5.         // is Xposed TODO... } 
  6.     } 

通常情況下使用Xposed Installer框架都會屏蔽對其的檢測,即Hook掉PackageManager的getInstalledApplications方法的返回值,以便過濾掉de.robv.android.xposed.installer來躲避這種檢測。

② 自造異常讀取棧

Xposed Installer框架對每個由Zygote孵化的App進程都會介入,因此在程序方法異常棧中就會出現(xiàn)Xposed相關(guān)的“身影”,我們可以通過自造異常Catch來讀取異常堆棧的形式,用以檢查其中是否存在Xposed的調(diào)用方法。

  1. try { 
  2.     throw new Exception("blah"); 
  3. } catch(Exception e) { 
  4.     for (StackTraceElement stackTraceElement: e.getStackTrace()) { 
  5.         // stackTraceElement.getClassName() stackTraceElement.getMethodName() 是否存 在Xposed 
  6.     } 
  7. E/GEnvironment: no such table: preference (code 1): while compiling: SELECT keyguard_show_livewallpaper FROM preference 
  8. ... 
  9. at com.meituan.test.extpackage.ExtPackageManager.checkUpdate(ExtPackageManager.java:127) 
  10. at com.meituan.test.MiFGService$1.run(MiFGService.java:41) 
  11. at android.os.Looper.loop(Looper.java:136) 
  12. at android.app.ActivityThread.main(ActivityThread.java:5072) 
  13. at java.lang.reflect.Method.invokeNative(Native Method) 
  14. at java.lang.reflect.Method.invoke(Method.java:515) 
  15. ... 
  16. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
  17. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 
  18. at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) //發(fā)現(xiàn)Xposed模塊 
  19. at dalvik.system.NativeStart.main(Native Method) 

③ 檢查關(guān)鍵Java方法被變?yōu)镹ative JNI方法

當一個Android App中的Java方法被莫名其妙地變成了Native JNI方法,則非常有可能被Xposed Hook了。由此可得,檢查關(guān)鍵方法是不是變成Native JNI方法,也可以檢測是否被Hook。

通過反射調(diào)用Modifier.isNative(method.getModifiers())方法可以校驗方法是不是Native JNI方法,Xposed同樣可以篡改isNative這個方法的返回值。

④ 反射讀取XposedHelper類字段

通過反射遍歷XposedHelper類中的fieldCache、methodCache、constructorCache變量,讀取HashMap緩存字段,如字段項的key中包含App中唯一或敏感方法等,即可認為有Xposed注入。

  1. boolean methodCache = CheckHook(clsXposedHelper, "methodCache", keyWord); 
  2.  
  3. private static boolean CheckHook(Object cls, String filedName, String str) { 
  4.     boolean result = false
  5.     String interName; 
  6.     Set keySet; 
  7.     try { 
  8.         Field filed = cls.getClass().getDeclaredField(filedName); 
  9.         filed.setAccessible(true); 
  10.         keySet = filed.get(cls)).keySet(); 
  11.         if (!keySet.isEmpty()) { 
  12.             for (Object aKeySet: keySet) { 
  13.                 interName = aKeySet.toString().toLowerCase(); 
  14.                 if (interName.contains("meituan") || interName.contains("dianping") ) { 
  15.                     result = true
  16.                     break; 
  17.                     }  
  18.                 } 
  19.             } 
  20.         ... 
  21.     return result; 

Native層檢測

由上文可知,無論在Java層做何種檢測,Xposed都可以通過Hook相關(guān)的API并返回指定的結(jié)果來繞過檢測,只要有方法就可以被Hook。如果僅在Java層檢測就顯得很徒勞,為了有效提搞檢測準確率,就須做到Java和Native層同時檢測。每個App在系統(tǒng)中都有對應(yīng)的加載庫列表,這些加載庫列表在/proc/下對應(yīng)的pid/maps文件中描述,在Native層讀取/proc/self/maps文件不失為檢測Xposed Installer的有效辦法之一。由于Xposed Installer通常只能Hook Java層,因此在Native層使用C來解析/proc/self/maps文件,搜檢App自身加載的庫中是否存在XposedBridge.jar、相關(guān)的Dex、Jar和So庫等文件。

  1. bool is_xposed() 
  2.    bool rel = false
  3.    FILE *fp = NULL
  4.    char* filepath = "/proc/self/maps"
  5.    ... 
  6.    string xp_name = "XposedBridge.jar"
  7.    fp = fopen(filepath,"r"))  
  8.    while (!feof(fp))                                  
  9.    { 
  10.        fgets(strLine,BUFFER_SIZE,fp);                     
  11.        origin_str = strLine; 
  12.        str = trim(origin_str); 
  13.        if (contain(str,xp_name)) 
  14.        { 
  15.            rel = true; //檢測到Xposed模塊 
  16.            break; 
  17.        } 
  18.    } 
  19.     ... 

Cydia Substrate

原理

Cydia Substrate注入Hook的一個典型流程如下圖所示,在Java層配置注入的關(guān)鍵So庫libsubstrate.so和libsubstratedvm.so。考慮到Java層檢測強度太低,Substrate的檢測主要在Native層來實現(xiàn)。

檢測

動態(tài)加載式檢測

讀取/proc/self/maps,列出了App中所有加載的文件。

上圖為Cydia Substrate在Android 4.4上注入后的進程maps表,其中l(wèi)ibsubstrate.so和libsubstrate-dvm.so兩個文件為Substrate必載入文件。通過IDA Pro分析對其分析。

先來看libsubstrate-dvm.so的導(dǎo)出表,共有9個函數(shù)導(dǎo)出。

當進程maps表中出現(xiàn)libsubstrate-dvm.so,可以嘗試去load該so文件并調(diào)用MSJavaHookMethod方法,它會返回該方法的地址即判定為惡意模塊(第三方程序)。

  1. void* lookup_symbol(char* libraryname,char* symbolname)   
  2.     void *imagehandle = dlopen(libraryname, RTLD_GLOBAL | RTLD_NOW); 
  3.     if (imagehandle != NULL){ 
  4.         void * sym = dlsym(imagehandle, symbolname); 
  5.         if (sym != NULL){ 
  6.             return sym; //發(fā)現(xiàn)Cydia Substrate相關(guān)模塊 
  7.             } 
  8.       ... 

該方式基于載入庫文件的文件名或文件路徑和導(dǎo)出函數(shù)來判斷是否為惡意模塊,如果完全依賴此方式來判斷可能會誤判,但也不失為檢測方式的一個點。

基于方法特征碼檢測

特征碼即用來判斷某段數(shù)據(jù)屬于哪個計算機字段。在非Root環(huán)境下一般一個正常App在啟動時候,系統(tǒng)會調(diào)度相關(guān)大小的內(nèi)存、空間給App使用,此時App的運行環(huán)境內(nèi)產(chǎn)生的數(shù)據(jù)、內(nèi)存、存儲等是獨立于其它App的(即獨立運行在沙箱中)。因為處于運行沙箱環(huán)境中的進程對沙箱的內(nèi)存有最高讀寫權(quán)限,當我們的App進程被惡意模塊附加或注入時,就可以通過對當前進程的PID所對應(yīng)的maps中加載的模塊進行合法校驗。這里的模塊校驗我們可以采取對單個模塊內(nèi)容取樣來判斷是否為惡意模塊,這種方式被定義為“基于方法的特征碼檢測”。

下面對一段程序段中OpcodeSample方法來提取特征碼。

方法原型:

  1. #define  LOGD(fmt, args...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, fmt, ##args)     
  2. void OpcodeSample(int a ,int b){   
  3.     int c,d,e; 
  4.     c = a + b; 
  5.     d = a * b; 
  6.     e = a / b; 
  7.     LOGD("Hello It's c !%s\n", c);   
  8.     LOGD("Hello It's d !%s\n", d);   
  9.     LOGD("Hello It's e !%s\n", e);   
  10.     return

通過IDA Pro對其分析。

左側(cè)紅色方框代表為OpcodeSample方法的操作碼,右邊為操作碼對應(yīng)ARM平臺的指令集。我們要在左側(cè)的操作碼中取出一段作為OpcodeSample的定位特征碼,選用__android_log_print方法調(diào)用指令集上下文,來確定特征碼。

第一次取樣:"03 20 31 46 42 46 FF F7 ?? EA"

通過第一次取樣,查找結(jié)果有三處相似,再進一步分析。這次我們加入一個常量取樣:

第二次取樣:"7E 44 ?? ?? F8 44 03 20 31 46 42 46 FF F7 ?? EA"

繼而得出唯一特征碼,到此,我們對特征碼方法取樣有了初步的了解。下面來把它轉(zhuǎn)為實用的技能——動態(tài)加載式檢測+特征碼結(jié)合。

我們對libsubstrate-dvm.so中導(dǎo)出函數(shù)MSJavaHookMethod來精準定位。

IDA PRO導(dǎo)出函數(shù)表如圖:

第三次取樣:"55 57 56 53 E8 CC 14 ?? ?? 81 C3 DB ?? ?? ?? 8D 64 ?? ?? 8B 83 F4 ?? ?? ??"

以上即為對Cydia Substrate的注入檢測識別,通過檢測/proc/self/maps下的加載so庫列表得到各個庫文件絕度路徑,通過fopen函數(shù)將so庫的內(nèi)容以16進制讀進來放在內(nèi)存里面進行規(guī)則比對,采用字符串模糊查找來檢測是否命中黑名單中的方法特征碼。

總結(jié)

在安全對抗領(lǐng)域,相比攻擊方,防守方歷來處于弱勢的一方。上文所提到的Xposed Installer和Cydia Substrate的檢測也僅僅是保障App安全的手段之一。App安全的防御不應(yīng)僅僅依賴于此,應(yīng)該構(gòu)建起整體的安全防御閉環(huán),盡可能在所有已知的可能攻擊點都追加檢測,再配合代碼加固,將防御代碼隱藏。遺憾的是App防御代碼隱藏再深也終究會被破解,僅僅依賴于客戶端的防御顯然是不足的。移動互聯(lián)網(wǎng)領(lǐng)域的整體安全防御應(yīng)該是走端云結(jié)合協(xié)作之道,共同防御,方能在攻防對抗中占據(jù)優(yōu)勢地位。

 【本文為51CTO專欄機構(gòu)“美團點評技術(shù)團隊”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號聯(lián)系機構(gòu)獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2017-03-06 14:44:49

Androidhook技術(shù)

2015-09-15 09:20:22

Neutron技術(shù)虛擬化

2023-12-25 08:25:42

AndroidHook應(yīng)用程序

2011-04-21 09:46:41

設(shè)計模式

2018-07-02 09:32:36

OceanBase列式存儲

2010-02-04 15:50:28

Android設(shè)備

2015-10-30 13:54:55

數(shù)據(jù)中心防雷SPD

2022-01-08 21:33:39

反入侵安全風(fēng)險攻擊

2011-07-05 11:06:52

2017-01-03 16:57:58

2021-08-11 08:41:20

全棧開發(fā)技術(shù)架構(gòu)前端

2014-03-06 09:42:25

無線技術(shù)802.11ac

2015-10-15 14:32:58

數(shù)據(jù)中心網(wǎng)絡(luò)融合技術(shù)DCB

2013-11-15 13:06:52

透明加解密hook技術(shù)數(shù)據(jù)安全

2015-07-16 11:14:59

Google數(shù)據(jù)中心網(wǎng)絡(luò)技術(shù)

2017-03-23 09:13:56

2022-08-31 15:08:34

家庭網(wǎng)關(guān)交互控制智能家居

2011-08-04 14:02:42

2018-10-08 15:31:30

2022-07-12 10:38:25

分布式框架
點贊
收藏

51CTO技術(shù)棧公眾號

久久一区二区电影| 丝袜人妻一区二区三区| 国产乱码精品一区二三区蜜臂 | 麻豆精品久久精品色综合| 日韩中文字幕在线免费观看| 韩国黄色一级片| 日本综合字幕| 亚洲午夜在线视频| 日本黄网免费一区二区精品| 精品国自产拍在线观看| 美女被久久久| 欧美成人激情视频免费观看| 久久精品老司机| 精品国产伦一区二区三区观看说明| 亚洲成年人网站在线观看| 日韩欧美在线电影| 免费成人在线看| 久久99蜜桃精品| 4438全国成人免费| 国产精品九九九九九九| 精品一二三区| 亚洲国产精彩中文乱码av在线播放 | 在线视频91p| 国产成人a级片| 国产精品吴梦梦| 国语对白永久免费| 欧美久久99| 日韩中文字幕网| 欧美做受xxxxxⅹ性视频| 97品白浆高清久久久久久| 欧美又粗又大又爽| 国产91在线免费| 欧美xxxx少妇| 自拍偷拍国产精品| 亚洲欧美日韩国产yyy| 日本亚洲欧美| 北条麻妃国产九九精品视频| 91亚洲va在线va天堂va国| 亚洲 小说区 图片区| 日韩午夜免费| 性欧美亚洲xxxx乳在线观看| 黄色一级免费视频| 国产精品久久久久久久| 中文字幕精品久久| 性猛交娇小69hd| 国产精品入口久久| 日韩av最新在线观看| 俄罗斯黄色录像| 亚洲一区网址| 精品裸体舞一区二区三区| 欧美精品 - 色网| 国产精品一区二区美女视频免费看| 欧洲精品在线观看| mm1313亚洲国产精品无码试看| 咪咪网在线视频| 精品国产乱码久久久久久天美| 少妇一晚三次一区二区三区| 欧美aaaxxxx做受视频| 一区二区三区日韩在线观看| 天天想你在线观看完整版电影免费| 91网在线播放| 亚洲免费观看高清完整版在线观看 | 一本色道久久综合精品竹菊| 激情综合网婷婷| 欧美片第1页| 欧美最新大片在线看| 超碰超碰在线观看| 91嫩草国产线观看亚洲一区二区| 69久久夜色精品国产69蝌蚪网| av在线网址导航| 亚洲1区在线| 欧美精品一区二区精品网| 丰满少妇一区二区三区| 激情综合网站| 久久久精品日本| 黄网站免费在线| 亚洲综合三区| 国产美女久久久| 国产不卡av在线播放| 成人中文字幕合集| 久久99精品久久久久子伦| 国产露出视频在线观看| 国产精品灌醉下药二区| 日韩精品一区二区在线视频| 国产中文在线播放| 欧美日韩精品是欧美日韩精品| 欧美性猛交乱大交| 日本中文字幕在线一区| 社区色欧美激情 | 看片网站在线观看| 久久久久久婷| 444亚洲人体| 色视频免费在线观看| 亚洲欧美自拍偷拍色图| 免费看日本毛片| 欧美亚洲二区| 日韩高清免费观看| 欧美色视频一区二区三区在线观看| 欧美久久久久| 国产精品亚洲精品| 少妇高潮久久久| 国产精品久久久久久亚洲伦| 每日在线观看av| 日韩大陆av| 亚洲精品久久久久久久久| 国产一二三四视频| 亚洲另类自拍| 91牛牛免费视频| 精品亚洲综合| 午夜在线成人av| 久久久九九九热| 国产日产精品一区二区三区四区的观看方式| 久久精品国产亚洲| 精品成人无码久久久久久| 国产精品亚洲成人| 亚洲精品中文字幕在线| 涩涩视频在线播放| 日韩精品一区二区三区蜜臀| 九一在线免费观看| 亚洲专区一区| 国产欧美一区二区三区另类精品| 菠萝菠萝蜜在线观看| 色一情一伦一子一伦一区| 国产女主播在线播放| 88国产精品视频一区二区三区| 国产成人短视频| 天天综合在线视频| 亚洲一区欧美一区| 无码人妻丰满熟妇区毛片蜜桃精品 | 少妇高潮喷水在线观看| 欧美中文高清| 久久久电影免费观看完整版| 国产情侣呻吟对白高潮| 久久免费美女视频| 少妇高潮喷水在线观看| 精品亚洲精品| 久久久在线免费观看| 精品久久人妻av中文字幕| 综合久久久久久久| 在线观看国产一级片| 精品国产91| 国产精品999999| 日本高清中文字幕二区在线| 欧美日韩国产丝袜美女| 中文在线观看免费视频| 精品999网站| 国产精品久久7| 97超碰免费在线| 亚洲高清在线观看| 免费观看成人毛片| 久久亚洲免费视频| 欧美少妇性生活视频| 欧美禁忌电影| 国产精品网红福利| 老司机在线看片网av| 91精品在线麻豆| 国产va在线播放| 国产精品正在播放| 青青在线免费观看| 亚洲免费成人av在线| 日韩免费av片在线观看| 成人在线免费看| 欧美精品v日韩精品v韩国精品v| 一级免费黄色录像| 国产精品综合一区二区| 丁香花在线影院观看在线播放| 农村少妇一区二区三区四区五区 | 日韩av一区二区在线播放| 99国产精品久久久久久久久久久| 欧美 日韩精品| 九九精品在线| 成人免费福利视频| 青草在线视频| 亚洲欧美国产制服动漫| 中文字幕av网站| 一区二区三区在线免费观看| 欧美日韩人妻精品一区在线| 国产精品女主播一区二区三区| 欧美一区二区视频17c| 麻豆久久久久| 欧美激情三级免费| 男操女在线观看| 欧美丰满美乳xxx高潮www| 久久精品国产亚洲av麻豆色欲| 91色在线porny| 中文字幕在线视频精品| 影音先锋在线一区| 亚洲精品不卡| 美女主播精品视频一二三四| 国产精品视频久久| 黑人另类精品××××性爽| 亚洲图片制服诱惑| 亚洲高清在线观看视频| 日本韩国欧美三级| 欧美人妻一区二区| 亚洲国产精华液网站w| 国产香蕉精品视频| 另类的小说在线视频另类成人小视频在线| 成人在线观看毛片| 欧美日韩国产高清电影| 国产高清在线精品一区二区三区| 色香欲www7777综合网| 欧美第一黄色网| 成人性生交大片免费看午夜| 精品国产一区久久| 91精品视频免费在线观看| 欧美日韩国产一区中文午夜| 久久国产高清视频| 国产区在线观看成人精品| 怡红院一区二区| 国产在线一区二区| 奇米影音第四色| 国产亚洲高清视频| 91传媒免费视频| 国产精品精品| 亚洲人成网站在线观看播放| 鲁大师精品99久久久| 亚洲一区亚洲二区| 国产成人毛片| 国产精品久久久久久亚洲影视 | 素人fc2av清纯18岁| 国产91对白在线观看九色| 亚洲一区二区在线视频观看| 久久久久国产精品一区三寸| 奇米精品一区二区三区| 欧美日韩综合| 国产免费xxx| 天天做天天爱天天爽综合网| 日韩尤物视频| 国产一区二区精品福利地址| 精品无人乱码一区二区三区的优势 | 久久久久久久毛片| 91在线一区二区三区| 中文字幕天堂av| 国产凹凸在线观看一区二区| 一级黄色在线播放| 精品一区二区免费| 91亚洲精品久久久蜜桃借种| 麻豆成人av在线| 午夜在线观看av| 久久精品国产秦先生| 美女扒开尿口让男人操亚洲视频网站 | 三级精品视频| 国产伦精品一区二区三区免费视频| 国产色99精品9i| 91成人理论电影| 久久国产精品美女| 91九色偷拍| avtt综合网| 国外成人免费视频| 91亚洲无吗| 精品无码久久久久国产| 色先锋久久影院av| 欧美激情一区二区三区在线视频| 欧美男同视频网| 亚洲国产精品久久久久久女王| av中字幕久久| 亚洲最新免费视频| 亚洲色图二区| 免费看日本黄色| 中文亚洲字幕| 天天干在线影院| 韩国v欧美v亚洲v日本v| 亚洲天堂小视频| 99精品偷自拍| 少妇精品无码一区二区免费视频| 国产精品福利影院| 福利所第一导航| 欧美日韩在线视频首页| av毛片在线免费观看| 欧美日韩一卡二卡| 午夜老司机福利| 日韩激情av在线免费观看| 国产青青草在线| 久久精品久久久久电影| 超碰在线网站| 国产精品高潮粉嫩av| 免费一级欧美片在线观看网站| 国产美女精品在线观看| 国产欧美日韩精品一区二区免费 | 五月天国产在线| 国产中文日韩欧美| 国产乱人伦丫前精品视频| 欧美日韩系列| 欧美fxxxxxx另类| 无码aⅴ精品一区二区三区浪潮 | 26uuu成人网| 午夜欧美2019年伦理| 中文字幕视频在线播放| 精品国产乱码久久| 色多多视频在线观看| 久久久久久com| 欧美成人福利| 久久国产精品久久精品国产| 天天做天天爱天天综合网2021| 欧美一级视频免费看| 久久精品国产久精国产| 欧美精品黑人猛交高潮| 综合av第一页| 夜夜躁日日躁狠狠久久av| 精品美女在线观看| 免费在线观看黄色网| 欧美亚洲一级片| 视频在线观看免费影院欧美meiju 视频一区中文字幕精品 | 最近中文字幕在线免费观看| 精品欧美乱码久久久久久| 午夜在线免费观看视频| 欧美性视频精品| 91亚洲无吗| 在线码字幕一区| 日韩精品电影在线| japanese在线观看| 亚洲欧美日韩中文播放| 国产一级片免费视频| 精品国产凹凸成av人网站| 免费观看久久久久| 国产精品嫩草视频| 香蕉久久夜色精品国产更新时间| 成人黄色片免费| 国内精品视频666| 美女三级黄色片| 在线欧美日韩精品| 黄色电影免费在线看| 91av在线看| 精品综合久久88少妇激情| 日本免费a视频| 国产精品自拍三区| 国产精品三区在线观看| 欧美美女黄视频| 免费大片在线观看www| 国产精品美女久久| 残酷重口调教一区二区| 乱子伦视频在线看| 久久久精品免费观看| 日韩色图在线观看| 亚洲人成网站777色婷婷| 中文字幕21页在线看| 久久国产精品高清| 美日韩精品视频| 97人妻精品一区二区免费| 欧美午夜视频一区二区| 亚洲三区在线观看无套内射| 2021久久精品国产99国产精品| 高潮久久久久久久久久久久久久| 国产黄色激情视频| 不卡免费追剧大全电视剧网站| 国产网站在线看| 日韩精品欧美激情| 亚洲成人av观看| 亚欧精品在线| 激情成人午夜视频| 免费在线观看h片| 亚洲精品一区二区三区福利| bl在线肉h视频大尺度| 久久av二区| 日韩电影在线免费| 娇小11一12╳yⅹ╳毛片| 制服丝袜中文字幕一区| 青青草原国产在线| 久久综合一区| 日韩av一区二区在线影视| 波多野结衣欲乱| 日韩欧美成人一区| 欧美激情网站| 视频一区国产精品| 国产伦理精品不卡| 日本三级片在线观看| 亚洲欧美日韩视频一区| 国外成人福利视频| 999久久欧美人妻一区二区| 97se亚洲国产综合自在线观| 免费视频网站在线观看入口| 久久精品2019中文字幕| 成人h动漫精品一区二区器材| 国产成人a亚洲精v品无码| 一色屋精品亚洲香蕉网站| 草草视频在线播放| 日本成人免费在线| 888久久久| 中文字幕成人动漫| 日韩一区二区三区电影在线观看 | 色香蕉久久蜜桃| 超碰在线免费公开| 欧美激情www| 国产激情91久久精品导航| 中文字幕免费在线观看视频| 久久精品99久久久久久久久| 嫩草国产精品入口| 爱爱爱爱免费视频| 黑人狂躁日本妞一区二区三区| 日本中文字幕在线看| 好吊色欧美一区二区三区| 老司机免费视频一区二区| 日本一区二区欧美| 爱福利视频一区| 伊人精品一区| 野战少妇38p| 欧美精品日韩综合在线| 伊人色综合一区二区三区影院视频| 福利网在线观看|