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

2020年Android最新保活實現原理揭秘

新聞 Android
一直以來,App進程保活都是各大廠商,特別是頭部應用開發商永恒的追求。

2020年Android最新保活實現原理揭秘

保活實現原理

本文由鴻洋大神提供,作者引用分享。

一直以來,App進程保活都是各大廠商,特別是頭部應用開發商永恒的追求。

畢竟App 進程死了,就什么也干不了了;一旦 App進程死亡,那就再也無法在用戶的手機上開展任何業務,所有的商業模型在【用戶方】都沒有用武之地了。

早期的 Android 系統不完善,導致很多App有很多空子可以鉆,因此它們有著各種各樣的姿勢進行保活。

譬如說在 Android 5.0 以前,App 內部通過 native 方式 fork 出來的進程是不受系統管控的,系統在殺 App 進程的時候,只會去殺 App 啟動的 Java 進程。

因此誕生了一大批“毒瘤”,他們通過 fork native 進程,在 App 的 Java 進程被殺死的時候通過 am命令拉起自己從而實現永生。

那時候的 Android 可謂是魑魅橫行,群魔亂舞;系統根本管不住應用,因此長期以來被人詬病耗電、卡頓。

同時,系統的軟弱導致了 Xposed 框架、阻止運行、綠色守護、黑域、冰箱等一系列管制系統后臺進程的框架和 App 出現。

不過,隨著 Android 系統的發展,這一切都在往好的方向演變。

  • Android 5.0 以上,系統殺進程以 uid 為標識,通過殺死整個進程組來殺進程,因此 native 進程也躲不過系統的法眼。
  • Android 6.0 引入了待機模式(doze),一旦用戶拔下設備的電源插頭,并在屏幕關閉后的一段時間內使其保持不活動狀態,設備會進入低電耗模式,在該模式下設備會嘗試讓系統保持休眠狀態。
  • Android 7.0 加強了之前雞肋的待機模式(不再要求設備靜止狀態),同時對開啟了 Project Svelte,Project Svelte 是專門用來優化 Android 系統后臺的項目,在 Android 7.0 上直接移除了一些隱式廣播,App 無法再通過監聽這些廣播拉起自己。
  • Android 8.0 進一步加強了應用后臺執行限制:一旦應用進入已緩存狀態時,如果沒有活動的組件,系統將解除應用具有的所有喚醒鎖。另外,系統會限制未在前臺運行的應用的某些行為,比如說應用的后臺服務的訪問受到限制,也無法使用 Mainifest 注冊大部分隱式廣播。
  • Android 9.0 進一步改進了省電模式的功能并加入了應用待機分組,長時間不用的 App 會被打入冷宮;另外,系統監測到應用消耗過多資源時,系統會通知并詢問用戶是否需要限制該應用的后臺活動。

然而,道高一尺,魔高一丈。系統在不斷演進,保活方法也在不斷發展。大約在 4 年前出現過一個 MarsDaemon,這個庫通過雙進程守護的方式實現保活,一時間風頭無兩。

不過好景不長,進入 Android 8.0 時代之后,這個庫就逐漸消亡。

一般來說,Android 進程保活分為兩個方面:

  • 保持進程不被系統殺死。
  • 進程被系統殺死之后,可以重新復活。

隨著 Android 系統變得越來越完善,單單通過自己拉活自己逐漸變得不可能了;因此后面的所謂「保活」基本上是兩條路:

  • 提升自己進程的優先級,讓系統不要輕易弄死自己;
  • App 之間互相結盟,一個兄弟死了其他兄弟把它拉起來。

當然,還有一種終極方法,那就是跟各大系統廠商建立 PY【朋友,然而我一直覺得是(pi yan)】 關系,把自己加入系統內存清理的白名單;比如說國民應用微信。當然這條路一般人是沒有資格走的。

大約一年以前,大神 gityuan 在其博客上公布了 TIM 使用的一種可以稱之為「終極永生術」的保活方法;這種方法在當前 Android 內核的實現上可以大大提升進程的存活率。筆者研究了這種保活思路的實現原理,并且提供了一個參考實現 Leoric。

