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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JVM插桩之二:Java agent基础原理

發布時間:2024/1/23 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM插桩之二:Java agent基础原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Javaagent只要作用在class被加載之前對其加載,插入我們需要添加的字節碼。

Javaagent面向的是我們java程序員,而且agent都是用java編寫的,不需要太多的c/c++編程基礎,不過這篇文章里也會講到JVMTIAgent(c實現的),因為javaagent的運行還是依賴于一個特殊的JVMTIAgent。

對于javaagent或許大家都聽過,甚至使用過,常見的用法大致如下:

java -javaagent:myagent.jar=mode=test Test

我們通過-javaagent來指定我們編寫的agent的jar路徑(./myagent.jar)及要傳給agent的參數(mode=test),這樣在啟動的時候這個agent就可以做一些我們想要它做的事了。

javaagent使用說明

javaagent主要作用

可以在加載java文件之前做攔截把字節碼做修改

可以在運行期將已經加載的類的字節碼做變更,但是這種情況下會有很多的限制,后面會詳細說
還有其他的一些小眾的功能

獲取所有已經被加載過的類

獲取所有已經被初始化過了的類(執行過了clinit方法,是上面的一個子集)

獲取某個對象的大小
將某個jar加入到bootstrapclasspath里作為高優先級被bootstrapClassloader加載

將某個jar加入到classpath里供AppClassload去加載

設置某些native方法的前綴,主要在查找native方法的時候做規則匹配

JVMTI

JVM Tool Interface,是jvm暴露出來的一些供用戶擴展的接口集合,JVMTI是基于事件驅動的,JVM每執行到一定的邏輯就會調用一些事件的回調接口(如果有的話),這些接口可以供開發者去擴展自己的邏輯。

比如說我們最常見的想在某個類的字節碼文件讀取之后類定義之前能修改相關的字節碼,從而使創建的class對象是我們修改之后的字節碼內容,那我們就可以實現一個回調函數賦給JvmtiEnv(JVMTI的運行時,通常一個JVMTIAgent對應一個jvmtiEnv,但是也可以對應多個)的回調方法集合里的ClassFileLoadHook,這樣在接下來的類文件加載過程中都會調用到這個函數里來了,大致實現如下:

jvmtiEventCallbacks callbacks; jvmtiEnv * jvmtienv = jvmti(agent); jvmtiError jvmtierror; memset(&callbacks, 0, sizeof(callbacks)); callbacks.ClassFileLoadHook = &eventHandlerClassFileLoadHook; jvmtierror = (*jvmtienv)->SetEventCallbacks(jvmtienv, &callbacks, sizeof(callbacks));

JVMTIAgent

JVMTIAgent其實就是一個動態庫,利用JVMTI暴露出來的一些接口來干一些我們想做但是正常情況下又做不到的事情,不過為了和普通的動態庫進行區分,它一般會實現如下的一個或者多個函數:

JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved);JNIEXPORT jint JNICALL Agent_OnAttach(JavaVM* vm, char *options, void *reserved);JNIEXPORT void JNICALL Agent_OnUnload(JavaVM *vm);

Agent_OnLoad函數,如果agent是在啟動的時候加載的,也就是在vm參數里通過-agentlib來指定,那在啟動過程中就會去執行這個agent里的Agent_OnLoad函數。

Agent_OnAttach函數,如果agent不是在啟動的時候加載的,是我們先attach到目標進程上,然后給對應的目標進程發送load命令來加載agent,在加載過程中就會調用Agent_OnAttach函數。

Agent_OnUnload函數,在agent做卸載的時候調用,不過貌似基本上很少實現它。

其實我們每天都在和JVMTIAgent打交道,只是你可能沒有意識到而已,比如我們經常使用eclipse等工具對java代碼做調試,其實就利用了jre自帶的jdwp agent來實現的,只是由于eclipse等工具在沒讓你察覺的情況下將相關參數(類似-agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:61349)給自動加到程序啟動參數列表里了,其中agentlib參數就是用來跟要加載的agent的名字,比如這里的jdwp(不過這不是動態庫的名字,而JVM是會做一些名稱上的擴展,比如在linux下會去找libjdwp.so的動態庫進行加載,也就是在名字的基礎上加前綴lib,再加后綴.so),接下來會跟一堆相關的參數,會將這些參數傳給Agent_OnLoad或者Agent_OnAttach函數里對應的options參數。

Javaagent

說到javaagent必須要講的是一個叫做instrument的JVMTIAgent(linux下對應的動態庫是libinstrument.so),因為就是它來實現javaagent的功能的,另外instrument agent還有個別名叫JPLISAgent(Java Programming Language Instrumentation Services Agent),從這名字里也完全體現了其最本質的功能:就是專門為java語言編寫的插樁服務提供支持的。

INSTRUMENT?AGENT

instrument agent實現了Agent_OnLoad和Agent_OnAttach兩方法,也就是說我們在用它的時候既支持啟動的時候來加載agent,也支持在運行期來動態來加載這個agent,其中啟動時加載agent還可以通過類似-javaagent:myagent.jar的方式來間接加載instrument agent,運行期動態加載agent依賴的是jvm的attach機制JVM Attach機制實現,通過發送load命令來加載agent。

instrument agent的核心數據結構如下:

struct _JPLISAgent {JavaVM * mJVM; /* handle to the JVM */JPLISEnvironment mNormalEnvironment; /* for every thing but retransform stuff */JPLISEnvironment mRetransformEnvironment;/* for retransform stuff only */jobject mInstrumentationImpl; /* handle to the Instrumentation instance */jmethodID mPremainCaller; /* method on the InstrumentationImpl that does the premain stuff (cached to save lots of lookups) */jmethodID mAgentmainCaller; /* method on the InstrumentationImpl for agents loaded via attach mechanism */jmethodID mTransform; /* method on the InstrumentationImpl that does the class file transform */jboolean mRedefineAvailable; /* cached answer to "does this agent support redefine" */jboolean mRedefineAdded; /* indicates if can_redefine_classes capability has been added */jboolean mNativeMethodPrefixAvailable; /* cached answer to "does this agent support prefixing" */jboolean mNativeMethodPrefixAdded; /* indicates if can_set_native_method_prefix capability has been added */char const * mAgentClassName; /* agent class name */char const * mOptionsString; /* -javaagent options string */ };struct _JPLISEnvironment {jvmtiEnv * mJVMTIEnv; /* the JVM TI environment */JPLISAgent * mAgent; /* corresponding agent */jboolean mIsRetransformer; /* indicates if special environment */ };

