日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bundle/Intent传递序列化参数暗藏杀机

發(fā)布時間:2024/4/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bundle/Intent传递序列化参数暗藏杀机 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前幾天一個朋友跟我說了一個詭異且恐怖的事情,有個人用了幾行代碼就讓他們的app歇菜了。 這勾起了我極大的興趣,于是我親自嘗試了一下。代碼非常簡單,如下: Intent intent = new Intent(); intent.setComponent(new ComponentName("com.test.test", "com.test.test.MainActivity")); intent.putExtra("anykey", new Boom()); startActivity(intent);

其中Boom是一個序列化類(serializable),而且extra的key可以是任何值。

而com.test.test.MainActivity則是另外一個app中允許外部調(diào)起的activity,即MainActivity有一個為android.intent.action.MAIN的action,否則代碼會報錯。 還需要滿足一個條件,MainActivity代碼中有從intent(getIntent或newIntent的參數(shù))取參數(shù)的操作,如 Bundle bundle = intent.getExtras(); if (bundle != null) {int sd = bundle.getInt("key"); }或int sd = intent.getIntExtra("key", -1);

注意,不僅僅是getInt,任何類型的都會出問題,而且key不必與之前的anykey一樣!

崩潰日志如下: E/AndroidRuntime: FATAL EXCEPTION: main ? Process: xxx, PID: 1688 ? java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.example.Boom) ? at android.os.Parcel.readSerializable(Parcel.java:2630) ? at android.os.Parcel.readValue(Parcel.java:2416) ? at android.os.Parcel.readArrayMapInternal(Parcel.java:2732) ? at android.os.BaseBundle.unparcel(BaseBundle.java:271) ? at android.os.BaseBundle.get(BaseBundle.java:364) ? at?com.test.test.MainActivity.onNewIntent(MainActivity.java:128) ? ... ? Caused by: java.lang.ClassNotFoundException: com.example.Boom ? at java.lang.Class.classForName(Native Method) ? at java.lang.Class.forName(Class.java:400) ? at android.os.Parcel$2.resolveClass(Parcel.java:2616) ? at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613) ? at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518) ? at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1772) ? at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351) ? at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) ? at android.os.Parcel.readSerializable(Parcel.java:2624) ? at android.os.Parcel.readValue(Parcel.java:2416) ? at android.os.Parcel.readArrayMapInternal(Parcel.java:2732) ? at android.os.BaseBundle.unparcel(BaseBundle.java:271) ? at android.os.BaseBundle.get(BaseBundle.java:364) ? at?com.test.test.MainActivity.onNewIntent(MainActivity.java:128) ? ... 02-27 17:33:33.799 1688-1688/? E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.Boom" on path: DexPathList[...] ? at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) ? at java.lang.ClassLoader.loadClass(ClassLoader.java:380) ? at java.lang.ClassLoader.loadClass(ClassLoader.java:312) ? ... 27 more 02-27 17:33:33.813 1688-1688/? E/MobclickAgent: onPause called before onResume 可以看到是因為應(yīng)用中沒有Boom這個類,反序列化時找不到,那么既然應(yīng)用中沒有用到anykey,為什么會去做反序列化的操作呢? 查看Intent及Bundle源碼可以發(fā)現(xiàn),那些get函數(shù)最終都會調(diào)用BaseBundle的相應(yīng)的get函數(shù)。 在BaseBundle中不論get函數(shù)還是put函數(shù)中都會先調(diào)用unparcel函數(shù),如: public int getInt(String key, int defaultValue) {unparcel();Object o = mMap.get(key);if (o == null) {return defaultValue;}try {return (Integer) o;} catch (ClassCastException e) {typeWarning(key, o, "Integer", defaultValue, e);return defaultValue;} }public void putString(@Nullable String key, @Nullable String value) {unparcel();mMap.put(key, value); }

unparcel函數(shù)我們后面再說,先看看在這兩種函數(shù)中存取數(shù)據(jù)實際上都是在mMap中做的,這是BaseBundle中一個重要的參數(shù),它存儲著Bundle的數(shù)據(jù)。

那么這個mMap中的數(shù)據(jù)又是哪里來的呢? 下面我們就來看看這個unparcel函數(shù),關(guān)鍵源碼如下: /* package */ synchronized void unparcel() {synchronized (this) {...ArrayMap<String, Object> map = mMap;if (map == null) {map = new ArrayMap<>(N);} else {map.erase();map.ensureCapacity(N);}try {mParcelledData.readArrayMapInternal(map, N, mClassLoader);} catch (BadParcelableException e) {if (sShouldDefuse) {Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e);map.erase();} else {throw e;}} finally {mMap = map;mParcelledData.recycle();mParcelledData = null;}if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))+ " final map: " + mMap);} }

這里面涉及到了Bundle中的兩個重要參數(shù)mMap和mParcelledData,mMap我們上面說過,另外一個mParcelledData則是一個Parcel對象。它是怎么來的呢?

這要從activity的啟動過程來說,參見探索startActivity流程及在Activity間是如何傳遞Intent的。在這篇文章的最后,我們看到在ActivityManagerNative中onTransact函數(shù)中處理binder接收的消息,其中就有這么一行: Bundle options = data.readInt() != 0? Bundle.CREATOR.createFromParcel(data) : null;

這行的作用就是從binder的消息中解析出傳送過來的Bundle數(shù)據(jù),繼續(xù)看來Bundle.CREATOR:

public static final Parcelable.Creator<Bundle> CREATOR =new Parcelable.Creator<Bundle>() {@Overridepublic Bundle createFromParcel(Parcel in) {return in.readBundle();}@Overridepublic Bundle[] newArray(int size) {return new Bundle[size];} };

createFromParcel函數(shù)其實就是調(diào)用來Parcel的readBundle函數(shù),代碼如下:

public final Bundle readBundle() {return readBundle(null); }public final Bundle readBundle(ClassLoader loader) {int length = readInt();...final Bundle bundle = new Bundle(this, length);...return bundle; }