接下來就給大家分享一下這個終極保活黑科技的實現原理。

保活的底層技術原理

知己知彼,百戰不殆。

既然我們想要保活,那么首先得知道我們是怎么死的。

一般來說,系統殺進程有兩種方法,這兩個方法都通過 ActivityManagerService 提供:

  • killBackgroundProcesses
  • forceStopPackage

在原生系統上,很多時候殺進程是通過第一種方式,除非用戶主動在 App 的設置界面點擊「強制停止」。

2020年Android最新保活實現原理揭秘

強制停止

不過國內各廠商以及一加三星等 ROM 現在一般使用第二種方法。

第一種方法太過溫柔,根本治不住想要搞事情的應用。

第二種方法就比較強力了,一般來說被 force-stop 之后,App 就只能乖乖等死了。

因此,要實現保活,我們就得知道 force-stop 到底是如何運作的。既然如此,我們就跟蹤一下系統的 forceStopPackage 這個方法的執行流程:

首先是 ActivityManagerService里面的 forceStopPackage 這方法:

2020年Android最新保活實現原理揭秘

ActivityManagerService forceStopPackage

在這里我們可以知道,系統是通過 uid 為單位 force-stop 進程的,因此不論你是 native 進程還是 Java 進程,force-stop 都會將你統統殺死。我們繼續跟蹤 forceStopPackageLocked 這個方法:

2020年Android最新保活實現原理揭秘

forceStopPackageLocked

這個方法實現很清晰:

先殺死這個 App 內部的所有進程,然后清理殘留在 system_server 內的四大組件信息;我們關心進程是如何被殺死的,因此繼續跟蹤 killPackageProcessesLocked,這個方法最終會調用到 ProcessList 內部的 removeProcessLocked 方法, removeProcessLocked 會調用 ProcessRecord 的 kill 方法,我們看看這個 kill:

2020年Android最新保活實現原理揭秘

這里我們可以看到,首先殺掉了目標進程,然后會以 uid為單位殺掉目標進程組。

如果只殺掉目標進程,那么我們可以通過雙進程守護的方式實現保活;

關鍵就在于這個 killProcessGroup,繼續跟蹤之后發現這是一個 native 方法,它的最終實現在 libprocessgroup中,代碼如下:

2020年Android最新保活實現原理揭秘

注意這里有個奇怪的數字:40

我們繼續跟蹤:

2020年Android最新保活實現原理揭秘

瞧瞧我們的系統做了什么騷操作?循環 40 遍不停滴殺進程,每次殺完之后等 5ms,循環完畢之后就算過去了。

看到這段代碼,我想任何人都會蹦出一個疑問:假設經歷連續 40 次的殺進程之后,如果 App 還有進程存在,那不就僥幸逃脫了嗎?

實現方法

那么,如何實現這個目的呢?

我們看這個關鍵的 5ms。假設,App 進程在被殺掉之后,能夠以足夠快的速度(5ms 內)啟動一堆新的進程,那么系統在一次循環殺掉老的所有進程之后,sleep 5ms 之后又會遇到一堆新的進程;如此循環 40 次,只要我們每次都能夠拉起新的進程,那我們的 App 就能逃過系統的追殺,實現永生。

是的,煉獄般的 200ms,只要我們熬過 200ms 就能渡劫成功,得道飛升。

不知道大家有沒有玩過打地鼠這個游戲,整個過程非常類似,按下去一個又冒出一個,只要每次都能足夠快地冒出來,我們就贏了。

現在問題的關鍵就在于:

如何在 5ms 內啟動一堆新的進程?

再回過頭來看原來的保活方式,它們拉起進程最開始通過 am命令,這個命令實際上是一個 java 程序,它會經歷啟動一個進程然后啟動一個 ART 虛擬機,接著獲取 ams 的 binder 代理,然后與 ams 進行 binder 同步通信。

這個過程實在是太慢了,在這與死神賽跑的 5ms 里,它的速度的確是不敢恭維。