這里解釋下幾個重要項:

  • mNormalEnvironment:主要提供正常的類transform及redefine功能的。
  • mRetransformEnvironment:主要提供類retransform功能的。
  • mInstrumentationImpl:這個對象非常重要,也是我們java agent和JVM進行交互的入口,或許寫過javaagent的人在寫premain以及agentmain方法的時候注意到了有個Instrumentation的參數,這個參數其實就是這里的對象。
  • mPremainCaller:指向sun.instrument.InstrumentationImpl.loadClassAndCallPremain方法,如果agent是在啟動的時候加載的,那該方法會被調用。
  • mAgentmainCaller:指向sun.instrument.InstrumentationImpl.loadClassAndCallAgentmain方法,該方法在通過attach的方式動態加載agent的時候調用。
  • mTransform:指向sun.instrument.InstrumentationImpl.transform方法。
  • mAgentClassName:在我們javaagent的MANIFEST.MF里指定的Agent-Class。
  • mOptionsString:傳給agent的一些參數。
  • mRedefineAvailable:是否開啟了redefine功能,在javaagent的MANIFEST.MF里設置Can-Redefine-Classes:true。
  • mNativeMethodPrefixAvailable:是否支持native方法前綴設置,通樣在javaagent的MANIFEST.MF里設置Can-Set-Native-Method-Prefix:true。
  • mIsRetransformer:如果在javaagent的MANIFEST.MF文件里定義了Can-Retransform-Classes:true,那將會設置mRetransformEnvironment的mIsRetransformer為true。

紅色標注的是我們最常用的,下面的列子也是會用到的...,接下來看一個具體的例子,如果熟悉分布式調用鏈系統的人肯定知道,調用鏈中最基礎的一個功能就是統計一個服務里面的某個方法執行了多長時間...,其實這個就目前來說大多數系統底層都是基于字節碼插樁技術實現的,接下來就演示一個完整的例子....,定義一個業務類,類里面定義幾個方法,然后在執行這個方法的時候,會動態實現方法的耗時統計。示例見《》。

啟動時加載instrument agent

正如『概述』里提到的方式,就是啟動的時候加載instrument agent,具體過程都在InvocationAdapter.c的Agent_OnLoad方法里,簡單描述下過程:

1.創建并初始化JPLISAgent;

2.監聽VMInit事件,在vm初始化完成之后坐下面的事情;

3.創建InstrumentationImpl對象;

4.監聽ClassFileLoadHook事件;

5.調用InstrumentationImpl的loadClassAndCallPremain方法,在這個方法里會去調用javaagent里MANIFEST.MF里指定的Premain-Class類的premain方法;

6.解析javaagent里MANIFEST.MF里的參數,并根據這些參數來設置JPLISAgent里的一些內容;

運行時加載instrument agent

運行時加載的方式,大致按照下面的方式來操作:

VirtualMachine vm = VirtualMachine.attach(pid); vm.loadAgent(agentPath, agentArgs);

上面會通過jvm的attach機制來請求目標jvm加載對應的agent,過程大致如下:

  • 創建并初始化JPLISAgent
  • 解析javaagent里MANIFEST.MF里的參數
  • 創建InstrumentationImpl對象
  • 監聽ClassFileLoadHook事件
  • 調用InstrumentationImpl的loadClassAndCallAgentmain方法,在這個方法里會去調用javaagent里MANIFEST.MF里指定的Agent-Class類的agentmain方法

instrument agent的ClassFileLoadHook回調實現

不管是啟動時還是運行時加載的instrument agent都關注著同一個jvmti事件---ClassFileLoadHook,這個事件是在讀取字節碼文件之后回調時用的,這樣可以對原來的字節碼做修改,那這里面究竟是怎樣實現的呢?

void JNICALL eventHandlerClassFileLoadHook( jvmtiEnv * jvmtienv,JNIEnv * jnienv,jclass class_being_redefined,jobject loader,const char* name,jobject protectionDomain,jint class_data_len,const unsigned char* class_data,jint* new_class_data_len,unsigned char** new_class_data) {JPLISEnvironment * environment = NULL;environment = getJPLISEnvironment(jvmtienv);/* if something is internally inconsistent (no agent), just silently return without touching the buffer */if ( environment != NULL ) {jthrowable outstandingException = preserveThrowable(jnienv);transformClassFile( environment->mAgent,jnienv,loader,name,class_being_redefined,protectionDomain,class_data_len,class_data,new_class_data_len,new_class_data,environment->mIsRetransformer);restoreThrowable(jnienv, outstandingException);} }

先根據jvmtiEnv取得對應的JPLISEnvironment,因為上面我已經說到其實有兩個JPLISEnvironment(并且有兩個jvmtiEnv),其中一個專門做retransform的,而另外一個用來做其他的事情,根據不同的用途我們在注冊具體的ClassFileTransformer的時候也是分開的,對于作為retransform用的ClassFileTransformer我們會注冊到一個單獨的TransformerManager里。

接著調用transformClassFile方法,由于函數實現比較長,我這里就不貼代碼了,大致意思就是調用InstrumentationImpl對象的transform方法,根據最后那個參數來決定選哪個TransformerManager里的ClassFileTransformer對象們做transform操作。