通過Bundle的構(gòu)造函數(shù)來新建了一個對象,這個構(gòu)造函數(shù)則調(diào)用了父類BaseBundle對應(yīng)的構(gòu)造函數(shù)如下:

BaseBundle(Parcel parcelledData, int length) {readFromParcelInner(parcelledData, length); }private void readFromParcelInner(Parcel parcel, int length) {...Parcel p = Parcel.obtain();p.setDataPosition(0);p.appendFrom(parcel, offset, length);if (DEBUG) Log.d(TAG, "Retrieving "? + Integer.toHexString(System.identityHashCode(this))+ ": " + length + " bundle bytes starting at " + offset);p.setDataPosition(0);mParcelledData = p; }

這樣我們就在readFromParcelInner函數(shù)中找到了mParcelledData的來源,它實際上就是傳送過來的Bundle序列化后的數(shù)據(jù)。

那么就有了另外一個疑問,既然傳送過來的只有mParcelledData,那么mMap中其實是空的,那么get函數(shù)怎么取到值的? 這就是為什么每個get和put函數(shù)都先調(diào)用unparcel函數(shù)的原因。繼續(xù)觀察上面的unparcel函數(shù),我們發(fā)現(xiàn)“mParcelledData.readArrayMapInternal(map, N, mClassLoader);”這句代碼,調(diào)用了Parcel的readArrayMapInternal函數(shù),并且傳入了map,這個map后面會賦值給mMap,所以實際上兩者是一致的。函數(shù)的源碼如下: /* package */ void readArrayMapInternal(ArrayMap outVal, int N,ClassLoader loader) {if (DEBUG_ARRAY_MAP) {RuntimeException here =? new RuntimeException("here");here.fillInStackTrace();Log.d(TAG, "Reading " + N + " ArrayMap entries", here);}int startPos;while (N > 0) {if (DEBUG_ARRAY_MAP) startPos = dataPosition();String key = readString();Object value = readValue(loader);if (DEBUG_ARRAY_MAP) Log.d(TAG, "? Read #" + (N-1) + " "+ (dataPosition()-startPos) + " bytes: key=0x"+ Integer.toHexString((key != null ? key.hashCode() : 0)) + " " + key);outVal.append(key, value);N--;}outVal.validate(); }

在這個函數(shù)里就可以比較明顯的看出來,從Parcel中分別讀取出key和value,然后put進(jìn)map中。這樣就解決了之前的疑惑,unparcel函數(shù)的作用實際上是預(yù)處理,提前將序列化的數(shù)據(jù)反序列化并放入mMap中,然后Bundle再從mMap中存取數(shù)據(jù)。

我們越來越接近真相了!讀取value用的是readValue函數(shù),代碼如下: public final Object readValue(ClassLoader loader) {int type = readInt();switch (type) {case VAL_NULL:return null;case VAL_STRING:return readString();case VAL_INTEGER:return readInt();...case VAL_SERIALIZABLE:return readSerializable(loader);...default:int off = dataPosition() - 4;throw new RuntimeException("Parcel " + this + ": Unmarshalling unknown type code " + type + " at offset " + off);} }

根據(jù)不同的類型調(diào)用不同的函數(shù)來獲得value,這里我們只關(guān)注Serializable這個類型,readSerializable代碼如下:

private final Serializable readSerializable(final ClassLoader loader) {String name = readString();...try {ObjectInputStream ois = new ObjectInputStream(bais) {@Overrideprotected Class<?> resolveClass(ObjectStreamClass osClass)throws IOException, ClassNotFoundException {if (loader != null) {Class<?> c = Class.forName(osClass.getName(), false, loader);if (c != null) {return c;}}return super.resolveClass(osClass);}};return (Serializable) ois.readObject();} catch (IOException ioe) {throw new RuntimeException("Parcelable encountered " +"IOException reading a Serializable object (name = " + name +")", ioe);} catch (ClassNotFoundException cnfe) {throw new RuntimeException("Parcelable encountered " +"ClassNotFoundException reading a Serializable object (name = "+ name + ")", cnfe);} }

我們終于找到了最開始的崩潰錯誤的源頭,在這里反序列化時需要根據(jù)類名去找到Class對象,這時就出問題了,因為通過上面我們知道,unparcel函數(shù)預(yù)處理時會將mParcelledData中所有的數(shù)據(jù)都解析出來,這時當(dāng)解析到最開始的Boom類時,由于在本App中并不存在這個類,所以無法找到這個類,這樣就出問題了。這樣也解釋了為什么任意key都會出問題。


