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

如何從命令行調用Android JNI函數并傳遞Java對象參數

安全 移動安全
當我們對某個使用原生庫(native library)的惡意軟件或者應用進行分析或滲透測試時,如果能夠對庫函數進行隔離和執行是再好不過的事情,這樣做我們就可以使用其自身的代碼來調試對抗惡意軟件。

一、前言

當我們對某個使用原生庫(native library)的惡意軟件或者應用進行分析或滲透測試時,如果能夠對庫函數進行隔離和執行是再好不過的事情,這樣做我們就可以使用其自身的代碼來調試對抗惡意軟件。舉個例子,如果惡意軟件包含加密字符串,并使用原生函數完成解密過程,你可以選擇花大量時間逆向分析算法來編寫自己的解密函數,也可以選擇直接利用這個函數來處理任意輸入數據。如果使用后一種方法,即使惡意軟件作者完全改變了軟件的加密算法,你也可能不需要做任何修改即可完成任務。在這篇文章中,我將向讀者介紹如何利用并執行原生庫函數,即使調用這些函數時需要傳入JVM實例作為參數也沒問題。

[[190216]]

在之前的一篇文章中,我介紹了如何從Android原生代碼中創建一個Java虛擬機,但我沒有給出一個具體的例子。因此,我會在本文中給出一個具體的例子來說明這一點。

我們至少可以使用兩種方法來調用原生函數。第一種方法是對應用進行修改,使應用接受你的輸入數據并傳遞給原生函數。例如,你可以寫一個intent filter,將其轉化為Smali語言,將代碼添加到目標應用中,修改manifest文件,運行應用,使用adb命令將帶有參數的intent發送給目標應用即可。另一種方法更好,你可以添加一個小型socket或web服務器,使用curl向其發送請求,這種方法不需要修改manifest文件。

第二種方法的目標是創建一個通過命令行運行的小型原生可執行工具,用來加載庫文件、調用目標函數、傳遞我們輸入的任意參數。這樣我們就可以單獨運行一個可執行文件,而不需要運行整個應用程序,因此調試起來也就更為方便。

二、目標應用

我創建了一個示例應用,方便讀者按照教程學習,應用名為“native-harness-target”。你可以使用以下命令將工程文件復制到本地并完成編譯(記得修改其中的“$ANDROID_*”變量)。

  1. git clone https://github.com/CalebFenton/native-harness-target.git 
  2. cd native-harness-target 
  3. echo 'ndk.dir=$ANDROID_NDK' > local.properties 
  4. echo 'sdk.dir=$ANDROID_SDK' >> local.properties 
  5. ./gradlew build 

APK文件最終生成在“app/build/outputs/apk/”目錄。這篇文章中,我使用的是一個x86模擬器鏡像以及一個名為“app-universal-debug.apk”的應用。