后來,MarsDaemon 提出了一種新的方式,它用 binder 引用直接給 ams 發送 Parcel,這個過程相比 am命令快了很多,從而大大提高了成功率。其實這里還有改進的空間,畢竟這里還是在 Java 層調用,Java 語言在這種實時性要求極高的場合有一個非常令人詬病的特性:

垃圾回收(GC);雖然我們在這 5ms 內直接碰上 gc 引發停頓的可能性非常小,但是由于 GC 的存在,ART 中的 Java 代碼存在非常多的 checkpoint;

想象一下你現在是一個信使有重要軍情要報告,但是在路上卻碰到很多關隘,而且很可能被勒令暫時停止一下,這種情況是不可接受的。因此,最好的方法是通過 native code 給 ams 發送 binder 調用;

當然,如果再底層一點,我們甚至可以通過 ioctl 直接給 binder 驅動發送數據進而完成調用,但是這種方法的兼容性比較差,沒有用 native 方式省心。

通過在 native 層給 ams 發送 binder 消息拉起進程,我們算是解決了「快速拉起進程」這個問題。但是這個還是不夠。還是回到打地鼠這個游戲,假設你摁下一個地鼠,會冒起一個新的地鼠,那么你每次都能摁下去最后獲取勝利的概率還是比較高的;

但如果你每次摁下一個地鼠,其他所有地鼠都能冒出來呢?這個難度系數可是要高多了。如果我們的進程能夠在任意一個進程死亡之后,都能讓把其他所有進程全部拉起,這樣系統就很難殺死我們了。

新的保活技術中通過 2 個機制來保證進程之間的互相拉起:

  1. 2 個進程通過互相監聽文件鎖的方式,來感知彼此的死亡。
  2. 通過 fork 產生子進程,fork 的進程同屬一個進程組,一個被殺之后會觸發另外一個進程被殺,從而被文件鎖感知。

具體來說,創建 2 個進程 p1, p2,這兩個進程通過文件鎖互相關聯,一個被殺之后拉起另外一個;同時 p1 經過 2 次 fork 產生孤兒進程 c1,p2 經過 2 次 fork 產生孤兒進程 c2,c1 和 c2 之間建立文件鎖關聯。這樣假設 p1 被殺,那么 p2 會立馬感知到,然后 p1 和 c1 同屬一個進程組,p1 被殺會觸發 c1 被殺,c1 死后 c2 立馬感受到從而拉起 p1,因此這四個進程三三之間形成了鐵三角,從而保證了存活率。

分析到這里,這種方案的大致原理我們已經清晰了。

基于以上原理,我寫了一個簡單的 PoC,代碼在這里:

https://github.com/xinjianteng/Leoric

有興趣的可以看一下。