private byte[]transform( ClassLoader loader,String classname,Class classBeingRedefined,ProtectionDomain protectionDomain,byte[] classfileBuffer,boolean isRetransformer) {TransformerManager mgr = isRetransformer?mRetransfomableTransformerManager :mTransformerManager;if (mgr == null) {return null; // no manager, no transform} else {return mgr.transform( loader,classname,classBeingRedefined,protectionDomain,classfileBuffer);}}public byte[]transform( ClassLoader loader,String classname,Class classBeingRedefined,ProtectionDomain protectionDomain,byte[] classfileBuffer) {boolean someoneTouchedTheBytecode = false;TransformerInfo[] transformerList = getSnapshotTransformerList();byte[] bufferToUse = classfileBuffer;// order matters, gotta run 'em in the order they were addedfor ( int x = 0; x < transformerList.length; x++ ) {TransformerInfo transformerInfo = transformerList[x];ClassFileTransformer transformer = transformerInfo.transformer();byte[] transformedBytes = null;try {transformedBytes = transformer.transform( loader,classname,classBeingRedefined,protectionDomain,bufferToUse);}catch (Throwable t) {// don't let any one transformer mess it up for the others.// This is where we need to put some logging. What should go here? FIXME}if ( transformedBytes != null ) {someoneTouchedTheBytecode = true;bufferToUse = transformedBytes;}}// if someone modified it, return the modified buffer.// otherwise return null to mean "no transforms occurred"byte [] result;if ( someoneTouchedTheBytecode ) {result = bufferToUse;}else {result = null;}return result;}

以上是最終調到的java代碼,可以看到已經調用到我們編寫的javaagent代碼里了,我們一般是實現一個ClassFileTransformer類,然后創建一個對象注冊了對應的TransformerManager里。

Class Transform的實現

這里說的class transform其實是狹義的,主要是針對第一次類文件加載的時候就要求被transform的場景,在加載類文件的時候發出ClassFileLoad的事件,然后交給instrument agent來調用javaagent里注冊的ClassFileTransformer實現字節碼的修改。

Class Redefine的實現

類重新定義,這是Instrumentation提供的基礎功能之一,主要用在已經被加載過的類上,想對其進行修改,要做這件事,我們必須要知道兩個東西,一個是要修改哪個類,另外一個是那個類你想修改成怎樣的結構,有了這兩信息之后,于是你就可以通過InstrumentationImpl的下面的redefineClasses方法去操作了。

public void redefineClasses(ClassDefinition[] definitions)throws ClassNotFoundException {if (!isRedefineClassesSupported()) {throw new UnsupportedOperationException("redefineClasses is not supported in this environment");}if (definitions == null) {throw new NullPointerException("null passed as 'definitions' in redefineClasses");}for (int i=0; i<definitions.length; ++i) {if (definitions[i] == null) {throw new NullPointerException("element of 'definitions' is null in redefineClasses");}}if (definitions.length == 0) {return; // short-circuit if there are no changes requested}redefineClasses0(mNativeAgent, definitions); }

在JVM里對應的實現是創建一個VM_RedefineClasses的VM_Operation,注意執行它的時候會stop the world的:

jvmtiError JvmtiEnv::RedefineClasses(jint class_count, const jvmtiClassDefinition* class_definitions) { //TODO: add locking VM_RedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_redefine); VMThread::execute(&op); return (op.check_error()); } /* end RedefineClasses */

這個過程我盡量用語言來描述清楚,不詳細貼代碼了,因為代碼量實在有點大:

  • 挨個遍歷要批量重定義的jvmtiClassDefinition
  • 然后讀取新的字節碼,如果有關注ClassFileLoadHook事件的,還會走對應的transform來對新的字節碼再做修改
  • 字節碼解析好,創建一個klassOop對象
  • 對比新老類,并要求如下:
  • 父類是同一個
  • 實現的接口數也要相同,并且是相同的接口
  • 類訪問符必須一致
  • 字段數和字段名要一致
  • 新增或刪除的方法必須是private static/final的
  • 可以修改方法
    • 對新類做字節碼校驗
    • 合并新老類的常量池
    • 如果老類上有斷點,那都清除掉
    • 對老類做jit去優化
    • 對新老方法匹配的方法的jmethodid做更新,將老的jmethodId更新到新的method上
    • 新類的常量池的holer指向老的類
    • 將新類和老類的一些屬性做交換,比如常量池,methods,內部類
    • 初始化新的vtable和itable
    • 交換annotation的method,field,paramenter
    • 遍歷所有當前類的子類,修改他們的vtable及itable

    上面是基本的過程,總的來說就是只更新了類里內容,相當于只更新了指針指向的內容,并沒有更新指針,避免了遍歷大量已有類對象對它們進行更新帶來的開銷。

    更多的信息見原貼:《https://blog.csdn.net/ancinsdn/article/details/58276945》

    ?

    總結

    以上是生活随笔為你收集整理的JVM插桩之二:Java agent基础原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产特黄色片 | 韩国精品一区二区三区六区色诱 | 国产美女在线免费观看 | 国产超碰在线 | 中文字幕色站 | 久久久久在线观看 | 国产色一区 | 7799av| 免费看麻豆 | 射九九 | 国产一区二区在线免费 | 亚洲精品视频二区 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 欧美一级小视频 | 国产精品视频不卡 | 日本99干网| 国产成人精品久久亚洲高清不卡 | 国产亚洲无 | 蜜桃av久久久亚洲精品 | 狠狠色丁香婷婷综合最新地址 | 国产一区欧美日韩 | 日韩av在线免费播放 | 国产精品爽爽久久久久久蜜臀 | 干干夜夜 | 国产老太婆免费交性大片 | 黄网站免费看 | 91色吧 | 精品自拍网 | 国产又粗又硬又长又爽的视频 | 毛片二区 | 成人四虎 | 久久一区二区三区超碰国产精品 | 欧美一级片在线播放 | 日韩在线播放av | 在线观看亚洲国产精品 | 天堂视频一区 | 三级av片 | 看国产黄色片 | 国产91精品久久久久 | 国产一区二区高清视频 | 日韩一区二区三区高清在线观看 | 国产精品一区二区久久国产 | 99在线免费视频 | 一区二区三区高清不卡 | 精品久久久久一区二区国产 | 黄色亚洲 | 婷婷色在线资源 | 一区二区久久 | 黄色av电影 | 国产亚洲小视频 | 国产精品久久一 | 国产这里只有精品 | 99免费观看视频 | 亚洲精欧美一区二区精品 | 精品国产91亚洲一区二区三区www | 国产色综合天天综合网 | 精品国产精品国产偷麻豆 | 日韩欧美一级二级 | 麻豆视频免费版 | 天天爱天天操 | 毛片a级片 | 天天操天天操天天操天天操天天操天天操 | 精品在线观看一区二区 | 在线草 | 久久久黄视频 | 午夜国产在线观看 | 在线观看aa | 国产精品一区二区三区在线看 | 99国内精品 | 精品国产一区二区三区久久 | 国产成人一区二区三区在线观看 | 亚洲精品1234区 | 久久艹在线 | 国产91成人 | 欧美另类成人 | 国产一级一片免费播放放 | 青青视频一区 | 国产福利资源 | 青青草国产免费 | 精品日韩在线 | 毛片播放网站 | 久久久免费在线观看 | 久久艹在线观看 | 日韩大片免费在线观看 | 日韩大片在线 | 视频一区亚洲 | 在线播放 日韩专区 | 91av超碰| 久久精品aaa | 欧美一区二区三区在线视频观看 | 久久精品超碰 | 成年人在线播放视频 | 在线日韩av | 精品国产诱惑 | 欧美99久久| 亚洲午夜精品久久久久久久久久久久 | 精品一区二区在线播放 | 国产成人久久av免费高清密臂 | 久久理论电影网 | 91在线精品播放 | 五月天丁香亚洲 | 久草在线在线精品观看 | 天天操夜夜操天天射 | 国产不卡在线 | 欧美在线视频日韩 | 色综合久久88色综合天天免费 | 欧美精品一区二区性色 | 久久久久成人精品 | 青青河边草免费 | 伊人色**天天综合婷婷 | 国精产品999国精产品岳 | 欧美日韩国产网站 | 在线观看国产永久免费视频 | 欧美一区二区精品在线 | 日韩av高潮| 午夜av在线免费 | 免费观看丰满少妇做爰 | 亚洲成av人片在线观看 | 婷婷色中文 | 亚洲久久视频 | 欧美一级性生活视频 | 免费a v观看 | 欧美日韩国内在线 | 国产日本亚洲高清 | 久久久久电影网站 | 91欧美精品 | 成人性生交大片免费观看网站 | 国产精品igao视频网网址 | 激情综合网婷婷 | 在线a亚洲视频播放在线观看 | 欧美一级性视频 | 日本公妇色中文字幕 | 亚洲精品高清视频在线观看 | 狠狠干中文字幕 | av亚洲产国偷v产偷v自拍小说 | 免费日韩 精品中文字幕视频在线 | 99久久久国产精品免费99 | 欧美analxxxx | 中文字幕2021 | 国产小视频免费在线观看 | av高清网站在线观看 | 精品高清美女精品国产区 | 狠狠操夜夜 | 久久99热这里只有精品国产 | 国产高清在线免费 | 亚洲精品国产品国语在线 | 亚洲精品国产日韩 | 成年人在线 | 综合激情 | 东方av在线免费观看 | 91精品国产自产老师啪 | 91人人网 | 日韩免费在线网站 | 久久久久久久久久久综合 | 手机看片午夜 | 中文字幕一区二区三区精华液 | 99久久精品免费看国产四区 | 欧美日韩国产一区 | 欧美日韩aa| 国产精品久久久久久久午夜 | 国产色一区 | 免费观看完整版无人区 | 亚洲国产高清在线观看视频 | 中文字幕在线视频一区 | av在线h | 狠狠色狠狠色综合日日小说 | 狠狠操狠狠干2017 | 日韩欧美综合在线视频 | 国产成人久久精品77777 | 免费视频成人 | 国产不卡视频在线播放 | 99re热精品视频 | 98久9在线 | 免费 | 免费日韩一级片 | 天天色天天射天天综合网 | 精品你懂的| 久久综合欧美 | 国产精品麻豆一区二区三区 | 中文免费观看 | 人人澡人摸人人添学生av | 91污在线 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 日韩女同一区二区三区在线观看 | 99视频在线看 | 一区二区三区四区精品视频 | 粉嫩一二三区 | 久久一本综合 | 麻豆免费看片 | 日韩在线观看网站 | 中文字幕 国产视频 | 天天干视频在线 | 国产一区免费视频 | av在线播放中文字幕 | 国产成人一二片 | 国产啊v在线观看 | 五月婷综合 | 国产精品久久在线观看 | 最近av在线| 麻豆国产视频 | 国产精品一区二区av麻豆 | 亚洲欧美国内爽妇网 | 91亚色免费视频 | 亚洲日韩欧美一区二区在线 | 亚洲免费高清视频 | 日韩亚洲精品电影 | 天天操操操操操操 | 天天操天天添天天吹 | 怡红院av久久久久久久 | 中国美女一级看片 | 国产精品高潮在线观看 | 成人性生爱a∨ | 成人h在线观看 | 久久久这里有精品 | 特级西西www44高清大胆图片 | 91精品区 | 日韩精品一区电影 | 久久久在线免费观看 | 激情视频91 | 日日爱网站 | 日韩av片免费在线观看 | 福利网在线| 日韩一二三区不卡 | 91在线在线观看 | www.久久久久| 在线观看成人福利 | 国产99久久久国产精品免费看 | 久久精品久久精品久久 | 中文字幕永久在线 | 亚洲成av片人久久久 | www视频在线播放 | 精品国产电影一区二区 | 岛国av在线不卡 | 日韩一区二区三区在线观看 | 黄色免费观看网址 | 国产精品免费在线 | 国产精品久久久久久超碰 | 在线亚洲成人 | 最近中文字幕在线 | 99国产免费网址 | 日韩精品中字 | 欧美亚洲国产精品久久高清浪潮 | 91精品国自产在线偷拍蜜桃 | 亚洲国产欧美一区二区三区丁香婷 | 一区二区三区高清 | 91视视频在线直接观看在线看网页在线看 | 免费h精品视频在线播放 | 国产成人精品一区二区 | 国产精品99久久免费黑人 | 日韩电影一区二区在线观看 | 中文字幕成人一区 | 日韩色综合网 | 成人av高清 | 国产午夜免费视频 | 亚州中文av| 欧美午夜视频在线 | 中文字幕在线观看av | 97超碰人人澡人人爱学生 | 日日干夜夜爱 | 黄色免费电影网站 | 天天操天天爱天天干 | 99精品欧美一区二区蜜桃免费 | 狠狠色伊人亚洲综合网站野外 | 蜜臀aⅴ国产精品久久久国产 | freejavvideo日本免费 | 亚洲高清免费在线 | 日韩中文在线字幕 | 国产精品久久久久久一二三四五 | 91热爆视频| 欧美三级高清 | 探花视频网站 | 天天干天天色2020 | 国产精品不卡av | 成年人免费在线观看网站 | 可以免费观看的av片 | 日日夜夜操操操操 | 天天操天天爽天天干 | www.玖玖玖 | 在线观看色网 | 亚洲黄色免费在线看 | 免费色黄 | 91麻豆操| 日韩伦理片hd | 国产 视频 高清 免费 | 444av| 精品在线视频观看 | 高清av免费一区中文字幕 | 黄色av免费看 | 中文伊人 | 一本色道久久综合亚洲二区三区 | 亚洲黄网站 | 国产伦理久久精品久久久久_ | 蜜臀久久99精品久久久酒店新书 | 亚洲日本va午夜在线影院 | 亚洲欧美日韩精品久久奇米一区 | 婷婷亚洲综合五月天小说 | 一级片免费在线 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 99视频精品免费视频 | av在线免费观看网站 | 激情开心色 | 国产亚洲无 | 日韩av在线网站 | 国产不卡在线观看视频 | 久久综合九色综合欧美狠狠 | 国产精品无av码在线观看 | 国产黄视频在线观看 | 久久久久久久久久久国产精品 | 日韩在线理论 | 麻花豆传媒mv在线观看网站 | 最近最新中文字幕 | 超碰97人人干 | 国产糖心vlog在线观看 | 日本bbbb摸bbbb| 国产成人三级一区二区在线观看一 | 国产一区在线播放 | 日韩一区二区三区免费电影 | 国产成人精品在线观看 | 麻豆传媒精品 | 久久综合导航 | 91九色porn在线资源 | www.香蕉| 亚洲成年片 | 国内99视频 | 永久免费av在线播放 | 色橹橹欧美在线观看视频高清 | 天堂网在线视频 | 日韩精品在线观看av | 91视频高清| www蜜桃视频 | 欧美色图88 | 中文字幕 国产视频 | 91精品播放| 欧美日韩调教 | 欧美一级乱黄 | 国产成人资源 | 97超碰在线久草超碰在线观看 | 亚洲资源视频 | 中文字幕第一页在线vr | 免费看毛片网站 | 天天干天天拍天天操 | 黄在线免费看 | 亚洲国产中文字幕在线观看 | 欧美日韩高清 | 色偷偷97| 中文字幕中文字幕在线中文字幕三区 | 亚洲午夜久久久久久久久 | 国产精品久久久久一区二区国产 | 国产精品国产亚洲精品看不卡 | 97免费公开视频 | 免费观看一区二区三区视频 | 超碰精品在线观看 | 69精品| 日韩av免费在线电影 | 精品国产一区二区三区av性色 | 国产在线日本 | 亚洲精品小视频在线观看 | 色综合久久久久综合99 | 黄色一二级片 | 欧美三级高清 | 一个色综合网站 | 欧美日韩一级久久久久久免费看 | 一色屋精品视频在线观看 | 日韩精品免费在线观看视频 | 国产黄在线免费观看 | 激情综合中文娱乐网 | 中文视频一区二区 | 在线视频一二区 | 欧美日韩一区二区免费在线观看 | 免费在线成人av电影 | 黄色国产成人 | www国产亚洲精品久久麻豆 | av色网站| 在线免费观看黄色大片 | 久久草在线精品 | 天天艹 | 国产又粗又猛又黄又爽视频 | 久久婷婷国产色一区二区三区 | 国产美女精品视频免费观看 | 一区二区三区在线视频观看58 | 久草在线视频新 | 久久亚洲欧美日韩精品专区 | 91精品一区在线观看 | 精品国产自 | 伊人久久一区 | 91av电影| 国产午夜一级毛片 | 亚洲精品国产精品乱码在线观看 | 日本三级不卡视频 | 国产高清黄 | 日韩欧美综合精品 | 精品久久网 | 在线观看日韩精品 | 激情综合中文娱乐网 | 国产精品久久久久av福利动漫 | 美女精品在线 | 伊人狠狠干| 五月激情亚洲 | 精品国产一区二区三区日日嗨 | 国产精品99久久久久久久久 | 成人久久久电影 | 成人黄色免费观看 | 国产精品久久久久久久久久免费看 | 亚州国产视频 | 国产免费美女 | 少妇bbb好爽 | 婷婷精品视频 | 黄色的片子 | 五月婷婷六月丁香 | 亚洲香蕉在线观看 | 黄色精品在线看 | 97超碰人人在线 | 日韩视频1区 | 日韩激情网 | 久操视频在线播放 | 成人高清在线 | 久草爱视频 | 久草免费在线视频 | 久久在草 | 天天干天天色2020 | 91在线成人 | 在线免费观看视频 | 麻花传媒mv免费观看 | 日日夜夜天天 | 99久久久国产免费 | 亚洲国产精品va在线 | 亚洲 欧洲 国产 精品 | 欧美日韩在线免费视频 | 久久精品7 | 一级淫片在线观看 | 亚洲成人av在线播放 | 黄色小网站在线观看 | 你操综合 | 日韩av一区二区在线影视 | 99色在线视频 | 精品高清美女精品国产区 | 91人人射 | 日韩视频专区 | 99色| 欧美日本国产在线观看 | 三级在线播放视频 | 中文字幕资源网 国产 | 久久成| 97国产视频 | 成人黄色小说视频 | 国产一区二区观看 | 国产精品一区二区三区观看 | 国产白浆在线观看 | 国产日韩视频在线播放 | 成人黄色小说视频 | 91丨porny丨九色| 久久97视频 | 97爱爱爱| 日韩成人精品在线观看 | 国产福利一区二区三区在线观看 | 成人中文字幕+乱码+中文字幕 | 午夜在线免费观看视频 | 精品国产精品一区二区夜夜嗨 | 国产福利91精品一区二区三区 | 一二区av | 久久伦理电影网 | av在线进入 | 99热精品国产一区二区在线观看 | 日韩精品欧美一区 | 在线直播av | 黄色精品一区二区 | 亚洲黄色小说网址 | 最新成人av | 天天爽天天摸 | 激情在线网站 | 久久免费看av | 免费视频一区二区 | 人操人 | 成人97人人超碰人人99 | 91九色国产蝌蚪 | 午夜资源站| 六月色丁 | 成人黄色片在线播放 | 国产一级淫片免费看 | 日本性生活免费看 | 不卡国产视频 | 久久久精品国产免费观看一区二区 | 免费观看十分钟 | 91插插插网站 | 国产精品久久久影视 | 五月天久久久久 | 91桃色在线观看视频 | 四虎影视成人精品国库在线观看 | 欧美在线观看视频免费 | 制服丝袜欧美 | 亚洲一二三在线 | 欧美日韩国产色综合一二三四 | 狠狠狠色丁香婷婷综合久久88 | 久久国产精品免费 | 在线观看理论 | 99精品免费久久久久久日本 | 国产不卡av在线播放 | 久久天天躁狠狠躁夜夜不卡公司 | 欧美性色黄| 日韩影视精品 | 日韩欧美视频免费在线观看 | 最近免费中文视频 | 中文字幕在线免费97 | 国产黄色成人av | 国产精品一区二区在线免费观看 | 国产精品免费久久久久久 | av在线中文 | 婷婷五月情 | 成人黄色电影在线观看 | wwwww.国产| 狠狠干夜夜操天天爽 | 久久免费a | 久久久影视 | 国产黑丝袜在线 | 日韩av进入| 久草视频在线免费播放 | 日韩91精品 | 亚洲精品中文字幕在线观看 | 亚洲乱码久久久 | 麻豆精品国产传媒 | 亚洲视频在线观看 | 日本中文字幕在线观看 | 精品久久久久久久久久久院品网 | 亚洲一区免费在线 | 五月天婷婷在线播放 | 天堂网一区二区三区 | 日韩乱色精品一区二区 | 91在线观看欧美日韩 | 偷拍区另类综合在线 | 欧洲色吧| 9久久精品 | 在线观看免费日韩 | 国产精品久久久久久久久久99 | 午夜精品成人一区二区三区 | 久久人人爽av | 西西444www| 久久视频这里只有精品 | 日本中出在线观看 | 亚洲激情一区二区三区 | 手机成人免费视频 | 波多野结衣在线播放视频 | 成人av一区二区三区 | 国产丝袜制服在线 | 欧美日韩精品综合 | 夜夜躁日日躁 | 在线看成人片 | 亚洲精品www久久久 www国产精品com | 亚洲资源在线网 | 一本一本久久a久久精品综合妖精 | 亚洲永久字幕 | 亚洲专区路线二 | 精品国产理论 | 有码中文字幕在线观看 | 国产小视频在线播放 | 精品久久五月天 | 亚洲狠狠 | 日韩成人精品在线观看 | 99热最新精品 | 婷婷99| 91精品国产99久久久久 | 成人精品视频 | 久久久久久高潮国产精品视 | 一级黄视频 | 天天狠狠干 | 超碰在线观看99 | 色成人亚洲 | 色资源中文字幕 | 久草在线费播放视频 | 国产高清av在线播放 | 久久av中文字幕片 | 久久九九网站 | 永久黄网站色视频免费观看w | 天天操伊人 | 欧美一级日韩三级 | 亚洲视频播放 | 免费看黄在线网站 | 日韩视频免费在线观看 | 日韩精品一区二区三区免费观看视频 | 黄色软件在线观看免费 | 激情网五月天 | 久久视频在线视频 | 特级西西444www高清大视频 | 国产精品区在线观看 | 天天艹日日干 | 最近中文字幕在线 | 天天爱天天操天天射 | 丁香六月在线观看 | 视频成人永久免费视频 | 香蕉视频国产在线 | 麻豆一精品传二传媒短视频 | 国产精品自产拍在线观看网站 | 免费三级a | 欧美天天综合 | 九九视频在线播放 | 婷婷久久亚洲 | 99精品国产成人一区二区 | 日韩高清免费无专码区 | 婷婷五天天在线视频 | 日韩羞羞 | 亚洲人成影院在线 | 亚洲高清免费在线 | 国产手机视频 | 视频国产在线观看18 | 97在线观看免费高清完整版在线观看 | 日韩免费观看高清 | 97碰在线| a√资源在线 | 黄色在线观看免费 | 日韩免费av在线 | 国产精品18久久久久久vr | 毛片视频电影 | 久久久国产99久久国产一 | 在线三级av | 欧美午夜激情网 | 精品人人爽 | 亚洲一级性 | 欧美一区成人 | 中文字幕在线观看视频网站 | 超碰在线亚洲 | 成人免费在线观看av | 在线中文日韩 | 国产成人精品一区二区在线观看 | 中文字幕一区二区三区在线观看 | 亚洲经典视频在线观看 | 国产成人不卡 | 五月天中文字幕 | 五月天欧美精品 | 91精品久久久久久综合乱菊 | 亚洲婷婷在线视频 | 中文字幕在线网址 | 亚洲无吗天堂 | adn—256中文在线观看 | 午夜骚影 | 不卡的av | 精壮的侍卫呻吟h | 69av视频在线 | 激情视频免费在线 | 天堂av免费| 青青看片| 亚洲狠狠干 | 黄色一级大片免费看 | 在线看黄网站 | 人人草人 | 天天插天天狠天天透 | 婷婷社区五月天 | 欧美天天综合 | 91刺激视频 | 久久人人精 | 热久久99这里有精品 | 欧美在线1| 日韩中文字幕第一页 | 精品国内自产拍在线观看视频 | 欧美日韩精品国产 | 永久免费的啪啪网站免费观看浪潮 | av网站在线观看免费 | 国产999精品| 久草在线91| 在线视频手机国产 | 亚洲欧美精品在线 | 亚洲一一在线 | 在线成人免费电影 | 欧美精品v国产精品v日韩精品 | 国产黄色片一级 | 99久久网站 | 亚洲在线免费视频 | 久久爱导航 | 日韩一区二区三区高清免费看看 | 久久成人国产 | 操久在线| 五月亚洲 | 日韩免费高清在线观看 | 国产麻豆精品一区二区 | 香蕉视频在线网站 | 国产精品高清免费在线观看 | 黄色中文字幕在线 | 欧美视频国产视频 | 久久伦理视频 | 伊人中文在线 | 欧美极品裸体 | 欧美精品亚洲精品日韩精品 | 国产精品网红直播 | 81国产精品久久久久久久久久 | 中文字幕免费观看全部电影 | 午夜体验区 | 一区二区 精品 | 日韩一区二区三区免费视频 | 久久久久久久久久久久电影 | 99热最新在线 | 成人黄色毛片 | 久久亚洲精品国产亚洲老地址 | 久一网站 | 亚洲精品一区二区三区新线路 | 在线免费日韩 | 成人久久久久久久久 | 亚洲视频第一页 | 在线免费黄色av | 日本三级久久 | av在线影视 | 狠狠色狠狠色综合日日小说 | 视频在线一区二区三区 | 就要干b| 狠狠黄 | 一区二区三区免费 | 99国产在线视频 | 欧美一区二区三区不卡 | 国产 日韩 欧美 中文 在线播放 | 国产精品久久久久久久久免费 | 欧美色噜噜 | 天天草天天操 | 91av片 | 1024手机在线看 | 成人黄色在线观看视频 | 国产成人三级在线 | 91久久人澡人人添人人爽欧美 | 91久草视频 | 久久精品一二区 | 嫩草av在线| www.午夜| www.色午夜.com| 国产精品久久久久婷婷 | 久久久久久久久久久久久久免费看 | 久久精品毛片 | 日日碰狠狠添天天爽超碰97久久 | 国产一区久久久 | 欧美日韩高清在线观看 | 国产综合激情 | 精品国产人成亚洲区 | 国产一级久久久 | 美女视频免费一区二区 | 亚洲国产成人在线播放 | 亚洲在线免费视频 | 黄色国产高清 | 超碰人人99 | 一区二区三区在线电影 | 日韩伦理片一区二区三区 | 久久黄网站 | 精品国产一区二区三区四 | 久久艹久久 | 国产麻豆精品传媒av国产下载 | 西西444www大胆无视频 | 国产精品成人自拍 | 又黄又爽又无遮挡的视频 | 国产精品资源 | 日韩av视屏| 久久综合精品国产一区二区三区 | 91丨精品丨蝌蚪丨白丝jk | 天天天天色综合 | 久久美女免费视频 | 一区二区三区 亚洲 | 怡红院成人在线 | 国产韩国日本高清视频 | 日本性高潮视频 | 亚洲欧洲一级 | 亚洲,播放 | 水蜜桃亚洲一二三四在线 | 天天草天天 | 色狠狠操 | 国产黄色av | 久久成人国产精品入口 | 激情五月播播久久久精品 | 不卡av免费在线观看 | 91麻豆网| 中文字幕亚洲字幕 | 一二区精品 | 久久久.com| 久久情侣偷拍 | 亚洲精品综合久久 | 久久综合亚洲鲁鲁五月久久 | 91久久在线观看 | 日韩av电影网站在线观看 | 国内精品久久久久影院日本资源 | 久草视频在线免费播放 | 欧美精品一区二区性色 | 黄色免费网战 | 狠狠色香婷婷久久亚洲精品 | 亚洲精品视频一 | 久久久久婷 | 国产老熟 | 国产精品中文字幕在线 | 制服丝袜在线91 | 91成人免费观看视频 | 久久综合9988久久爱 | 久草线 | 中文字幕 国产精品 | 婷婷在线视频 | 精品国产伦一区二区三区观看说明 | 一区在线观看视频 | 欧美日韩中文字幕综合视频 | 久久午夜色播影院免费高清 | 天天综合网 天天综合色 | 久久国产精品一区二区三区四区 | 一区二区三区国 | 日韩精品不卡在线观看 | 久久久久久久久久久免费av | 日韩欧美精品免费 | www在线观看视频 | 天堂在线免费视频 | 免费观看版 | 日本最新高清不卡中文字幕 | 天天操天天玩 | 国产久草在线观看 | 青草视频免费观看 | www天天操| 中文字幕在线一二 | 国产精品一区二区三区四 | 日本福利视频在线 | 日韩偷拍精品 | 在线观看欧美成人 | 久草视频手机在线 | 四虎在线视频 | 91.精品高清在线观看 | 婷婷丁香六月 | 国产香蕉视频 | 欧美一区二区日韩一区二区 | 福利视频一二区 | 天天操天天操天天操天天操天天操天天操 | 亚洲免费国产视频 | 99久久精品无免国产免费 | 国内免费的中文字幕 | 日韩精品免费一区二区三区 | 欧美做受高潮电影o | 国产99久久九九精品 | 在线观看视频中文字幕 | 91精品在线免费观看 | 久久大片 | 黄色影院在线免费观看 | 区一区二区三在线观看 | 综合精品久久 | 手机av在线网站 | 国产成人av网 | 亚洲男人天堂a | 国产又粗又猛又爽又黄的视频免费 | 成人午夜片av在线看 | 激情五月亚洲 | 97看片吧| 国产精品久久久久一区二区国产 | 国产亚洲精品免费 | 婷婷综合av | 久久久亚洲影院 | 日韩av视屏| 波多野结衣小视频 | 在线视频欧美精品 | 黄色美女免费网站 | 久久99热这里只有精品 | 国产区 在线 | 成人免费视频视频在线观看 免费 | 久久99亚洲精品 | 国产成免费视频 | 欧美日韩午夜在线 | 天天操夜夜拍 | 成人a视频在线观看 | 国产精品入口66mio女同 | 色久av| 欧美伦理一区二区 | 日韩在线理论 | 99视频在线免费 | 亚洲va欧美 | 久久精品123 | 狠狠色丁香婷婷综合基地 | 亚洲视频免费在线观看 | 亚洲乱码精品久久久 | 亚洲一二三区精品 | 国产小视频国产精品 | 国产原创中文在线 | 国产剧情一区在线 | 狠狠狠色丁香婷婷综合久久88 | 久草视频免费 | 黄色国产高清 | 97天天干| 国产一区二区电影在线观看 | 中文字幕在线影院 | 亚洲视频在线视频 | 天天干天天草天天爽 | 久久精品91久久久久久再现 | 日韩久久久 | 国产精品18久久久久久不卡孕妇 | 久久久久亚洲国产 | 久久老司机精品视频 | av3级在线 | 久久99精品国产一区二区三区 | 欧美激情视频在线免费观看 | 日韩免费小视频 | av中文在线影视 | www.神马久久 | www久草 | 999久久久精品视频 日韩高清www | 一区二区精品视频 | 丁香色综合 | 黄色视屏在线免费观看 | 国产日韩精品一区二区三区 | av片在线观看免费 | 日日干天天爽 | 亚洲永久精品在线 | 91精品国产99久久久久久久 | 综合中文字幕 | 国产精品久久久久久久久久久免费看 | 久久欧美精品 | 九九影视理伦片 | 91伊人| 一区二区三区四区五区在线 | 欧美日一级片 | 久久99久久99精品 | 久久久香蕉视频 | 亚洲日本一区二区在线 | 婷婷电影在线观看 | www.99在线观看 | 91九色网站 | 香蕉视频国产在线 | 97国产大学生情侣白嫩酒店 | 爱色av.com| 国产96精品 | av一二三区 | 亚洲永久国产精品 | 在线观看视频国产一区 | 日韩欧美在线观看一区 | 综合在线观看 | 国产精品麻豆99久久久久久 | 黄色大全视频 | 亚洲 中文 在线 精品 | 欧美精品久久久久久久 | 国产午夜三级一区二区三 | 免费视频三区 | 国产成人三级一区二区在线观看一 | 精品国产免费看 | 7799av| 中文字幕免费中文 | 色综合久久88色综合天天6 | 国产a网站| 91探花国产综合在线精品 | 99精品系列 | 久久伊人色综合 | 免费看片网站91 | 最新av网址在线 | 一级免费观看 | 亚洲国产一区av | 国产午夜精品福利视频 | 狠狠躁夜夜躁人人爽超碰91 | 欧美精品一区二区免费 | 国产午夜精品福利视频 | 在线岛国av | 中文字幕a∨在线乱码免费看 | 一区二区影院 | 亚洲免费观看视频 | 人人爽人人搞 | 亚洲精品国产精品国自产观看浪潮 | 黄色在线观看网站 | 精品视频123区在线观看 | 日韩av电影免费在线观看 | 亚洲精品久久久久999中文字幕 | 丁香视频五月 | 99在线视频免费观看 | 久草干 | 天天干干 | 91麻豆精品久久久久久 | 99久久久国产精品免费99 | 人人舔人人爽 | 精品久久久久久久久久久久久久久久久久 | 国产区免费在线 | 97人人精品 | 91成人天堂久久成人 | 伊人国产在线观看 | 天堂av免费 | 99精品免费久久久久久久久 | 国产一级片一区二区三区 | 国产成人精品福利 | 激情偷乱人伦小说视频在线观看 | 久久久黄视频 | 麻豆精品91| 欧美成人性网 | 免费日韩一区 | a天堂一码二码专区 | 久久一区二区三区四区 | 欧美另类xxx| 国产成人精品一二三区 | 91超在线 | 精品国产一区二区三区av性色 | 五月综合色婷婷 | 狠狠色噜噜狠狠 | 黄色免费观看视频 | 国产精品亚洲综合久久 | 日韩av电影手机在线观看 | 色噜噜日韩精品一区二区三区视频 | 国产一区免费在线观看 | 天天操人 | 一区二区三区污 | 国产69久久久 | 久久国产免费视频 | 国产高清视频 | 欧美精品在线观看免费 | 欧美一级日韩三级 | 亚洲黄色高清 | 久草在线中文视频 | 日韩成人免费在线电影 | 中文字幕av在线播放 | 免费看的毛片 | 日韩欧美精品在线 | 国产精品福利无圣光在线一区 | 国产xxxx做受性欧美88 | 欧美另类性 |