該應用程序包含一個加密字符串,并會在運行時使用原生庫對字符串進行解密。以下是在Smail中字符串的解密過程:

  1. const/16 v3, 0x57 
  2. new-array v1, v3, [B 
  3. fill-array-data v1, :array_2a 
  4. .local v1, "encryptedStringBytes":[B 
  5. invoke-static {}, Lorg/cf/nativeharness/Cryptor;->getInstance()Lorg/cf/nativeharness/Cryptor; 
  6. move-result-object v0 
  7. .line 21 
  8. .local v0, "c":Lorg/cf/nativeharness/Cryptor; 
  9. # v3 contains a String made from encrypted bytes 
  10. new-instance v3, Ljava/lang/String; 
  11. invoke-direct {v3, v1}, Ljava/lang/String;-><init>([B)V 
  12. # Call the decryption method, move result back to v3 
  13. invoke-virtual {v0, v3}, Lorg/cf/nativeharness/Cryptor;->decryptString(Ljava/lang/String;)Ljava/lang/String; 
  14. move-result-object v3 

三、構建Harness工具

我使用的是Tim 'diff' Strazzere開發的一款名為“native-shim”的工具(Tim是RedNaga的一名成員)作為整套利用工具的基礎,我將這個工具命名為“Harness”。在Android中,shim就像一個中間墊片,作用是加載一個庫,并調用其“JNI_OnLoad”方法。它可以使調試工作更加簡單,我們只需要使用調試器啟動shim,并將具體路徑以參數形式傳遞給目標庫即可。我們可以設置調試器的斷點,在庫加載時觸發斷點,這樣就能進入“JNI_OnLoad”函數的處理流程。此外,native-shim還可以加載庫文件(.so文件)、獲取函數的引用并調用函數,這一切對我們來說都非常實用。

首先,我添加了部分代碼以初始化一個Java虛擬機實例,并將該實例傳遞給JNI_OnLoad函數,這樣處理可以使JNI的初始化過程更為準確。如果沒有真實的虛擬機實例,JNI庫的內部狀態看起來可能會有些奇怪。不同庫文件的JNI_OnLoad的實現可能不盡相同,但這并不重要,重要的是這些實現都會檢查JNI版本,如這段代碼所示。因此我們需要創建一個虛擬機實例。

  1. printf(" [+] Initializing JavaVM Instance\n"); 
  2. JavaVM *vm = NULL
  3. JNIEnv *env = NULL
  4. int status = init_jvm(&vm, &env); 
  5. if (status == 0) { 
  6.   printf(" [+] Initialization success (vm=%p, env=%p)\n", vm, env); 
  7. } else { 
  8.   printf(" [!] Initialization failure (%i)\n", status); 
  9.   return -1; 
  10. printf(" [+] Calling JNI_OnLoad\n"); 
  11. onLoadFunc(vm, NULL); 

我們的最終目標是通過harness工具,開啟一個socket服務器,讀取socket上傳輸的參數,使用這些參數來調用函數。這樣一來,解密函數就會變成一個服務,我們可以簡單使用一個Python腳本與其通信。

四、理解目標函數

在調用函數前,我們需要了解函數的簽名(即參數個數和參數類型)及函數的返回類型。我們可以先看一下org.cf.nativeharness.Cryptor類的反編譯代碼,類中包含decryptString原生方法的聲明,如下所示:

  1. public class Cryptor { 
  2.     private static Cryptor instance = null
  3.     public static Cryptor getInstance() { 
  4.         if (instance == null) { 
  5.             instance = new Cryptor(); 
  6.         } 
  7.         return instance; 
  8.     } 
  9.     public native String decryptString(String encryptedString); 

從這段代碼中,我們可知該方法使用了一個String對象作為參數,返回了一個String對象,看上去比較簡單。現在我們將其轉化為原生函數形式,如下所示:

  1. Java_org_cf_nativeharness_Cryptor_decryptString(JNIEnv *env, jstring encryptedString) 

每個JNI原生方法都需要將JNIEnv對象作為第一個參數。這意味著定義我們函數的typedef語句應該如下所示:

  1. typedef jstring(*decryptString_t)(JNIEnv *, jstring); 

不幸的是,如果你試圖使用上述typedef語句執行這個函數,你會得到一個錯誤信息,如下所示:

  1. E/dalvikvm: JNI ERROR (app bug): attempt to use stale local reference 0x1 
  2. E/dalvikvm: VM aborting 
  3. A/libc: Fatal signal 6 (SIGABRT) at 0x00000a9a (code=-6), thread 2714 (harness) 

這讓我困惑了好一陣子。我原先以為我可能在某個地方使用了空指針引用,因此我花了很多功夫,添加了許多printf語句,將內存中所有相關指針的位置全部打印出來。這個錯誤信息貌似在提示我某個參數出現了問題,但我排查后發現所有指針都是正常的,沒有空引用情況。

我敢肯定我傳遞的參數沒有問題,問題可能出在JNI上。為了證實這一點,我使用了javah命令,它可以生成實現原生方法所需要的C語言頭文件以及源代碼文件。

為了完成這個工作,你需要安裝dex2jar,找到正確的類路徑,將“platforms/android-19”改為你已經安裝的具體平臺,如下所示:

  1. $ d2j-dex2jar.sh app-universal-debug.apk 
  2. dex2jar app-universal-debug.apk -> ./app-universal-debug-dex2jar.jar 
  3. $ javah -cp app-universal-debug-dex2jar.jar:$ANDROID_SDK/platforms/android-19/android.jar org.cf.nativeharness.Cryptor 

上述命令可以生成“_org_cf_nativeharness_Cryptor.h_”文件,其中包含如下信息:

  1. JNIEXPORT jstring JNICALL Java_org_cf_nativeharness_Cryptor_decryptString(JNIEnv *, jobject, jstring); 

我們可以看到多了一個jobject作為第二個參數,這究竟是為什么?如果你已經知道了這個問題的答案,我敢打賭你已經花了很多時間深入學習了Smali,特別是其中的invoke-virtual方法。無論你在何時調用虛擬方法(通常都是些非靜態方法),第一個參數總是某個對象的實例,這個實例負責方法的具體實現。對于這個例子來說,此時第一個參數應該是“org.cf.nativeharness.Cryptor”類的一個實例。

當然,你可以投機取巧,比如可以查看str-crypt.c代碼,找到函數的具體調用形式。但你要知道你是個逆向分析師(或滲透測試員),你不可能拿到源代碼。

因此正確的typedef語句中應該包含Cryptor實例的一個jobject對象,如下所示:

  1. typedef jstring(*decryptString_t)(JNIEnv *, jobject, jstring); 

你可能會感到好奇,為什么我們不以靜態方法開始介紹?沒有特別的理由,主要是因為我在寫這篇博客時,所分析的原始應用中目標方法不是靜態方法,僅此而已。

這一部分內容最大的收獲就是,如果你不確定函數的具體調用形式,你可以試一下javah命令,時刻牢記虛擬方法與Java中的Method#invoke()類似,使用某個實例對象作為第一個參數。

五、構建Socket服務器

這是整個工作中最無趣的一個環節,如果你不介意的話,我會跳過這一部分。你可以自行查看具體的實現源碼,如果愿意的話也可以提出修改意見。

六、Harness工具的使用方法

你可以通過如下幾個步驟來使用Harness工具。

1、啟動模擬器

2、將harness push到設備中

3、將目標原生庫及其他依賴庫push到設備中(本文示例中不涉及到依賴庫)

4、將目標應用push到設備中

5、運行harness工具

6、將模擬器的端口轉發到宿主機上

7、運行“decrypt_string.py”,祈禱一切順利

你可以使用以下命令將應用及原生庫push到設備中。

  1. $ adb push app/build/output/apk/app-universal-debug.apk /data/local/tmp/target-app.apk 
  2. $ unzip app/build/outputs/apk/app-universal-debug.apk lib/x86/libstr-crypt.so 
  3. Archive:  app/build/outputs/apk/app-universal-debug.apk 
  4.   inflating: lib/x86/libstr-crypt.so 
  5. $ adb push lib/x86/libstr-crypt.so /data/local/tmp 
  6. lib/x86/libstr-crypt.so: 1 file pushed. 1.5 MB/s (5476 bytes in 0.004s) 

使用如下命令將harness工具push到設備中。

  1. cd harness 
  2. make && make install 

注意:以上命令會將x86庫push到設備中,如果你確實想要使用其他的模擬器鏡像,你可以使用“adb push libs//harness /data/local/tmp”命令替換“make install”命令。

現在,你可以運行harness,將目標庫路徑作為第一個參數傳入,如下所示:

  1. $ adb shell /data/local/tmp/harness /data/local/tmp/libstr-crypt.so 
  2. [*] Native Harness 
  3.  [+] Loading target: [ /data/local/tmp/libstr-crypt.so ] 
  4.  [+] Library Loaded! 
  5.  [+] Found JNI_OnLoad, good 
  6.  [+] Initializing JavaVM Instance 
  7. WARNING: linker: libdvm.so has text relocations. This is wasting memory and is a security risk. Please fix. 
  8.  [+] Initialization success (vm=0xb8e420a0env=0xb8e420e0
  9.  [+] Calling JNI_OnLoad 
  10.  [+] Found decryptString function, good (0xb761f4f0) 
  11.  [+] Finding Cryptor class 
  12.  [+] Found Cryptor class: 0x1d2001d9 
  13.  [+] Found Cryptor.getInstance(): 0xb27bc270 
  14.  [+] Instantiated Cryptor class: 0x1d2001dd 
  15.  [+] Starting socket server on port 5001 

為了測試工具是否正常工作,你可以在另一個終端上運行如下命令:

  1. $ ./decrypt_string.py 
  2. Sending encrypted string 
  3. Decrypted string: "Seek freedom and become captive of your desires. Seek discipline and find your liberty." 

如果你在輸出結果中看到解密后的字符串,表明一切順利,非常完美。

七、總結

你可以根據實際情況,修改harness工具源碼中的目標函數。另外,實際場景中,目標程序錯綜復雜,我并不能保證這種方法100%有效。

責任編輯:趙寧寧 來源: 安全客
相關推薦

2016-12-15 08:30:02

Linux命令

2012-02-08 16:37:36

ibmdw

2020-12-06 08:00:46

scanimage命令行Linux

2019-07-15 05:50:19

Linux命令行VirtualBox版

2019-08-27 08:00:10

OpenStack命令虛擬機

2014-06-06 10:00:56

命令行監控Nginx Web服務

2019-01-22 13:46:01

LinuxUnix系統命令行

2014-10-22 12:03:14

Linux嗅探HTTP

2023-08-01 13:31:18

模型Alpacaicuna

2020-10-31 08:20:39

curl命令命令行互聯網

2018-06-19 16:05:27

LinuxStratis存儲

2021-09-18 09:19:21

Linux

2018-05-24 14:20:01

數據庫MySQL命令行

2014-04-10 10:10:16

KVMDebianUbuntu

2022-06-30 12:19:22

Linux

2022-10-20 16:51:44

Linux命令行IP 地址

2010-11-24 15:33:59

mysql命令行參數

2010-03-10 17:23:37

Python 命令行參

2020-12-11 06:44:16

命令行工具開發

2020-12-10 16:16:08

工具代碼開發
點贊
收藏

51CTO技術棧公眾號

国产剧情日韩欧美| 欧美第一在线视频| 波多野结衣在线观看一区二区 | 久久乐国产精品| 黄色av免费在线播放| 少妇aaaaa| 韩国主播福利视频一区二区三区| 激情伊人五月天久久综合| 国产视频欧美视频| 黄色大片在线免费看| 国产日韩免费视频| 久久影院一区| 欧美午夜精品免费| 日本成人三级电影网站| 99热在线观看免费精品| www国产精品| 一区二区三区在线视频免费观看| 国产精品高潮粉嫩av| free性中国hd国语露脸| 亚洲第一图区| 欧美高清视频在线观看mv| 欧美一卡2卡三卡4卡5免费| 天堂社区 天堂综合网 天堂资源最新版 | www.日本精品| 亚洲国产一区二区在线观看| 91久久精品一区二区三区| 精品国产_亚洲人成在线| 1024手机在线视频| 国产精品99久久免费| 国产精品免费视频观看| 国产美女91呻吟求| www.日本精品| 欧美日本国产| 精品粉嫩aⅴ一区二区三区四区| 国产四区在线观看| va婷婷在线免费观看| 欧美一区高清| 精品国产一区久久| 欧美性受xxxxxx黑人xyx性爽| h视频在线观看免费| 秋霞午夜av一区二区三区| 亚洲色图av在线| 午夜激情在线观看视频| 69视频在线| 国产在线精品不卡| 欧美国产亚洲精品久久久8v| 最新版天堂资源在线| 男人久久天堂| 国产精品色呦呦| 久久亚洲高清| 亚洲在线视频播放| 欧美女激情福利| 久久精品国产一区| 欧美成人精品一区二区综合免费| av美女在线观看| 91天堂素人约啪| 国产精品视频99| 国产乱国产乱老熟300| 菠萝蜜一区二区| 中文字幕久久精品| 久久精品无码一区二区三区毛片 | 九九热这里只有精品6| 免费黄视频在线观看| 欧美aa在线观看| 亚洲成精国产精品女| 欧美重口乱码一区二区| 日韩福利一区二区| 国产一区二区h| 国产精品自产拍在线观看| 中文字幕+乱码+中文| 国产精品扒开腿做爽爽爽软件| 精品国产免费久久 | 国产情侣自拍av| 久久九九免费| 久久综合国产精品台湾中文娱乐网| 蜜桃视频无码区在线观看| 亚洲日本va中文字幕| 色婷婷亚洲综合| 国产91视频一区| 伦理片一区二区三区| 国产乱码精品一区二区三区忘忧草| 久久99视频免费| 日本少妇激情视频| 欧美xxxxx视频| 久久亚洲影音av资源网| 久久免费黄色网址| 久久久久久久久久久妇女 | 18精品爽国产三级网站| 国产香蕉精品| 欧美电影一区二区| 六月丁香婷婷在线| 青草在线视频| 亚洲色图.com| 亚洲成人精品电影在线观看| 免费国产精品视频| 国产精品一区二区久久不卡| 国产成人精品免费视频大全最热| 伊人久久亚洲综合| 国产福利一区在线| 国产专区精品视频| 日本三级黄色大片| 蜜臀久久久久久久| 国产成人一区二| 毛片视频网站在线观看| 男女性色大片免费观看一区二区| 亚洲综合第一页| 91亚洲精品国偷拍自产在线观看 | 国产老妇伦国产熟女老妇视频| 日韩午夜免费视频| 欧美高清激情视频| 久久永久免费视频| 久久美女性网| 57pao成人国产永久免费| 久久国产免费观看| 自拍偷拍欧美专区| 久久综合亚洲社区| 黄色污污网站在线观看| 免费看亚洲片| 日韩免费不卡av| 成人h动漫精品一区二区下载| 国产综合色产在线精品| 日本精品二区| 擼擼色在线看观看免费| 91麻豆精品国产91久久久使用方法 | 九一九一国产精品| 国产精品日韩在线播放| 免费国产精品视频| 亚洲一区在线观看免费| 日韩中字在线观看| 绿色成人影院| 日韩视频免费直播| 日本中文字幕精品| 成人av婷婷| 蜜臀久久99精品久久久无需会员| 国内毛片毛片毛片毛片毛片| 成人情趣视频网站| 欧美亚洲国产视频| 人人妻人人玩人人澡人人爽| 亚洲天堂免费看| 蜜臀一区二区三区精品免费视频| 伊人久久大香伊蕉在人线观看热v| 欧美日韩精品一二三区| 99精品999| 日韩精品免费一区二区在线观看 | 91福利在线播放| aaaaa一级片| av资源久久| 久久不射电影网| 亚洲一区二区色| 国产精品天美传媒沈樵| 国产一级黄色录像片| 国产黄色大片在线观看| 色综合天天视频在线观看| jlzzjizz在线播放观看| 国产欧美日韩视频在线| 丝袜一区二区三区| 五月天婷婷网站| 国产成人精品影视| 成人午夜免费在线视频| 成人av免费电影网站| 日韩电影中文字幕一区| 老司机福利在线观看| 青青青伊人色综合久久| 欧美人与性禽动交精品| 免费人成在线观看播放视频| 亚洲国产一二三| 少妇搡bbbb搡bbb搡打电话| 欧美视频亚洲视频| 国产综合动作在线观看| 思思99re6国产在线播放| 午夜精品久久久久久久蜜桃app| 国产又大又黄又粗的视频| 欧美限制电影| 91麻豆桃色免费看| 超碰在线影院| 5566中文字幕一区二区电影| 黄色a级片在线观看| 国产精品一区在线观看乱码| 日本大片免费看| 午夜先锋成人动漫在线| 久久成人一区二区| 黄色三级网站在线观看| 中文字幕在线观看一区二区| av免费观看大全| 亚瑟一区二区三区四区| 国产精品久久一区| 性直播体位视频在线观看| 亚洲国产高清福利视频| a级片在线观看免费| 波多野结衣亚洲一区| 2021狠狠干| 亚洲欧美专区| 羞羞色国产精品| 精品国产乱码一区二区三 | 蜜臀精品一区二区三区在线观看| 中文字幕成人一区| 天堂√中文最新版在线| 日韩免费高清视频| 91嫩草丨国产丨精品| 日韩精品一区第一页| 精品国产福利| 午夜不卡一区| 日韩视频一区在线| 亚洲最新av网站| 香蕉av福利精品导航| 国产精品成人无码免费| 噜噜噜久久亚洲精品国产品小说| 中文字幕剧情在线观看一区| 免费看成人人体视频| 久久久久久久久久久91| 亚洲精品97久久中文字幕无码| 亚洲人成在线观看一区二区| 亚洲精品中文字幕在线播放| 日本不卡视频在线| 日日碰狠狠添天天爽超碰97| 国产精品传媒| 91九色综合久久| 成人免费网站www网站高清| 国产亚洲精品美女久久久| 波多野结衣在线电影| 亚洲国产视频a| www.99re7| 国产精品国产精品国产专区不蜜 | 久久久久狠狠高潮亚洲精品| 午夜精品av| 中文字幕在线观看一区二区三区| 私拍精品福利视频在线一区| 97se视频在线观看| 视频在线这里都是精品| 国产亚洲欧洲高清| 天堂成人在线视频| 色综合av在线| 国产污污视频在线观看| 亚洲自拍偷拍av| 少妇饥渴放荡91麻豆| 国产精品一二三| 视频免费1区二区三区| 捆绑紧缚一区二区三区视频| 97超碰在线视| 在线观看国产精品入口| 国产精品av免费| 亚州av乱码久久精品蜜桃| 老司机av福利| 亚洲精品网址| 欧洲美女和动交zoz0z| 午夜精品毛片| 日本高清xxxx| 综合激情婷婷| 天天想你在线观看完整版电影免费| 人人狠狠综合久久亚洲婷婷| 日韩av在线一区二区三区| 国产精品亚洲一区二区在线观看 | 丝袜亚洲另类欧美重口| 91美女视频在线| 在线精品国产欧美| 亚洲av无码乱码国产精品| 欧美一区二区三区播放老司机| 国产又粗又猛又黄| 宅男噜噜噜66一区二区66| va视频在线观看| 亚洲成在人线av| 午夜视频www| 555夜色666亚洲国产免| 国产精品一区二区av白丝下载| 欧美一区二视频| 亚洲成人中文字幕在线| 亚洲成人精品久久久| 手机福利小视频在线播放| 欧美日韩国产综合草草| 亚洲综合精品视频| 日韩欧美黄色影院| 亚洲欧美日韩免费| 国产亚洲精品久久久久久| 拍真实国产伦偷精品| 欧美福利小视频| 秋霞伦理一区| 国产精品青青在线观看爽香蕉| 成人短视频软件网站大全app| 亚洲一区二区三区成人在线视频精品 | 国产精品mm| 久草资源站在线观看| 中文无码久久精品| 欧美图片激情小说| 一区二区不卡| 国产一级爱c视频| 日韩在线a电影| 少妇欧美激情一区二区三区| 99视频国产精品| xxxxwww一片| 久久一区二区视频| 色婷婷免费视频| 国产精品视频免费| 国产午夜精品一区二区理论影院 | 国产综合色区在线观看| 成人免费在线视频网站| 国产精品字幕| 国产成人在线视频| 久久免费精品| 日本免费高清一区二区| 中文字幕亚洲精品乱码| 久久国产乱子伦免费精品| 国模无码大尺度一区二区三区| 亚洲视频 中文字幕| 国产精品久久久99| 天天干天天干天天干天天| 午夜成人免费视频| 91丨九色丨蝌蚪丨对白| 亚洲精品永久免费精品| 51xtv成人影院| 欧美夫妻性生活视频| 电影亚洲一区| 久久久福利视频| 亚洲精品3区| 欧美日韩在线精品| 欧美激情aⅴ一区二区三区| 午夜免费精品视频| 99久久精品一区二区| 91杏吧porn蝌蚪| 欧美性生活一区| 亚洲三区在线观看无套内射| 久久亚洲成人精品| 韩国精品视频在线观看| 国产日产亚洲精品| 女人av一区| 亚洲一区综合| 亚洲综合激情在线| 亚洲一区在线不卡| 国产真实乱子伦精品视频| 右手影院亚洲欧美| 红桃av永久久久| 超碰在线97观看| 欧美日韩成人综合天天影院| 视频一区二区在线播放| 久久久久免费视频| 亚洲日本va| 欧美这里只有精品| 国产·精品毛片| 久久久久久久久免费看无码 | 麻豆一区二区三区在线观看| 日韩国产一区二| 中文字幕被公侵犯的漂亮人妻| 中文一区在线播放| 国产精品欧美综合| 亚洲丝袜av一区| 美女色狠狠久久| 天堂资源在线亚洲视频| 青娱乐精品在线视频| 激情高潮到大叫狂喷水| 亚洲国产va精品久久久不卡综合| 国产三级自拍视频| 欧美精品在线播放| 91精品短视频| 少妇人妻无码专区视频| 99视频精品在线| 亚洲av无码不卡| 中文字幕日韩免费视频| 四虎影视国产精品| 久久久久亚洲av无码专区喷水| 国产伦理精品不卡| 国产香蕉在线视频| 精品视频在线观看日韩| 九九热线视频只有这里最精品| 日韩黄色影视| 久久精品国产第一区二区三区| 91精品少妇一区二区三区蜜桃臀| 7777女厕盗摄久久久| 18+激情视频在线| 国产一区二区免费在线观看| 亚洲一区二区三区免费在线观看| 91av视频免费观看| 亚洲六月丁香色婷婷综合久久| 色av性av丰满av| 日韩精品一区二区三区在线播放| a天堂中文在线官网在线| 国产suv精品一区二区| 精品国产一区二区三区av片| 91看片在线免费观看| 亚洲私人影院在线观看| 精品人妻一区二区三区换脸明星| 97视频在线观看网址| 久久av导航| 91pony九色| 精品毛片网大全| 欧美日韩在线看片| 国产日韩在线一区二区三区| 久久九九99| 免费在线视频一区二区| 亚洲精品一区中文字幕乱码| 日日夜夜一区| 日本三级免费网站| 亚洲人成亚洲人成在线观看图片 | 一区二区三区国产视频| 亚洲三级av| 日本免费观看网站| 亚洲成人午夜影院| 免费在线观看av| 免费一区二区三区| 国产+成+人+亚洲欧洲自线| 午夜一区二区三区四区| 久久久久久久国产精品视频|