上面我們只說到了序列化的一種:serializable,我們知道在Android中還有另外一種推薦的序列化:Parcelable。 至于這兩種序列化的差別,請參考:Android中Intent/Bundle的通信原理及大小限制(Parcelable原理及與Serializable的區(qū)別) 那么Parcelable會出現(xiàn)這種crash么,經(jīng)測試也會出現(xiàn)這樣的問題,但是報出的錯誤是不同的: E/AndroidRuntime:?FATAL EXCEPTION: main ? ? java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.test/com.test.test.MainActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.example.Boom ? at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) ? at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2431) ? ... ? Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.example.bennu.testapp.Boom ? at android.os.Parcel.readParcelableCreator(Parcel.java:2295) ? at android.os.Parcel.readParcelable(Parcel.java:2245) ? at android.os.Parcel.readValue(Parcel.java:2152) ? at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) ? at android.os.BaseBundle.unparcel(BaseBundle.java:221) ? at android.os.BaseBundle.get(BaseBundle.java:280) ? at?com.test.test.MainActivity.onCreate(MainActivity.java:142) ? ... 情況其實與serializable差不多,差別在readValue函數(shù)這一步調(diào)用了另外一個函數(shù)readParcelable,源碼如下: public final <T extends Parcelable> T readParcelable(ClassLoader loader) {Parcelable.Creator<?> creator = readParcelableCreator(loader);if (creator == null) {return null;}if (creator instanceof Parcelable.ClassLoaderCreator<?>) {Parcelable.ClassLoaderCreator<?> classLoaderCreator =(Parcelable.ClassLoaderCreator<?>) creator;return (T) classLoaderCreator.createFromParcel(this, loader);}return (T) creator.createFromParcel(this); }/** @hide */ public final Parcelable.Creator<?> readParcelableCreator(ClassLoader loader) {String name = readString();if (name == null) {return null;}Parcelable.Creator<?> creator;synchronized (mCreators) {HashMap<String,Parcelable.Creator<?>> map = mCreators.get(loader);if (map == null) {map = new HashMap<>();mCreators.put(loader, map);}creator = map.get(name);if (creator == null) {try {ClassLoader parcelableClassLoader =(loader == null ? getClass().getClassLoader() : loader);Class<?> parcelableClass = Class.forName(name, false /* initialize */,parcelableClassLoader);if (!Parcelable.class.isAssignableFrom(parcelableClass)) {throw new BadParcelableException("Parcelable protocol requires that the "+ "class implements Parcelable");}Field f = parcelableClass.getField("CREATOR");if ((f.getModifiers() & Modifier.STATIC) == 0) {throw new BadParcelableException("Parcelable protocol requires "+ "the CREATOR object to be static on class " + name);}Class<?> creatorType = f.getType();if (!Parcelable.Creator.class.isAssignableFrom(creatorType)) {throw new BadParcelableException("Parcelable protocol requires a "+ "Parcelable.Creator object called "+ "CREATOR on class " + name);}creator = (Parcelable.Creator<?>) f.get(null);}catch (IllegalAccessException e) {Log.e(TAG, "Illegal access when unmarshalling: " + name, e);throw new BadParcelableException("IllegalAccessException when unmarshalling: " + name);}catch (ClassNotFoundException e) {Log.e(TAG, "Class not found when unmarshalling: " + name, e);throw new BadParcelableException("ClassNotFoundException when unmarshalling: " + name);}catch (NoSuchFieldException e) {throw new BadParcelableException("Parcelable protocol requires a "+ "Parcelable.Creator object called "+ "CREATOR on class " + name);}if (creator == null) {throw new BadParcelableException("Parcelable protocol requires a "+ "non-null Parcelable.Creator object called "+ "CREATOR on class " + name);}map.put(name, creator);}}return creator; }

在readParcelable函數(shù)中調(diào)用readParcelableCreator函數(shù)來解析數(shù)據(jù),在這個函數(shù)中就可以看到同樣需要查找class來反序列化,而不同的是對Expection沒有直接拋出,而是包裝成BadParcelableException拋出的,這也是為什么crash信息有區(qū)別。

你以為這樣就結(jié)束了?還沒有! 讓我們回到之前的unparcel函數(shù),看看最后部分的代碼: /* package */ synchronized void unparcel() {synchronized (this) {...try {mParcelledData.readArrayMapInternal(map, N, mClassLoader);} catch (BadParcelableException e) {if (sShouldDefuse) {Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e);map.erase();} else {throw e;}} finally {mMap = map;mParcelledData.recycle();mParcelledData = null;}if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))+ " final map: " + mMap);} }

可以看到mParcelledData.readArrayMapInternal是在一個try-catch中的,而是catch部分又catch了BadParcelableException,這里就有了一個小彩蛋:當(dāng)sShouldDefuse為true時,這個錯誤就被吞掉了,而為false時繼續(xù)拋出。

那么這個sShouldDefuse的值怎么來的? 在BaseBundle中sShouldDefuse默認(rèn)是false,但是有一個函數(shù)可以設(shè)值,如下: /** * Set global variable indicating that any Bundles parsed in this process * should be "defused." That is, any {@link BadParcelableException} * encountered will be suppressed and logged, leaving an empty Bundle * instead of crashing. * * @hide */ public static void setShouldDefuse(boolean shouldDefuse) {sShouldDefuse = shouldDefuse; }

這個函數(shù)是static的,但是是隱藏的,所以我們不能直接使用。通過這個函數(shù)的注釋我們可以知道,當(dāng)設(shè)為true的時候,會吞掉所有BadParcelableException錯誤,這時會返回一個空的Bundle代替crash。

根據(jù)網(wǎng)上相關(guān)android framwork層源碼來看,高版本的android系統(tǒng)中默認(rèn)將其設(shè)置為true,應(yīng)該是google做的一步優(yōu)化。具體那個版本開始的還有待調(diào)查。
經(jīng)過測試發(fā)現(xiàn),不論serializable還是Parcelable在部分華為手機(jī)上并不會crash,估計是華為系統(tǒng)對此進(jìn)行了優(yōu)化,將問題直接吞掉了。 serializable的情況,android各個版本(8.0未測試)都還存在這個問題。 Parcelable則像上面說的,高版本已經(jīng)處理了,具體那個版本還需要調(diào)查一下。 目前想到的解決方法是,在對外的Activity中如果獲取bundle數(shù)據(jù),try-catch一下。

?

總結(jié)

以上是生活随笔為你收集整理的Bundle/Intent传递序列化参数暗藏杀机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