AMS 在執行殺進程時是一個 ProcessRecord 一個地來的( https://android.googlesource.com/platform/frameworks/base/+/4f868ed/services/core/java/com/android/server/am/ActivityManagerService.java#5766),也就是最終會執行多次 libprocessgroup 里的 killProcessgroup。

這樣只要在殺死屬于某個 cgroup 的進程時,另外的進程只要成功啟動一次 android:process 是另外的的進程即可活下來。因為新對應新的 ProcessRecord,不會在上面那個循環里被殺死。此外,循環四十次反而給了超長的時間來啟動新的,觀察 log 可以發現 killProcessgroup 的間隔長達幾十到一百多 ms。

改進空間

本方案的原理還是比較簡單直觀的,但是要實現穩定的保活,還需要很多細節要補充;特別是那與死神賽跑的 5ms,需要不計一切代價去優化才能提升成功率。

具體來說,就是當前的實現是在 Java 層用 binder 調用的,我們應該在 native 層完成。筆者曾經實現過這個方案,但是這個庫本質上是有損用戶利益的,因此并不打算公開代碼,這里簡單提一下實現思路供大家學習:

如何在 native 層進行 binder 通信?

libbinder 是 NDK 公開庫,拿到對應頭文件,動態鏈接即可。

難點:依賴繁多,剝離頭文件是個體力活。

如何組織 binder 通信的數據?

通信的數據其實就是二進制流;具體表現就是 (C++/Java) Parcel 對象。native 層沒有對應的 Intent Parcel,兼容性差。

方案:

  1. Java 層創建 Parcel (含 Intent),拿到 Parcel 對象的 mNativePtr(native peer),傳到 Native 層。
  2. native 層直接把 mNativePtr 強轉為結構體指針。
  3. fork 子進程,建立管道,準備傳輸 parcel 數據。
  4. 子進程讀管道,拿到二進制流,重組為 parcel。

如何應對?

今天我把這個實現原理公開,并且提供 PoC 代碼,并不是鼓勵大家使用這種方式保活,而是希望各大系統廠商能感知到這種黑科技的存在,推動自己的系統徹底解決這個問題。

兩年前我就知道了這個方案的存在,不過當時鮮為人知。

最近一個月我發現很多 App 都使用了這種方案,把我的 Android 手機折騰的慘不忍睹;畢竟本人手機上安裝了將近 800 個 App,假設每個 App 都用這個方案保活,那這系統就沒法用了。

系統如何應對?

如果我們把系統殺進程比喻為斬首,那么這個保活方案的精髓在于能快速長出一個新的頭;因此應對之法也很簡單,只要我們在斬殺一個進程的時候,讓別的進程老老實實呆著別搞事情就 OK 了。具體的實現方法多種多樣,不贅述。

用戶如何應對?

在廠商沒有推出解決方案之前,用戶可以有一些方案來緩解使用這個方案進行保活的流氓 App。

這里推薦兩個應用給大家:

  • 冰箱
  • Island

通過冰箱的凍結和 Island 的深度休眠可以徹底阻止 App 的這種保活行為。當然,如果你喜歡別的這種“凍結”類型的應用,比如小黑屋或者太極的陰陽之門也是可以的。

其他不是通過“凍結”這種機制來壓制后臺的應用理論上對這種保活方案的作用非常有限。

總結

1. 對技術來說,黑科技沒有什么黑的,不過是對系統底層原理的深入了解從而反過來對抗系統的一種手段。很多人會說,了解系統底層有什么用,本文應該可以給出一個答案:可以實現別人永遠也無法實現的功能,通過技術推動產品,從而產生巨大的商業價值。

2. 黑科技雖強,但是它不該存在于這世上。沒有規矩,不成方圓。黑科技黑的了一時,黑不了一世。要提升產品的存活率,終歸要落到產品本身上面來,尊重用戶,提升體驗方是正途。

 

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2022-10-24 08:03:04

MySQL數據庫

2020-03-19 10:13:13

OkHttpWebSocket

2019-09-23 08:27:15

TCP長連接心跳

2019-12-31 09:11:01

后臺Android系統

2020-09-22 08:52:50

平臺實現消息

2020-03-02 15:05:56

Java前端學習路線

2021-07-19 09:25:19

數據庫MySQL技術

2022-04-08 08:32:40

mobx狀態管理庫redux

2025-06-12 05:00:00

@Autowired自動裝配實現機制

2024-10-10 17:46:06

2012-12-27 09:40:41

大數據云端存儲數據分析

2021-05-13 23:30:17

JavaScript 原理揭秘

2023-01-26 23:44:41

C++代碼生命周期

2016-08-11 09:19:36

AndroidService通訊應用

2016-06-13 09:18:21

2024-10-11 16:57:18

2012-09-24 10:03:04

Intel零能耗計算

2022-11-18 18:36:24

2019-11-15 15:12:19

Windows激活KMS

2020-02-11 17:17:54

RSAC信息安全會議RSA大會
點贊
收藏

51CTO技術棧公眾號

伦伦影院午夜理论片| 日韩免费av片| 波多野结衣一区二区三区四区| 国产精品久久久久久久久久齐齐 | 亚洲国产精品久久久久久6q| 国产伦精品一区二区三区千人斩| 亚洲免费av观看| 国产极品jizzhd欧美| 欧美高清视频一区二区| 污污视频网站免费观看| 国产深喉视频一区二区| 精品美女视频| 91豆麻精品91久久久久久| 国产综合18久久久久久| 日本a级片视频| 成人黄色理论片| 中文字幕一区二区三中文字幕| 日韩av电影国产| 青青草视频成人| av福利导福航大全在线| 国产精品成人a在线观看| 色狠狠色狠狠综合| 黄色一级大片免费| 精品人妻av一区二区三区| 99久久www免费| 亚洲精品一区二区三区不| 欧美 国产 综合| 四虎在线免费看| 午夜一区二区三区不卡视频| 日韩高清有码在线| 91猫先生在线| 日本福利片在线| 久久精品综合| 中文字幕欧美在线| 天天操,天天操| 蜜芽在线免费观看| 国产一区二区三区免费观看| 久久精品久久久久久| 午夜激情视频网| 欧美xxxx少妇| 91最新地址在线播放| 热久久美女精品天天吊色| 精品欧美乱码久久久久久| 日本高清xxxx| 成人免费视频国产| 一本一本久久| 国产一区二区三区18| 久热在线视频观看| 婷婷丁香在线| 91麻豆精东视频| 国产精品 欧美在线| 国产精品免费av一区二区| 在线电影一区| 亚洲色图狂野欧美| 精品综合久久久久| 韩国日本一区| 欧美极品xxx| 不卡视频一区二区三区| 日韩三级视频在线| 亚洲免费大片| 2018中文字幕一区二区三区| 免费看的黄色录像| 国产精品传媒| 精品视频免费在线| 国产av人人夜夜澡人人爽麻豆| 精品999视频| 国产精选一区二区三区| 欧美孕妇性xx| 免费国产羞羞网站美图| 香蕉精品久久| 777午夜精品免费视频| 国模无码视频一区二区三区| 182在线播放| 黑人巨大精品欧美一区二区免费| 欧美性视频在线播放| 少妇一级淫片免费看| 蜜桃一区二区三区在线观看| 久久男人的天堂| a级黄色免费视频| 99精品视频在线观看免费播放| 欧美另类暴力丝袜| 激情五月深爱五月| 中文一区一区三区免费在线观看| 亚洲欧美日韩爽爽影院| 天天躁日日躁狠狠躁av| 日本成人在线网站| 一本色道久久综合亚洲91| 乱熟女高潮一区二区在线| 嗯~啊~轻一点视频日本在线观看| 中文字幕日韩av资源站| 欧美在线一二三区| 香蕉av在线播放| 国产成人av福利| 成人亚洲欧美一区二区三区| 亚洲一二区视频| 日本午夜精品视频在线观看 | 男女性色大片免费观看一区二区 | 久久国产精品成人免费观看的软件| 亚洲国产精久久久久久久| 涩涩网站在线看| 国产精品美女在线观看直播| 在线观看日韩专区| 人人人妻人人澡人人爽欧美一区| 欧美日韩一区二区三区四区不卡 | 永久看看免费大片| 国产亚洲精彩久久| 精品国产百合女同互慰| 日韩精品――色哟哟| 韩国一区二区三区视频| 欧美酷刑日本凌虐凌虐| 九九热精品在线播放| 97视频一区| 精品久久人人做人人爰| caopeng视频| 国产一区二区三区电影在线观看 | 亚洲黄色一区二区三区| 九色蝌蚪在线| 亚洲激情男女视频| 久久成人福利视频| www555久久| 欧美日韩1234| 成人性生交视频免费观看| 日韩电影不卡一区| 欧美黄色小视频| 91成品人影院| 国产精品一区二区果冻传媒| 欧美日韩精品久久久免费观看| 青青国产在线| 亚洲成人你懂的| 2022亚洲天堂| 99re8这里有精品热视频8在线 | 日韩一区二区麻豆国产| 色哟哟免费视频| 精品国产乱码久久久久久1区2匹| 欧美亚洲在线视频| 天天舔天天干天天操| 一区二区激情视频| 国产高清自拍视频| 伊人春色在线观看| 一区二区三区四区不卡在线 | 国产丶欧美丶日本不卡视频| 95av在线视频| 久久久久青草大香线综合精品| 啪啪国产精品| 狠狠综合久久av一区二区小说 | 国产一级片视频| 在线中文字幕第一区| 国产精品男女猛烈高潮激情| 国产精品久久综合青草亚洲AV| 黑人精品欧美一区二区蜜桃| 成人av免费电影| av网站免费在线观看| 91精品国产免费久久综合| 日本50路肥熟bbw| 精品久久影院| 国产精品视频内| av在线电影网| 亚洲国产成人精品视频| 日本xxxx免费| 在线观看一区视频| 就去色蜜桃综合| 国产一二三区在线观看| 欧美特级www| 香蕉视频xxxx| 亚洲欧美综合国产精品一区| 国产精品69精品一区二区三区| 男女污污视频在线观看| 一区二区三区不卡在线观看| 亚洲av无码专区在线播放中文| 亚洲高清自拍| 国产精品成人va在线观看| 性少妇videosexfreexxx片| 一区二区三区四区国产精品| 黄色免费看视频| 久久久久亚洲| 国产精品久久二区| 在线观看麻豆| 色综合久久久网| www.日本高清视频| 欧美亚洲一级| 亚洲成人av动漫| 视频亚洲一区二区| yw.139尤物在线精品视频| 丰满人妻老熟妇伦人精品| 国产91在线看| 欧美黄网站在线观看| 91综合精品国产丝袜长腿久久| 97精品视频在线| 午夜精品久久久久久久99热黄桃| 亚洲国产美女搞黄色| 在线不卡av电影| 国产麻豆精品在线| 日本不卡在线观看视频| 99久久99久久精品国产片果冰| 国产亚洲欧美一区二区三区| 成人在线不卡| 性欧美视频videos6一9| 91在线视频| 日韩国产高清污视频在线观看| 91成人国产综合久久精品| 亚洲成人精品影院| 色哟哟一一国产精品| 蜜臀91精品一区二区三区| 日韩黄色片在线| 欧美视频二区欧美影视| 欧洲精品毛片网站| 伊人在我在线看导航| 在线观看久久av| 亚洲 国产 欧美 日韩| 91精品国产91久久久久久最新毛片| 日本韩国欧美中文字幕| 99久久婷婷国产综合精品电影| 女人色极品影院| 成人在线免费观看网站| 国产欧美精品va在线观看| 午夜精品一区| 91精品在线麻豆| 亚洲 日本 欧美 中文幕| 国产日韩精品一区二区浪潮av | 美女性感视频久久| 777777av| 神马电影久久| 国产精品色视频| 九九精品调教| 国产婷婷97碰碰久久人人蜜臀| 国产乱码精品一区二区| 在线观看日韩国产| 中文字幕美女视频| 国产亚洲欧美一级| 免费无码一区二区三区| 久久精品亚洲一区二区| 人人妻人人做人人爽| 欧美国产专区| 蜜桃视频一区二区在线观看| 99久久精品费精品国产风间由美| 视频一区国产精品| 精品三级久久久| 国产综合在线观看视频| 欧美videosex性欧美黑吊| 久久国产一区二区三区| 日本暖暖在线视频| 日韩中文字幕在线精品| 1pondo在线播放免费| 中文字幕亚洲激情| 91在线不卡| 色噜噜狠狠色综合网图区| 亚洲国产精品久久人人爱潘金莲| 欧美一区二区视频网站| 国产精品视频第一页| 7777精品伊人久久久大香线蕉的 | 妺妺窝人体色www在线下载| av高清久久久| 亚洲国产果冻传媒av在线观看| 成人一二三区视频| 国产又黄又猛又粗又爽的视频| 欧美精品国产| 亚洲成人自拍视频| 日韩中文首页| 黄色小视频大全| 国产探花一区在线观看| 欧美三级电影在线播放| 精品国产一区二区三区久久久樱花 | 777777777亚洲妇女| 综合另类专区| 九九精品在线视频| 里番在线播放| 国产69久久精品成人看| 最新欧美色图| 欧美激情视频在线观看| 精品乱码一区二区三四区视频| 亚洲欧洲日产国产网站| 婷婷成人激情| 欧美激情视频网址| 成人福利av| 91精品中文在线| 性感美女一区二区在线观看| 久久免费在线观看| 欧美性猛交xxx高清大费中文| 久久久久久久久久婷婷| 日韩伦理福利| 成人精品视频99在线观看免费| japanese色系久久精品| 欧美在线3区| 亚洲一区欧美| 欧美一区二区三区爽大粗免费| 免费美女久久99| 欧美xxxxx精品| 中文字幕av一区二区三区高 | 日韩av中文字幕一区| 色一情一乱一伦一区二区三区丨 | 国产精品久久久久久久午夜片| v8888av| 中文字幕一区二区三区不卡在线| 久久免费播放视频| 亚洲日本成人在线观看| 色偷偷www8888| 欧美日韩国产精品| 国产伦精品一区二区三区免.费 | 在线免费观看黄色av| 欧美激情久久久| 青青在线精品| 久久99久久精品国产| 国产丝袜一区| 亚洲精品一区二区三| 日韩网站在线| 国产探花在线观看视频| 久久精品欧美一区二区三区不卡 | 日韩欧美国产电影| 国产内射老熟女aaaa∵| 日韩精品一二三四区| 羞羞的视频在线观看| 国产精品久久久久久网站 | 亚洲成人av动漫| 亚洲一区图片| 高清中文字幕mv的电影| 亚洲欧美日韩在线不卡| 夜夜狠狠擅视频| 亚洲人成网站999久久久综合| 7777kkk亚洲综合欧美网站| 91精品视频观看| 国产精品国内免费一区二区三区| 黑鬼大战白妞高潮喷白浆| 免费国产亚洲视频| 中国毛片在线观看| 欧美日韩国产限制| 俄罗斯嫩小性bbwbbw| 欧美老女人性生活| 国产精品视频一区视频二区| 色狠狠久久av五月综合|| 视频在线观看91| 国产三级精品三级在线| 亚洲国产精品传媒在线观看| 五月天激情四射| 日韩精品在线观看视频| 九色porny自拍视频在线观看| 国产高清一区二区三区| 九九久久电影| 成人免费在线小视频| 99久久99久久精品国产片果冻| 免费一级特黄特色大片| 精品国产乱码久久| 免费在线观看的电影网站| 国产精品乱码| 欧美先锋资源| youjizzxxxx18| 国产免费观看久久| 中文字幕欧美人妻精品一区蜜臀 | 国产精品人成电影| 人人狠狠综合久久亚洲婷| 日本激情综合网| 中文字幕一区二区三区在线播放 | www.av片| 26uuu亚洲综合色欧美| 成年人免费高清视频| 91精品婷婷国产综合久久竹菊| 日本最新在线视频| 91影院在线免费观看视频| 欧美1区3d| 中文字幕乱视频| 欧美日韩中文字幕综合视频 | 丁香婷婷成人| 成人免费aaa| 久久久国产一区二区三区四区小说| 成人免费毛片视频| 中文字幕亚洲欧美日韩高清| а天堂中文最新一区二区三区| 久久99精品久久久久久青青日本| 亚洲永久免费| 美女100%露胸无遮挡| 欧美日韩国产天堂| 伊人在我在线看导航| 久久精品国产第一区二区三区最新章节| 先锋影音久久| 国产黄a三级三级| 欧美性xxxxxx少妇| 五月婷婷在线播放| 日韩av手机在线看| 91视频综合| 国产精品一区二区羞羞答答| 亚洲欧洲99久久| 欧美天堂在线视频| 久久国产精品视频| 人人超在线公开视频| 亚洲精品日韩在线| 123成人网| 国产欧美亚洲视频| 午夜日韩av| 中文字幕网站在线观看| 欧美精品精品一区| mm视频在线视频| 亚洲欧洲精品一区| av成人动漫在线观看| 在线免费看91| 91精品国产乱码久久久久久久久| 色中色综合网| 国产 中文 字幕 日韩 在线| 欧美日韩一区二区三区四区五区| 成人在线免费观看黄色| 亚洲视频导航| 蜜臀va亚洲va欧美va天堂|