特黄免费av | 天天天天爱天天躁 | 亚洲一区二区三区四区在线视频 | 天天鲁天天干天天射 | 国产精品色婷婷视频 | 最近中文字幕免费 | 伊人天天干 | 欧美午夜激情网 | 国产精品剧情 | 日韩r级在线 | 午夜精品成人一区二区三区 | 狠狠干成人 | 怡红院av | 欧美人人 | 97超碰资源网 | 九九爱免费视频在线观看 | 中文字幕在线观看你懂的 | 亚洲人成精品久久久久 | 亚洲九九九在线观看 | 成人久久久久久久久久 | 91中文字幕| 青青河边草手机免费 | 9999毛片 | 久久精品视频免费观看 | 国产在线无 | 在线观看亚洲国产精品 | 久久9999久久免费精品国产 | 亚洲午夜精品久久久 | 国产精品免费视频一区二区 | 亚洲天天综合网 | 免费高清在线视频一区· | 中文字幕日本在线观看 | 一区二区三区日韩精品 | 91视频免费观看 | 免费精品人在线二线三线 | 婷婷性综合 | 亚洲精品美女在线观看 | 亚洲国产精品电影 | 超碰在线成人 | 国产激情免费 | 亚洲精选在线观看 | 免费看黄电影 | 日韩精品在线观看视频 | 久久一区二区三区四区 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产精品不卡在线观看 | 在线黄色国产电影 | 中文字幕999 | 在线观看精品一区 | 免费麻豆| 有码视频在线观看 | 婷婷去俺也去六月色 | 亚洲综合一区二区精品导航 | 亚洲爱爱视频 | 欧美色婷 | 国产一区在线播放 | 97超级碰碰 | 九九免费精品视频在线观看 | 亚洲开心色| av直接看| 永久免费在线 | 日韩色区 | 亚洲涩涩一区 | 亚洲成人网av | 成人va在线观看 | 日韩系列在线观看 | 国产成人在线免费观看 | 中文字幕av全部资源www中文字幕在线观看 | 免费在线黄 | 在线看片视频 | 国产成人黄色网址 | 亚洲精品中文在线资源 | 精品影院一区二区久久久 | 97国产在线观看 | 欧美性性网 | 在线看不卡av | 久草久| av色综合网 | 免费成人结看片 | 亚洲国产精品传媒在线观看 | 少妇bbw揉bbb欧美 | 国产 日韩 在线 亚洲 字幕 中文 | 91精品网站 | 亚洲精品观看 | 婷婷中文字幕在线观看 | 中文字幕在线观看一区二区 | 涩涩爱夜夜爱 | 成av在线 | 欧美一级日韩三级 | 婷婷伊人综合 | 51精品国自产在线 | 国产一区福利在线 | 嫩草av在线 | 91在线公开视频 | 成人午夜av电影 | 免费高清在线视频一区· | 黄色特级一级片 | 国产玖玖在线 | 亚洲成人家庭影院 | 久久丁香网 | 91激情小视频 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久久久久美女 | 国产精品伦一区二区三区视频 | 日韩美女免费线视频 | 中文字幕欧美三区 | 日韩一二三区不卡 | 五月天中文字幕mv在线 | 国产一区自拍视频 | 免费看国产视频 | 国产一区国产二区在线观看 | 日韩中出在线 | 色偷偷88888欧美精品久久 | 国产精品入口久久 | 国产精品一区二区三区在线免费观看 | 日韩视频1 | 国产黄a三级三级三级三级三级 | 丁香久久五月 | 国产精品一区二区三区在线播放 | 成人全视频免费观看在线看 | 天天爽天天射 | 国产午夜精品一区二区三区四区 | 天堂中文在线视频 | 91久久国产自产拍夜夜嗨 | 久久撸在线视频 | 日批视频国产 | 免费在线看成人av | 久久国产精品二国产精品中国洋人 | 国产一区免费在线观看 | 夜夜骑日日操 | 日韩在线观看小视频 | 国产精品99在线播放 | 天天色综合天天 | 中文一区二区三区在线观看 | 不卡日韩av | 免费看一级特黄a大片 | 怡红院久久 | 正在播放一区二区 | 一级一片免费观看 | 看片网站黄色 | 精品国产乱码久久久久久1区2匹 | 97精品国自产拍在线观看 | a级国产乱理伦片在线观看 亚洲3级 | 久久久毛片 | 中文视频在线看 | 美腿丝袜一区二区三区 | 精品亚洲男同gayvideo网站 | 在线 高清 中文字幕 | 福利视频一区二区 | 日日操日日干 | 成人在线免费看 | 香蕉视频国产在线观看 | 国产a级精品| 超碰在线亚洲 | 中文字幕国产亚洲 | 国产精品福利午夜在线观看 | 成人啊 v | 成人午夜网址 | 国产精品九九九九九九 | 免费观看版| 免费观看黄色12片一级视频 | 国产成人精品久久久久蜜臀 | 亚洲国产精品成人精品 | 欧美精品xxx | 亚洲最大av | 五月婷激情 | 九九热免费在线观看 | 在线观看色视频 | 在线视频黄 | www夜夜操com | 福利二区视频 | 91香蕉视频污在线 | 中文字幕黄色av | 久久人人艹| 天天色天天草天天射 | 2021国产在线 | 91片在线观看 | 免费色视频 | 美女视频黄免费 | 免费在线一区二区三区 | 成人黄色片免费看 | 久久999精品 | 九九久久久 | 免费看搞黄视频网站 | 就操操久久 | 中文字幕成人一区 | 午夜av色| 中文字幕在线观看国产 | 国产中文字幕在线 | 亚洲视频大全 | 亚洲日本va午夜在线电影 | 极品嫩模被强到高潮呻吟91 | 欧美日韩国产伦理 | 亚洲一区日韩精品 | 免费亚洲片 | 久久精品一区二区三 | 91精品区 | 国产精品专区在线观看 | 成人97视频一区二区 | 精品高清美女精品国产区 | 国产视频久久久久 | 国产一级在线播放 | 久章操| 亚洲永久在线 | 天天操天天透 | 精品国产伦一区二区三区 | 久草视频中文 | 亚洲欧美成人网 | 亚洲美女免费精品视频在线观看 | 亚洲少妇久久 | 色噜噜日韩精品欧美一区二区 | 玖玖精品在线 | a在线播放 | 狠狠狠色丁香综合久久天下网 | 99久久精品网| www.婷婷com | 97超在线 | 久久久久久草 | 久久国产热 | 九色琪琪久久综合网天天 | 黄色大片视频网站 | 射久久久 | 91中文字幕在线播放 | 久久96| 玖玖精品视频 | 四虎影视成人精品国库在线观看 | 日韩视频中文 | 91丨九色丨蝌蚪丰满 | 人人狠狠综合久久亚洲婷 | 免费视频xnxx com | 免费av电影网站 | 亚洲视频 在线观看 | 久草网首页 | 欧美最猛性xxx| 综合久久久 | 色欧美88888久久久久久影院 | 国产亚洲欧美在线视频 | 国产真实精品久久二三区 | av黄色免费看| 国产精品久久久久毛片大屁完整版 | 国产精品中文字幕在线观看 | 欧美美女视频在线观看 | 福利电影一区二区 | 亚洲伦理一区二区 | 精品国产片| 国产精品乱码高清在线看 | 一区二区 不卡 | 亚洲精品视频在线观看免费视频 | 成年人国产在线观看 | 国产精品wwwwww | 99热免费在线 | 91成人精品一区在线播放69 | 国产一级片毛片 | 亚洲精品在线网站 | 久草视频在线观 | 久久成人国产精品 | 午夜精品一区二区国产 | 少妇视频一区 | 免费91麻豆精品国产自产在线观看 | 毛片99 | www免费| 久久久久国产a免费观看rela | 午夜狠狠干 | 欧美乱码精品一区二区 | 麻豆精品在线视频 | 日产中文字幕 | 成人97视频一区二区 | 免费看片网页 | 超碰公开97 | 国产日韩一区在线 | 亚洲精品国内 | 久草91视频 | 成人黄色小说视频 | 日韩av男人的天堂 | 91精品啪在线观看国产 | 亚洲天堂社区 | 日韩免费在线视频观看 | 超级碰视频 | 久久精品屋 | 久久超| 激情久久五月 | 91九色蝌蚪国产 | 国产999视频 | 亚洲少妇天堂 | 麻豆影视在线免费观看 | 日韩精品一区二区三区三炮视频 | 日韩中文字幕亚洲一区二区va在线 | 久久久亚洲精品 | 成人av电影免费 | 国模视频一区二区三区 | 韩国三级av在线 | 国产精品一区二区av影院萌芽 | 免费福利在线观看 | 精品国产伦一区二区三区免费 | 国产综合精品一区二区三区 | 午夜视频黄 | 久久免费电影网 | 婷婷色在线观看 | 成人午夜剧场在线观看 | a'aaa级片在线观看 | 91在线免费播放视频 | adc在线观看| 97视频免费在线 | 丝袜美女视频网站 | 国产亚洲精品免费 | 午夜手机看片 | av大片免费 | av大全在线 | 久久精品视频2 | 亚洲更新最快 | 免费在线观看av网址 | 91黄在线看 | www91在线观看 | 成人久久18免费网站 | 99re中文字幕 | 国产91电影在线观看 | 国产精品9999| 久久国产精品二国产精品中国洋人 | 天天曰夜夜操 | 最近高清中文字幕 | 久久久久久久电影 | 91中文字幕在线播放 | 免费黄色特级片 | 日韩电影在线观看中文字幕 | 激情五月综合网 | 日韩在线视频网址 | 欧美激情操 | 国产破处视频在线播放 | 婷婷丁香五 | 最新日韩视频 | 五月婷婷国产 | 在线观看你懂的网址 | 91久久爱热色涩涩 | 17videosex性欧美 | 亚洲欧美婷婷六月色综合 | 亚洲精品色| 五月天婷婷视频 | 超碰在线98 | 国产精品一区二区果冻传媒 | 国产香蕉视频在线播放 | 日产乱码一二三区别在线 | 国产99在线 | 久久字幕精品一区 | 五月天六月丁香 | 久久久黄视频 | 国产毛片久久久 | 一二三久久久 | 九九欧美视频 | 天天做日日做天天爽视频免费 | 久久精品国产99国产 | 天天弄天天干 | 久久精选 | 玖玖视频在线 | 91亚洲精品久久久中文字幕 | 美女一二三区 | 精品国产自在精品国产精野外直播 | 国产手机av | 国产精品精品国产色婷婷 | 在线中文字母电影观看 | 国产最顶级的黄色片在线免费观看 | 中文字幕第一页在线播放 | a视频在线播放 | 亚洲另类人人澡 | 亚洲一区在线看 | 日韩精品久久久久久久电影99爱 | 久久99久久99精品免视看婷婷 | 亚洲成人二区 | 久草视频播放 | 天天插日日射 | 久久久久久高潮国产精品视 | a黄色| 一区中文字幕在线观看 | 黄色片视频免费 | 亚洲精品456在线播放第一页 | 麻豆久久 | 在线观看色视频 | 美女禁18| 国产午夜免费视频 | 九草视频在线观看 | 日女人免费视频 | 四虎永久视频 | 在线看日韩av | 国精产品999国精产 久久久久 | 91最新在线| 国产精品久久嫩一区二区免费 | 国产做爰视频 | 亚洲国产网址 | 亚洲一区二区视频在线播放 | 99视频在线观看一区三区 | 午夜精品一区二区三区在线播放 | 91九色蝌蚪视频在线 | 黄色三级av | 免费日韩av电影 | 国产亚洲人 | 国产999精品久久久久久绿帽 | www.黄色在线 | 亚洲成人在线免费 | 国产成人免费观看 | 天天爽夜夜爽精品视频婷婷 | 98超碰在线观看 | 中文字幕网址 | 天天摸日日操 | 久草在线这里只有精品 | 国产69精品久久app免费版 | 日韩精品黄 | 亚洲最大色 | 亚洲成a人片在线观看网站口工 | 美腿丝袜一区二区三区 | 麻豆精品视频 | 成人免费看电影 | 精品欧美一区二区在线观看 | 最新中文字幕在线播放 | 国产中文字幕av | av夜夜操 | 狠狠色噜噜狠狠狠狠2021天天 | 中文字幕精品一区久久久久 | av中文字幕在线电影 | 中文字幕精品一区二区三区电影 | 黄色aa久久 | 欧美坐爱视频 | 中国一级片免费看 | 日韩有色 | 成人午夜黄色影院 | 日韩a级免费视频 | 国产又粗又猛又色又黄视频 | 国产区在线 | 四虎在线观看 | 成年在线观看 | 欧美不卡视频在线 | 欧美日韩伦理在线 | 国产精品日韩欧美一区二区 | 精品高清美女精品国产区 | 日本中文不卡 | 欧美日韩精品在线 | 六月色丁 | 99国产精品免费网站 | 91手机视频 | 久草国产在线 | 热久久在线视频 | 日日操夜 | 国产精品美女 | 久久精品视频在线观看免费 | 精品视频99 | 在线激情网 | 波多野结衣在线播放视频 | a在线观看视频 | 国产成人精品一二三区 | 午夜精品久久一牛影视 | 亚洲九九爱 | 在线亚洲精品 | 九九免费在线观看 | 韩国精品一区二区三区六区色诱 | 久久婷婷综合激情 | 美女在线观看网站 | 天天天干夜夜夜操 | 一区二区三区在线观看中文字幕 | 伊人超碰在线 | 成人久久精品 | 久久久精品99 | 国产免费久久av | 91成人短视频在线观看 | 人人草在线视频 | 中文字幕久久精品一区 | 中文字幕久久精品一区 | 国产裸体视频网站 | 久久午夜色播影院免费高清 | 日本中文字幕高清 | 午夜美女福利 | 国产男女无遮挡猛进猛出在线观看 | 超碰九九| 久久国产区 | 亚洲精品大全 | 国产精品av在线 | 日韩成人精品一区二区三区 | 国产精品久久久久久久久久久久午 | 成人亚洲精品久久久久 | 亚洲最新毛片 | 国产又黄又爽又猛视频日本 | 97av.com| 免费网站在线 | 国产人在线成免费视频 | 国产精品久久一区二区无卡 | 欧美最猛性xxx | 天天·日日日干 | 中文在线免费看视频 | 人人艹视频 | av在线短片| 深爱婷婷激情 | 免费看三片| 激情影院在线观看 | 69欧美视频 | 中文字幕人成人 | 国产精品日韩高清 | 中文字幕色婷婷在线视频 | www.久艹| 久草av在线播放 | av官网在线 | 国产91粉嫩白浆在线观看 | 免费看黄在线观看 | 胖bbbb搡bbbb擦bbbb | 最近2019中文免费高清视频观看www99 | 欧美日韩成人一区 | 色小说av | 欧美日韩一二三四区 | 黄色片软件网站 | 亚洲最新av网址 | 五月天中文字幕mv在线 | 精品国产免费一区二区三区五区 | 91精品国产乱码久久桃 | 成人免费毛片aaaaaa片 | 香蕉视频在线免费 | 国产精品系列在线播放 | 久久久精品99 | 狠狠狠狠狠狠狠狠 | 欧美日韩午夜 | 超碰在线人人 | 免费成人在线观看 | 免费看一级一片 | 草草草影院 | 狠狠躁日日躁狂躁夜夜躁 | 国产一区二区在线视频观看 | 狠狠干天天操 | 久久免费视频观看 | 亚洲五月花| 奇米影视8888 | 久久久久久久久久久影视 | 在线免费av播放 | 国产一区二区在线观看视频 | 伊人网av| 中文字幕在线观看免费高清电影 | 91在线精品播放 | 一区二区三区在线观看免费视频 | 西西444www | 国产精品一区二区三区视频免费 | 你操综合| 亚洲一级电影在线观看 | 五月婷婷伊人网 | 欧美日韩三区二区 | 欧美成人亚洲成人 | 色99之美女主播在线视频 | 亚洲精品美女在线观看 | 天堂网一区 | 在线观影网站 | 99免费在线 | 91九色在线 | 永久免费av在线播放 | 在线免费观看视频一区 | 精品资源在线 | 日韩毛片精品 | 中文字幕视频一区二区 | 最近中文字幕第一页 | 最新免费av在线 | 免费www视频 | 天天干天天天天 | 国产一区在线不卡 | 欧美aaa一级 | 国产视频1| 天天干夜夜操视频 | 国产高清av免费在线观看 | 夜夜操网 | 91精品久久久久久久91蜜桃 | 国产成a人亚洲精v品在线观看 | www最近高清中文国语在线观看 | 久久亚洲综合色 | 久久免费成人精品视频 | 一本一本久久a久久 | 日韩视频在线观看免费 | 成人免费在线看片 | 在线精品观看国产 | 99久久夜色精品国产亚洲 | 国产精品久久久一区二区三区网站 | 国产九九九视频 | 狠狠的干| 综合网天天| 麻豆视频免费 | 午夜精品99久久免费 | 麻豆传媒精品 | 97爱爱爱| 亚洲伦理一区二区 | 丁香花在线观看免费完整版视频 | 玖玖在线资源 | 18做爰免费视频网站 | 五月婷婷中文 | 99精品区 | 特级黄色视频毛片 | 亚洲精品久久久蜜桃 | 色婷婷综合成人av | 精品99免费 | 亚洲jizzjizz日本少妇 | 麻豆视传媒官网免费观看 | 国产精品一区二区白浆 | 久久久久99精品成人片三人毛片 | 在线视频 影院 | 毛片随便看 | 99精品国产一区二区三区麻豆 | 亚洲在线视频免费 | 免费黄色a级毛片 | 亚洲精品视频中文字幕 | 日韩高清在线一区二区三区 | 五月婷婷在线观看视频 | 六月激情 | 国产91欧美 | 国产精品美女在线观看 | 黄网站色成年免费观看 | 亚洲一区欧美精品 | 精品国产一区二区三区蜜臀 | 激情av网址 | 久久黄色精品视频 | 免费高清在线观看电视网站 | 成人a视频片观看免费 | 欧美乱码精品一区 | 国产手机在线 | 97超碰福利久久精品 | 国内99视频 | 亚洲精品国产综合99久久夜夜嗨 | 一本一本久久a久久精品牛牛影视 | 精品视频在线播放 | 国产日产欧美在线观看 | 国产一区国产二区在线观看 | 日日干激情五月 | 欧美精品久久久久性色 | 久久综合成人 | 91在线日韩 | 日本在线观看黄色 | 国产成人一区在线 | 精品国产一区二区三区在线 | 国产精品1区2区3区 久久免费视频7 | 色99中文字幕 | 91精品毛片 | 久久国产美女 | 久久99久久99精品免观看软件 | 在线 影视 一区 | 亚洲最新视频在线播放 | 麻豆小视频在线观看 | 在线视频日韩精品 | 激情深爱.com | 久久国产精品99久久久久久老狼 | 日本aaaa级毛片在线看 | 国产视频一区二区在线观看 | 国产精品com | 亚洲视频免费在线观看 | 日韩丝袜在线观看 | 色人久久| 久久人人97超碰com | 男女视频久久久 | 久久99久久99精品免视看婷婷 | 国产精品中文字幕av | 久草在线观看资源 | 国产精品久久久久久久久久不蜜月 | 一区二区三区四区在线免费观看 | 特级西西人体444是什么意思 | 成人h在线观看 | 日本精品中文字幕 | a天堂最新版中文在线地址 久久99久久精品国产 | 国产中文字幕在线免费观看 | 日韩大片在线播放 | 91激情在线视频 | 六月丁香婷婷网 | av免费高清观看 | 久黄色| 欧美一二在线 | 日日夜夜操av | 欧美成a人片在线观看久 | 久久久久久国产精品美女 | 五月婷婷电影网 | 亚洲最新av网址 | 91亚洲精品国偷拍 | 亚州精品成人 | 午夜免费电影院 | 国产美女免费视频 | 一级片在线| 日韩三级不卡 | 人人爽人人爽人人爽 | 久久久久 免费视频 | 亚洲精品毛片一级91精品 | 日韩在线视频播放 | 欧美 日韩 视频 | 久久 精品一区 | 尤物九九久久国产精品的分类 | 欧美精品一区二区蜜臀亚洲 | 日本久久片 | 午夜av在线播放 | 成人免费91| 色多多污污| 黄色免费网战 | 国产精品久久久久一区 | 深夜福利视频一区二区 | 黄色小说视频在线 | 97av在线视频免费播放 | av永久网址 | 欧美一级免费高清 | 欧美精品九九99久久 | 成人全视频免费观看在线看 | 久草在线免费看视频 | 国产69精品久久app免费版 | 欧美一区二区在线 | 国产成人61精品免费看片 | 国产精品va| 在线91视频 | 91九色视频网站 | 国产精品资源在线 | 九九视频免费在线观看 | 亚洲在线网址 | 九九精品久久久 | 亚洲国产片 | 日日夜日日干 | 国产精品久久久久久模特 | 免费在线观看成人小视频 | 色 免费观看| 国产精品一区在线播放 | 亚洲国产精品视频 | 91丨九色丨蝌蚪丨对白 | 成人综合婷婷国产精品久久免费 | 日韩美女一级片 | 麻豆mv在线观看 | 成人影视免费看 | 99精品偷拍视频一区二区三区 | 五月婷婷丁香网 | 久久夜色精品国产欧美乱极品 | 日韩精品电影在线播放 | 麻豆传媒一区二区 | 成年人在线观看 | se视频网址 | 成人欧美一区二区三区在线观看 | 一区二区三区免费在线观看视频 | 日韩精品久久久久久中文字幕8 | 日韩欧美高清一区二区 | 欧美激情第一页xxx 午夜性福利 | 日韩欧美一区二区三区在线 | av在线超碰| 国产破处精品 | 色姑娘综合网 | 91在线视频| 99久久精品免费 | 日黄网站| 久久艹艹 | 日韩精品一区二区三区丰满 | 免费福利在线 | 天天综合网 天天 | av黄色在线| 天堂网一区 | 午夜手机电影 | 一本一道久久a久久综合蜜桃 | 成人av久久 | 丁香花在线视频观看免费 | 久久久精品免费看 | 国产一区二区三区黄 | 国产99久| 91超在线 | 精品久久一 | 高清一区二区三区 | 日韩一二三区不卡 | 久久99国产精品视频 | 97精品免费视频 | 91av成人| av黄网站 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 久久久久久久久影院 | 成人免费看视频 | 久久手机免费视频 | 99久久99久久精品免费 | 日韩高清一二三区 | 综合国产视频 | 欧美a视频在线观看 | a级片久久| 免费手机黄色网址 | 免费婷婷 | 激情一区二区三区欧美 | 免费69视频 | 欧美激情视频三区 | 亚洲国产三级 | 91精品一区二区三区蜜臀 | 日本精品久久久久影院 | 国产精品 久久 | 久久综合一本 | 精品一区二区日韩 | 日韩在线视频播放 | 日韩在线不卡视频 | 中文字幕在线播放日韩 | 午夜精品一区二区三区免费视频 | 91av在线播放视频 | 最近最新中文字幕视频 | 中文字幕精品一区 | 午夜精品视频一区二区三区在线看 | 99热在线精品观看 | 亚洲精品视频在线观看免费 | 最新国产在线 | 日韩精品视频免费在线观看 | 美女搞黄国产视频网站 | 伊人五月婷 | 欧美性大战 | 欧美 日韩 性 | 最近中文字幕高清字幕在线视频 | 四虎成人免费影院 | 国产精品成久久久久三级 | 国产在线观看你懂得 | 欧美人人 | 在线精品视频免费播放 | 天天干天天干天天干 | 91刺激视频 | 久草在线免费播放 | 国产精品精品久久久久久 | 色黄久久久久久 | 亚洲深夜影院 | 日韩理论片 | 少妇av片 | 99这里有精品 | 99视频久久| 天天综合网入口 | 亚洲欧美日韩一区二区三区在线观看 | 高清av不卡| 亚洲狠狠婷婷综合久久久 | 超碰97免费在线 | 黄色免费在线视频 | 综合天堂av久久久久久久 | av成人在线电影 | 超碰在线91 | 国产在线a免费观看 | 中文字幕在线观看第二页 | 超碰97在线看 | 99国产成+人+综合+亚洲 欧美 | 国产亚洲精品久久久网站好莱 | 一区中文字幕在线观看 | 色噜噜噜 | 一本之道乱码区 | 成人三级网站在线观看 | 97在线观看免费高清完整版在线观看 | 成人午夜在线观看 | 日韩欧美在线高清 | 字幕网av| 天天干天天干天天干天天干天天干天天干 | 91| 91九色视频在线观看 | 香蕉视频在线免费 | 在线观看亚洲免费视频 | 97电影在线看视频 | 亚洲电影网站 | 精品国产综合区久久久久久 | 成全免费观看视频 | 久久国产美女 | 国产在线观看你懂的 | 国产福利a | 中文十次啦 | 久久在线观看视频 | jizz欧美性9| 国产成人久久精品一区二区三区 | 久久久久久国产精品美女 | 免费观看国产精品 | 免费观看国产成人 | 视频在线播放国产 | 日韩av女优视频 | 这里只有精彩视频 | 99亚洲精品在线 | 国产精品一区二区久久精品爱微奶 | 深爱激情五月综合 | 国产精品美女久久久久久久 | 亚洲国产精品成人综合 | 日韩免费一级a毛片在线播放一级 | 激情自拍av | 精品婷婷 | 91看片一区二区三区 | 开心丁香婷婷深爱五月 | 欧美日韩另类在线观看 | 久草视频在线免费 | 四虎国产精品成人免费影视 | 一级黄色免费 | 久草网站在线 | 欧美一二三专区 | 免费av视屏 | 超薄丝袜一二三区 | 天海冀一区二区三区 | 国产在线毛片 | 亚洲欧美va | 黄av在线| 午夜精品视频免费在线观看 | 黄色大全免费网站 | 日韩久久在线 | 国产盗摄精品一区二区 | 色婷婷激情网 | 日韩肉感妇bbwbbwbbw | 狠狠干我| 超碰久热 | 狠狠88综合久久久久综合网 | 一区二区三区免费在线观看视频 | 日b视频在线观看网址 | 亚洲黄色免费在线 | 国产高清av | 99精彩视频 | www四虎影院 | 欧美一二三区在线播放 | 热久久在线视频 | 996久久国产精品线观看 | 色婷婷欧美 | www欧美色 | 操操碰 | 久久国产精品偷 | 9草在线| 国产成人一区三区 | 国产一区免费在线 | 国产一级免费观看视频 | 韩国av免费观看 | h视频日本 | 日韩免费二区 | 欧美人牲 | 精品毛片一区二区免费看 | av成人在线电影 | 91成人免费 | 欧美在线aaa | 欧美性极品xxxx做受 | 国产精品男女啪啪 | 99久久99久久精品国产片 | 国产精品久久久久婷婷二区次 | 日韩高清精品免费观看 | 国产精品高清免费在线观看 | 亚洲美女精品视频 | 国产手机av | 久久婷婷影视 | 黄网站色视频免费观看 | 国产在线国偷精品产拍免费yy | 免费在线观看成年人视频 | 久久久精华网 | 日本精品免费看 | 中文字幕高清 | 999电影免费在线观看2020 | 久久久高清免费视频 | 婷婷草| 99久久精品无码一区二区毛片 | 91精品国产高清自在线观看 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 香蕉在线播放 | 午夜精品视频一区 | 国产精品视频专区 | 日韩久久久久久久久 | 免费视频一区 | 狠狠狠色狠狠色综合 | 女人18精品一区二区三区 | 久草国产视频 | 黄污视频网站大全 | 国产麻豆精品久久一二三 | 激情视频免费在线 | 国产不卡一 | 亚洲国产精品传媒在线观看 | 天天操狠狠操 | 在线亚洲欧美日韩 | 国产一级黄色免费看 | 日日夜夜精品免费观看 | 欧美性久久久 | 中文字幕电影在线 | 少妇精品久久久一区二区免费 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 日韩在线观看视频在线 | 国产精品综合在线 | 天天干,夜夜操 | 国产精品第二页 | 色99在线 | 国产福利av | 色噜噜在线观看 | 999电影免费在线观看 | www.香蕉视频 | 国产精品美女久久久久久久久久久 | www.午夜 | 欧美美女视频在线观看 | 久久伦理影院 | 亚洲精品女 | 国产精品久久久久久影院 | 日韩理论片在线 | 久草免费手机视频 | 91激情视频在线播放 | 亚洲一级电影在线观看 | 天天干天天干天天操 | 久久久官网 | 91mv.cool在线观看 | 久久不卡免费视频 | 亚洲黄色av一区 | 欧美日韩天堂 | 992tv人人草| 欧美日韩一区二区三区免费视频 | 欧美一区二区伦理片 | 一区二区三区动漫 | 中文字幕高清 | 成人免费观看av | 国产精品2019 | 国产视频欧美视频 | 黄色av电影网 | 久久艹国产视频 | 国产一线在线 | 天天操夜夜操 | 久久综合之合合综合久久 | 欧美日韩中文在线视频 | 九九在线播放 | 国产色拍拍拍拍在线精品 | 欧美日韩视频一区二区三区 | 亚洲精品中文字幕在线 | 99久免费精品视频在线观看 | a√资源在线 | 99re8这里有精品热视频免费 | 亚洲午夜精品在线观看 | 婷婷电影在线观看 |