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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS逆向之深入解析如何计算+load方法的耗时

發布時間:2024/5/28 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS逆向之深入解析如何计算+load方法的耗时 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、類方法 +load

  • 在 pre-main 時期,objc 會向 dyld 注冊一個 init 回調:
void _objc_init(void) {static bool initialized = false;if (initialized) return;initialized = true;// fixme defer initialization until an objc-using image is found?environ_init();tls_init();static_init();lock_init();exception_init();_dyld_objc_notify_register(&map_images, load_images, unmap_image); }
  • 當 dyld 將要執行載入 image 的 initializers 流程時(依賴的所有 image 已走完 initializers 流程時),init 回調被觸發,在這個回調中,objc 會按照父類-子類-分類順序調用 +load 方法:
void prepare_load_methods(const headerType *mhdr) {size_t count, i;runtimeLock.assertLocked();classref_t *classlist = _getObjc2NonlazyClassList(mhdr, &count);for (i = 0; i < count; i++) {schedule_class_load(remapClass(classlist[i]));}category_t **categorylist = _getObjc2NonlazyCategoryList(mhdr, &count);for (i = 0; i < count; i++) {category_t *cat = categorylist[i];Class cls = remapClass(cat->cls);if (!cls) continue; // category for ignored weak-linked classrealizeClass(cls);assert(cls->ISA()->isRealized());add_category_to_loadable_list(cat);} }
  • 因為 +load 方法執行地足夠早,并且只執行一次,所以通常會在這個方法中進行 method swizzling 或者自注冊操作。也正是因為 +load 方法調用時間點的特殊性,導致此方法的耗時監測較為困難,而如何使監測代碼先于 +load 方法執行成為解決此問題的關鍵點。
  • 關于初始化流程的執行順序,NSObject 文檔中有以下說明:
1. All initializers in any framework you link to. 2. All +load methods in your image. 3. All C++ static initializers and C/C++ __attribute__(constructor) functions in your image. 4. All initializers in frameworks that link to you.
  • 為了方便描述,這里統稱 2、3 步驟為 initializers 流程。可以看到,只要把監測代碼塞進依賴動態庫的 initializers 流程里(監測耗時庫),就可以解決執行時間問題。考慮到工程內可能添加了其他動態庫,還需要讓監測耗時庫的初始化函數早于這些庫執行。解決了監測代碼的執行問題,接下來就可以實現這些代碼,本文采用在 attribute(constructor) 初始化函數中 hook 所有 +load 方法來計算原 +load 執行的時間。

二、獲取需要監測的 image

  • 由于 dyld 加載的鏡像中包含系統鏡像,需要對這些鏡像做次過濾,獲取需要監測的鏡像,也就是主 App 可執行文件和添加的自定義動態庫對應的鏡像:
static bool isSelfDefinedImage(const char *imageName) {return !strstr(imageName, "/Xcode.app/") &&!strstr(imageName, "/Library/PrivateFrameworks/") &&!strstr(imageName, "/System/Library/") &&!strstr(imageName, "/usr/lib/"); }static const struct mach_header **copyAllSelfDefinedImageHeader(unsigned int *outCount) {unsigned int imageCount = _dyld_image_count();unsigned int count = 0;const struct mach_header **mhdrList = NULL;if (imageCount > 0) {mhdrList = (const struct mach_header **)malloc(sizeof(struct mach_header *) * imageCount);for (unsigned int i = 0; i < imageCount; i++) {const char *imageName = _dyld_get_image_name(i);if (isSelfDefinedImage(imageName)) {const struct mach_header *mhdr = _dyld_get_image_header(i);mhdrList[count++] = mhdr;}}mhdrList[count] = NULL;}if (outCount) *outCount = count;return mhdrList; }
  • 上面代碼邏輯很簡單,遍歷 dyld 加載的鏡像,過濾掉名稱中包含 /Xcode.app/、/Library/PrivateFrameworks/、/System/Library/ 、/usr/lib/ 的常見系統庫,剩下的就是需要添加的自定義鏡像和主鏡像。

三、獲取定義 +load 方法的類和分類

  • 獲取擁有 +load 類和分類的方法有兩種:
    • 一種是通過 Runtime Api,去讀取對應鏡像下所有類及其元類,并逐個遍歷元類的實例方法,如果方法名稱為 load ,則執行 hook 操作;
    • 一種是和 Runtime 一樣,直接通過 getsectiondata 函數,讀取編譯時期寫入 MachO 文件 DATA 段的 __objc_nlclslist 和 __objc_nlcatlist 節,這兩節分別用來保存 no lazy class 列表和 no lazy category 列表,所謂的 no lazy 結構,就是定義了 +load 方法的類或分類。
  • 上文說過 objc 會向 dyld 注冊一個 init 回調,其實這個注冊函數還會接收一個 mapped 回調 _read_images,dyld 會把當前已經載入或新添加的鏡像信息通過回調函數傳給 objc 設置程序,一般來說,除了手動 dlopen 的鏡像外,在 objc 調用注冊函數時,工程運行所需的鏡像已經被 dyld 加載進內存,所以 _read_images 回調會立即被調用,并讀取這些鏡像 DATA 段中保存的類、分類、協議等信息。
  • 對于 no lazy 的類和分類,_read_images 函數會提前對關聯的類做 realize 操作,這個操作包含給類開辟可讀寫的信息存儲空間、調整成員變量布局、插入分類方法屬性等操作,簡單來說就是讓類可用 (realized)。值得注意的是,使用 objc_getClass 等查找接口,會觸發對應類的 realize 操作,而正常情況下,只有使用某個類時,這個類才會執行上述操作,即類的懶加載。
  • 反觀 +initialize ,只有首次向類發送消息時才會調用,不過兩者目的不同,+initialize 更多的是提供一個入口,讓開發者能在首次向類發送消息時,處理一些額外業務。
  • 回到上面的兩種方法,第一種方法需要借助 objc_copyClassNamesForImage 和 objc_getClass 函數,而后者會觸發類的 realize 操作,也就說需要把讀取鏡像中訪問的所有類都變成 realized 狀態,當類較多時,這樣做會比較明顯地影響到 pre-main 的整體時間,并且 objc_copyClassNamesForImage 無法獲取自定義 image 中分類的信息,特別是系統分類,比如定義 +load 方法的 NSObject+Custom 分類,對自定義 image 調用 objc_copyClassNamesForImage 函數,其返回值將不會包含 NSObject 類,這導致后續操作將不會包含 NSObject 類,也就無法測量它的 +load 耗時(可以使用 objc_copyClassList 獲取所有類,并判斷類方法列表是否有 +load 方法來規避這個問題,但是和 objc_copyClassNamesForImage 一樣,此方法將更加耗時,也無法確認 +load 方法屬于那個分類),所以本文采用了第二種方法:
static NSArray <LMLoadInfo *> *getNoLazyArray(const struct mach_header *mhdr) {NSMutableArray *noLazyArray = [NSMutableArray new];unsigned long bytes = 0;Class *clses = (Class *)getDataSection(mhdr, "__objc_nlclslist", &bytes);for (unsigned int i = 0; i < bytes / sizeof(Class); i++) {LMLoadInfo *info = [[LMLoadInfo alloc] initWithClass:clses[i]];if (!shouldRejectClass(info.clsname)) [noLazyArray addObject:info];}bytes = 0;Category *cats = getDataSection(mhdr, "__objc_nlcatlist", &bytes);for (unsigned int i = 0; i < bytes / sizeof(Category); i++) {LMLoadInfo *info = [[LMLoadInfo alloc] initWithCategory:cats[i]];if (!shouldRejectClass(info.clsname)) [noLazyArray addObject:info];}return noLazyArray; }

四、hook 類和分類的 +load 方法

  • 獲得了擁有 +load 方法的類和分類,就可以 hook 對應的 +load 方法。no lazy 分類的方法在 _read_images 階段就已經插入到對應類的方法列表中,因此可以在元類的方法列表中拿到在類和分類中的定義的 +load 方法:
static void hookAllLoadMethods(LMLoadInfoWrapper *infoWrapper) {unsigned int count = 0;Class metaCls = object_getClass(infoWrapper.cls);Method *methodList = class_copyMethodList(metaCls, &count);for (unsigned int i = 0, j = 0; i < count; i++) {Method method = methodList[i];SEL sel = method_getName(method);const char *name = sel_getName(sel);if (!strcmp(name, "load")) {LMLoadInfo *info = nil;if (j > infoWrapper.infos.count - 1) {info = [[LMLoadInfo alloc] initWithClass:infoWrapper.cls];[infoWrapper insertLoadInfo:info];LMAllLoadNumber++;} else {info = infoWrapper.infos[j];}++j;swizzleLoadMethod(infoWrapper.cls, method, info);}}free(methodList); }
  • 處理多個動態庫時,無法利用讀取的 image 順序對方法進行匹配,因為讀取的 image 順序并未考慮依賴關系,和 objc 初始化時遍歷的 image 順序并不一致,所以這里的處理方式是錯誤的,為了保證準確性,依舊需要使用 +load 方法的 imp 地址做對比。
  • 為了讓 infos 列表能和類方法列表中的 +load 方法順序一致,在構造 infoWrapper 時,按照后編譯分類-先編譯分類-類次序,將類信息追加入 infos 列表中,然后在遍歷元類的方法列表時,將對應的 LMLoadInfo 對象取出以設置 +load 方法執行耗時變量:
static void swizzleLoadMethod(Class cls, Method method, LMLoadInfo *info) { retry:do {SEL hookSel = getRandomLoadSelector();Class metaCls = object_getClass(cls);IMP hookImp = imp_implementationWithBlock(^ {info->_start = CFAbsoluteTimeGetCurrent();((void (*)(Class, SEL))objc_msgSend)(cls, hookSel);info->_end = CFAbsoluteTimeGetCurrent();if (!--LMAllLoadNumber) printLoadInfoWappers();});BOOL didAddMethod = class_addMethod(metaCls, hookSel, hookImp, method_getTypeEncoding(method));if (!didAddMethod) goto retry;info->_sel = hookSel;Method hookMethod = class_getInstanceMethod(metaCls, hookSel);method_exchangeImplementations(method, hookMethod);} while(0); }
  • 在所有的 +load 方法執行完畢后,輸出工程的 +load 耗時信息。

五、 打印所有 +load 耗時信息

  • 基本上統計 +load 的耗時主要想看到兩個信息:總耗時和最大耗時,因此除了輸出總耗時,還按照 +load 執行時間降序打印出類和分類:
static void printLoadInfoWappers(void) {NSMutableArray *infos = [NSMutableArray array];for (LMLoadInfoWrapper *infoWrapper in LMLoadInfoWappers) {[infos addObjectsFromArray:infoWrapper.infos];}NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"duration" ascending:NO];[infos sortUsingDescriptors:@[descriptor]];CFAbsoluteTime totalDuration = 0;for (LMLoadInfo *info in infos) {totalDuration += info.duration;}printf("\n\t\t\t\t\t\t\tTotal load time: %f milliseconds", totalDuration * 1000);for (LMLoadInfo *info in infos) {NSString *clsname = [NSString stringWithFormat:@"%@", info.clsname];if (info.catname) clsname = [NSString stringWithFormat:@"%@(%@)", clsname, info.catname];printf("\n%40s load time: %f milliseconds", [clsname cStringUsingEncoding:NSUTF8StringEncoding], info.duration * 1000);}printf("\n"); }
  • 輸出如下:
Total load time: 2228.866100 millisecondsB(sleep_1_s) load time: 1001.139998 milliseconds DynamicFramework(sleep_1_s) load time: 1001.088023 millisecondsA(sleep_100_ms) load time: 101.074934 millisecondsA(copy_class_list) load time: 68.153024 milliseconds ViewController(sleep_50_ms) load time: 51.078916 millisecondsDynamicFramework load time: 4.286051 millisecondsViewController(sleep_1_ms) load time: 1.210093 millisecondsViewController load time: 0.580072 millisecondsA load time: 0.254989 milliseconds

六、制作動態庫集成至主工程

  • 編寫完監測代碼,需要將其打包成動態庫加入工程中,也就是 Embedded Binaries 和 Linked Frameworks And Libraries:
    • Embedded Binaries 一欄表示把列表中的二進制文件,集成到最終生成的 .app 文件中;
    • Linked Frameworks And Libraries 一欄表示鏈接時,按順序依次鏈接列表中的庫文件。
  • 如果是我們自己添加的庫文件,需要將庫文件添加進上面的兩個列表中,否則要么 dyld 加載庫鏡像時出現 Library not loaded 錯誤,要么直接不鏈接這個庫文件。而系統庫則不需要設置 Embedded 欄 ,只需要設置 Linked 欄,因為實際設備中會預置這些庫。

  • Linked 欄中庫的排列順序,最終會體現在鏈接階段命令的入參順序上:
// Build MessageLd ....../clang ... -framework One -framework Two ... -o .../Demo.app/Demo
  • 當參與鏈接的是動態庫時,在生成主 App 可執行文件的 Load Commands 中,這些動態庫對應的 LC_LOAD_DYLIB 排列順序將和入參順序一致。

  • 當這些動態庫間不存在依賴關系時,其初始化函數的調用順序將和 LC_LOAD_DYLIB 的排列順序一致,否則會優先調用依賴庫的初始化函數:

  • 因為監測耗時庫不依賴其他自定義動態庫,所以直接將監測耗時庫拖入工程,并調整其至 Linked 欄首位即可。

七、制作 pod 集成至主工程

  • 如果工程依賴由 CocoaPods 管理,我可能想要通過以下語句引入 +load 監測庫:
pod 'A4LoadMeasure', configuration: ['Debug']
  • 只有在 Debug 狀態下才會引入監測庫。需要注意的是 CocoaPods 引入的動態庫是由 xcconfig 文件的 OTHER_LDFLAGS 設置的,我們無法通過調整其在 Linked 欄的順序來決定鏈接順序,不過 Other Linker Flags 中 -framework 指定的庫優先級比 Linked 欄中的要高,所以只需要關心 CocoaPods 如何生成 xcconfig 的 OTHER_LDFLAGS 字段即可。
  • CocoaPods 在生成 Pods 工程時,會創建一個名稱為 Pods-主target名的 target (AggregateTarget),這個 target 的 xcconfig 匯集了所有 pods target 的 xcconfig ,來看下 CocoaPods 是如何創建這個文件的:
# Pod::Generator::XCConfig::AggregateXCConfig def generate...@xcconfig = Xcodeproj::Config.new(config)...XCConfigHelper.generate_other_ld_flags(target, pod_targets, @xcconfig)...@xcconfig end def save_as(path)generate.save_as(path) end# Xcodeproj::Config def save_as(path)# 間接執行了 to_hash 并保存至 xcconfig 文件中 end def to_hash(prefix = nil)...[:libraries, :frameworks, :weak_frameworks, :force_load].each do |key|modifier = modifiers[key]sorted = other_linker_flags[key].to_a.sortif key == :force_loadlist += sorted.map { |l| %(#{modifier} #{l}) }elselist += sorted.map { |l| %(#{modifier}"#{l}") }endend... end
  • 可以看到,xcconfig 在保存時才對鏈接庫進行排序,如 frameworks 會根據名稱生序排序后再 map 成“-framework 庫名”的形式保存在文件的 OTHER_LDFLAGS 字段中,因此只要保證監測庫名比 Pods 工程引入的其它自定義動態庫小就可以了,由于 0LoadMeasure、A+LoadMeasure 等非主流名稱無法生成正確的 modulemap ,所以采用 A4LoadMeasure 作為監測庫名,A4 的值比 AA 等英文字母組成的名稱小,針對這種情況已經基本夠用了,畢竟很少會有用 A0 作為名稱前綴的組件或動態庫。
  • 經過以上命名處理,開發者就可以直接通過 CocoaPods 引入監測庫,而不需要進行額外的調整操作。

八、完整示例

  • Objective C之計算+load方法的耗時。

總結

以上是生活随笔為你收集整理的iOS逆向之深入解析如何计算+load方法的耗时的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产精品第十页 | 最近高清中文字幕 | 亚洲免费激情 | 亚洲女欲精品久久久久久久18 | 国产精品理论视频 | 久久99久久99精品免观看粉嫩 | 337p西西人体大胆瓣开下部 | 久久亚洲国产精品 | 91福利视频在线 | 丁香九月婷婷综合 | 在线观看一区 | a级一a一级在线观看 | 天天草天天 | 黄a在线看 | www国产亚洲精品久久网站 | 亚洲黄色一级视频 | 国产视频精品视频 | 中文字幕在线免费观看视频 | 91av在线精品| 国产精品久久久久久五月尺 | 国产精品嫩草69影院 | 又黄又爽又色无遮挡免费 | 韩日在线一区 | 激情深爱 | 网站在线观看你们懂的 | 人人网av| 日韩专区中文字幕 | 九九免费精品视频在线观看 | 欧美日韩免费观看一区=区三区 | 日韩在线在线 | 美女免费网站 | 午夜视频亚洲 | 亚洲视频 中文字幕 | 深爱婷婷 | 美女福利视频一区二区 | 丰满少妇对白在线偷拍 | 亚州五月 | 国产精品久久久久三级 | 欧美精品一区二区免费 | www亚洲精品 | 911国产在线观看 | 在线观看视频福利 | 久久久精品一区二区三区 | 麻豆一级视频 | 国产精品美女网站 | 国产精品久久久久久久久久久杏吧 | 天海冀一区二区三区 | 久久在线免费视频 | 国内外成人在线 | 91视频高清 | 国产视频亚洲精品 | 日韩一区在线免费观看 | 天天射射天天 | 午夜12点| av在线免费网 | 久久激情视频 久久 | 久久草草影视免费网 | 久久久久综合精品福利啪啪 | 精品久久久久久久久久久久久 | 欧美va电影| 国产精品视频永久免费播放 | 国产一级二级三级在线观看 | www黄在线| 成年人电影免费看 | 午夜狠狠操 | 最新国产中文字幕 | 亚洲天天草 | 国产精品一区二区久久精品爱微奶 | 天天爽天天摸 | 亚洲国产成人精品电影在线观看 | 偷拍视频一区 | 成年人免费观看国产 | 国产一二三在线视频 | 狠狠色噜噜狠狠狠 | 91系列在线| 欧美 日韩 成人 | 久久久久久国产精品亚洲78 | 久久看免费视频 | 欧美9999| 国产精品久久久久久久久久了 | 亚洲三级黄 | 国产伦精品一区二区三区无广告 | 国产精品18久久久久久久久 | 麻豆视频免费在线观看 | 深爱婷婷激情 | 97精品超碰一区二区三区 | 66av99精品福利视频在线 | 美女福利视频在线 | 亚洲视频国产 | 不卡中文字幕av | 成人精品视频久久久久 | 成人精品一区二区三区电影免费 | 美女精品在线观看 | 久草网免费| 91麻豆看国产在线紧急地址 | 亚洲国产精品推荐 | 久久人人干| 三级av免费看 | 久久伦理影院 | avhd高清在线谜片 | 免费黄在线观看 | av色网站 | 97人人模人人爽人人喊网 | 国产福利一区二区在线 | 91av资源网| 视频二区| 人人澡超碰碰97碰碰碰软件 | 久久精品国产精品亚洲精品 | 天天曰天天干 | 亚洲精品男女 | 黄色国产高清 | 激情五月婷婷激情 | 国产视频手机在线 | 一本色道久久综合亚洲二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 色综合天天天天做夜夜夜夜做 | 日韩av电影中文字幕 | 久久视频 | 天天操天天操一操 | 久草在线高清视频 | 久久久精品视频成人 | 97高清视频 | 日韩 在线观看 | 久久久久久久久久久国产精品 | 亚洲一二三久久 | 免费观看版 | 国产精品无av码在线观看 | 一区二区三区四区五区在线视频 | 综合网天天 | 国产成人精品亚洲精品 | 国产精品热视频 | 在线中文字幕视频 | 色综合五月 | 深爱激情综合网 | 国产999精品久久久久久麻豆 | 91精品爽啪蜜夜国产在线播放 | 国产一区自拍视频 | 91精品国产91久久久久福利 | 一区二区三区四区精品视频 | 久久久黄色免费网站 | 成人国产电影在线观看 | 九九热在线精品 | 欧美aa一级 | 国产亚洲欧美精品久久久久久 | 伊人影院在线观看 | 综合黄色网| 福利区在线观看 | 久久男人视频 | 黄色综合| 婷婷在线视频 | 久久久国产精品人人片99精片欧美一 | 麻豆传媒视频在线免费观看 | 国产九九九九九 | 中文免费| 婷婷综合视频 | 国产999免费视频 | 亚洲国产精久久久久久久 | 成人a在线观看 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 综合久久久 | 国产精品免费在线播放 | 成人久久久久久久久久 | 偷拍精偷拍精品欧洲亚洲网站 | 日韩精品第一区 | 国产五月色婷婷六月丁香视频 | 久久久久久久久久影院 | 天天色天天综合 | 91激情视频在线观看 | 成年人免费观看国产 | 国产无区一区二区三麻豆 | 久久手机免费视频 | 久久好看免费视频 | 中文字幕在线免费 | 亚洲最新av在线 | 国产永久免费高清在线观看视频 | 国产一级在线看 | 欧美激情精品久久久久 | 久久专区| 韩国三级一区 | 久久99精品久久久久久 | 欧美精品乱码99久久影院 | 国产精品综合久久久久久 | 日本免费久久高清视频 | 69精品在线 | 国内精品久久久久影院男同志 | 黄色天堂在线观看 | 国产香蕉在线 | 视频一区亚洲 | 中文在线www | 国产精品麻豆三级一区视频 | 国产一区在线不卡 | 99精品欧美一区二区 | 久久永久视频 | 日日日网| 久久久久久久久久久久影院 | 久久欧美综合 | 久久黄色片 | 久久综合给合久久狠狠色 | 视频国产在线观看18 | 色婷婷狠狠干 | 在线 国产一区 | 久久久黄色av | 国产成人在线看 | 婷婷福利影院 | 久久五月网| 国产 日韩 欧美 中文 在线播放 | 999久久久久久久久 69av视频在线观看 | 色婷五月天 | 久草免费资源 | 免费在线a | 亚洲国内精品 | 日韩成人免费电影 | 激情电影影院 | 九九免费在线看完整版 | 国产视频 亚洲精品 | 九九热中文字幕 | 久久全国免费视频 | 人人草人 | 丁香在线观看完整电影视频 | 日日干天天爽 | 国产免费又黄又爽 | 久久精品视频中文字幕 | 精品毛片久久久久久 | 中文字幕在线看人 | 日韩欧美综合精品 | 国产精品第 | 狠狠插狠狠干 | 亚洲人毛片 | 欧美综合在线视频 | 国产精品激情在线观看 | 免费亚洲视频 | 在线观看精品一区 | 亚洲影院天堂 | 人人插人人艹 | 精品极品在线 | 国产精品久久久久婷婷二区次 | av电影免费观看 | 看av免费| 九九免费在线观看视频 | 亚洲成人av电影在线 | av三区在线 | 欧美亚洲专区 | 国产精品成人aaaaa网站 | 超碰激情在线 | 日韩网站免费观看 | 黄色av网站在线观看 | 午夜精品一区二区三区免费视频 | 日本特黄特色aaa大片免费 | 中文字幕国产精品 | 麻豆精品传媒视频 | 国产精品欧美一区二区三区不卡 | 黄色影院在线播放 | 亚洲国产午夜精品 | 国产精品精品国产色婷婷 | 日日射av | 伊人婷婷网 | 亚洲精品午夜久久久久久久久久久 | 伊人国产女| 久久精品国产免费看久久精品 | 亚洲精品视频在线免费播放 | 精品电影一区 | 久久精品网址 | 成人免费在线播放 | 亚洲激情视频在线观看 | 91久久人澡人人添人人爽欧美 | 丁香狠狠 | 成片免费观看视频999 | 中文字幕在线看视频 | 久久av在线播放 | 成人av网址大全 | 国产又粗又猛又色 | 最近日本中文字幕a | 国色综合 | 在线观看国产一区 | 久久久国产精品一区二区三区 | 国产视频日韩视频欧美视频 | 久久久福利视频 | 狠狠做深爱婷婷综合一区 | 91网站在线视频 | 欧美色插| 亚洲干视频在线观看 | av片中文字幕 | 亚洲精品网页 | 91av电影在线观看 | 天堂av色婷婷一区二区三区 | 国产夫妻av在线 | 久久久免费毛片 | 国产精品毛片一区视频 | 亚洲美女免费精品视频在线观看 | 日韩av电影免费观看 | 久青草视频在线观看 | 免费看特级毛片 | 国产精品第十页 | 婷婷九月激情 | 91精品国产91久久久久 | 9在线观看免费 | 97伊人网 | 一区二区三区国产欧美 | 天天射天天射 | 中文字幕一区二区三区在线观看 | 久草在线视频在线观看 | 97视频免费在线 | 久草网站在线观看 | 国产护士hd高朝护士1 | 91中文在线观看 | 2018亚洲男人天堂 | 亚洲精品ww| 91在线播放国产 | 欧美日韩高清一区 | 午夜久久久久久久久久久 | 久久精品这里精品 | 精品国产观看 | 麻豆视传媒官网免费观看 | 成人a在线观看高清电影 | 中文在线√天堂 | 91系列在线 | 欧美一级久久 | 黄色av网站在线观看 | 日韩欧美在线观看 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 91大神免费视频 | www.色就是色| 午夜电影 电影 | 在线看片日韩 | 欧美日韩另类视频 | 国产一级h| 婷香五月 | 日韩欧在线| 国产精品手机播放 | 亚洲理论在线 | 久久久久久久亚洲精品 | 一区二区丝袜 | 欧美一级电影片 | 成在线播放| 亚洲专区一二三 | 天堂网av 在线 | 欧美91av| 97超碰中文字幕 | 亚洲欧美日韩精品久久久 | 国产精品精品久久久久久 | 天天干天天草 | 国产免费黄视频在线观看 | 亚洲波多野结衣 | 国产成本人视频在线观看 | 欧美日韩在线播放 | 99久久婷婷国产 | 国产成人一区二区三区久久精品 | 久久精品免费 | 国产视频精品久久 | 久久久久99精品成人片三人毛片 | 国精产品一二三线999 | 最近更新好看的中文字幕 | 国产专区精品视频 | 在线v片免费观看视频 | 五月婷婷视频在线观看 | 久久免费电影 | 国产一级黄 | 在线亚洲小视频 | 婷婷激情在线 | 国产成人久久av977小说 | 国内精品视频在线 | 久久 地址 | 在线中文字幕播放 | 中文字幕精品一区久久久久 | 精品字幕在线 | 97视频免费在线 | 欧美色图p| 亚洲人人精品 | 亚洲国产av精品毛片鲁大师 | 黄色一级大片在线观看 | 国产午夜精品av一区二区 | 精品视频在线视频 | 亚洲精品伦理在线 | 91精品国产91久久久久福利 | 国产中文字幕免费 | 亚洲日韩欧美一区二区在线 | 免费黄av| 97偷拍在线视频 | 00av视频| 国产日韩欧美在线播放 | 成年人网站免费在线观看 | 欧美日韩中文在线观看 | 国产区 在线| 欧美日一级片 | 国内亚洲精品 | 国产精品一区二区精品视频免费看 | 精品国产_亚洲人成在线 | 久久久黄视频 | 国产系列 在线观看 | 在线国产视频观看 | 日韩免费在线观看网站 | 亚洲年轻女教师毛茸茸 | 久草在线观看资源 | 97网站 | 免费裸体视频网 | 免费看成年人 | 毛片在线播放网址 | 免费看网站在线 | 久草视频在线播放 | 国产成人免费网站 | 96久久| 国产成人免费高清 | 一区二区三区精品在线视频 | 射综合网| 啪啪免费视频网站 | 国产专区免费 | 黄网站www| 国产精品理论片在线播放 | 九9热这里真品2 | 久久久综合 | 97超级碰碰 | 亚洲成人黄色在线观看 | av7777777| 日韩在线免费看 | 亚洲欧美乱综合图片区小说区 | 久久草在线视频国产 | 91免费高清视频 | 色姑娘综合 | 亚洲国产成人在线 | 亚洲欧美激情精品一区二区 | 一区二区三区在线免费观看视频 | 国产精品观看 | 成人福利在线播放 | 欧美极度另类性三渗透 | 色丁香久久 | 日韩视频在线不卡 | 日韩中文字幕第一页 | 天天综合成人网 | 亚洲人av免费网站 | 亚洲成人高清在线 | 在线只有精品 | 亚洲综合成人婷婷小说 | 日韩电影在线一区二区 | 亚洲国产精品成人女人久久 | 中文字幕在线观看第一区 | 国产福利精品在线观看 | 亚洲性视频 | 亚洲精品视频久久 | www.久久99| 久久精品视频中文字幕 | 亚洲一区不卡视频 | 亚一亚二国产专区 | 免费黄色av| 日韩精品无码一区二区三区 | 五月婷婷黄色 | 欧美美女一级片 | 欧美俄罗斯性视频 | 97网| 永久中文字幕 | 精品一区二三区 | 九九在线国产视频 | 亚洲成人国产 | www欧美xxxx| 一级黄色毛片 | 中文字幕免费在线看 | 国产美女精品 | 日本中文字幕在线视频 | 丝袜美腿在线 | 草莓视频在线观看免费观看 | 久久精品老司机 | 999久久久免费精品国产 | 最新99热| 国产不卡片 | 婷婷婷国产在线视频 | 国产中文字幕在线观看 | 爱干视频 | 97在线观看视频 | 亚洲dvd | 激情视频在线观看网址 | 国产一区在线不卡 | 亚洲激情在线播放 | 丁香六月婷婷综合 | 97在线观 | 成人中心免费视频 | 97在线观看视频免费 | 日韩中文字幕a | 2018亚洲男人天堂 | 中国黄色一级大片 | 国产亚洲精品久久久久久网站 | 一区二区三区污 | 999国内精品永久免费视频 | 久久视频精品 | 麻豆视频免费网站 | 91精品视频网站 | 视频精品一区二区三区 | 制服丝袜欧美 | 亚洲最大av在线播放 | 色综合久久88色综合天天6 | 中文字幕之中文字幕 | 精品久久网 | 国产视频一区在线播放 | 日本女人逼 | 国产不卡一 | 国产资源在线播放 | 99视频精品免费观看, | 日韩精品视频在线免费观看 | 91在线看片 | 成片免费观看视频 | 亚洲精品视频在线免费播放 | 深爱激情五月综合 | 欧美色图狠狠干 | 久久天堂网站 | 亚洲免费成人av电影 | 国产一二三区av | 日韩中文字幕免费在线观看 | 黄网站免费看 | 午夜久久 | 9999精品视频| 国产精品色视频 | 精品一区电影 | 色综合亚洲精品激情狠狠 | 久久久久久久久久久免费 | a视频免费看 | 日韩免费观看一区二区三区 | 国产黄色成人av | 操操色| 久久96国产精品久久99软件 | 国产精品一区二区在线播放 | 久草免费电影 | 国产精品入口66mio女同 | 超碰在线官网 | 亚洲黑丝少妇 | 成人毛片100免费观看 | 18av在线视频 | 亚洲视频免费在线观看 | 成人av片免费看 | 在线一区二区三区 | 99视频在线精品国自产拍免费观看 | 国产三级香港三韩国三级 | 九九99| 色视频网站在线观看一=区 a视频免费在线观看 | 国产成人av在线影院 | 日韩精品你懂的 | 永久免费观看视频 | 国产一级不卡毛片 | www四虎影院 | 91精品国产高清自在线观看 | 亚洲黄色高清 | 国产成人精品一区二区三区免费 | 右手影院亚洲欧美 | 婷婷看片 | 国产精品欧美久久久久三级 | 成年人视频在线观看免费 | 欧美精品乱码久久久久久 | 美女精品久久久 | 亚洲精品字幕在线观看 | 国产69精品久久久久99尤 | 日本少妇高清做爰视频 | 国产精品久久电影网 | 日韩电影一区二区三区在线观看 | 精品国产精品一区二区夜夜嗨 | 亚洲精品一区二区三区四区高清 | 国产黄色看片 | 激情欧美xxxx | 久久午夜鲁丝片 | 91视频a | av黄色影院| 久久在线精品 | 成人av影视观看 | 日本99久久 | 中文字幕视频免费观看 | 国产精品观看在线亚洲人成网 | 高清精品视频 | 日韩有码网站 | 久久精品这里热有精品 | 天天干天天综合 | 在线视频 国产 日韩 | 国产中文a | 国产人成免费视频 | 色婷婷中文 | 婷婷激情综合五月天 | 亚洲资源一区 | 国产在线观看免费av | 超碰av在线 | 91中文字幕一区 | 久久国产精品99精国产 | 亚州成人av在线 | 人人爽爽人人 | 香蕉成人在线视频 | 亚洲在线看 | 国内精品中文字幕 | 中文字幕视频免费观看 | 久久视了 | 亚洲作爱 | 欧美久久久久久久久久久 | 爱爱一区 | 久久在线电影 | 黄色小说在线观看视频 | 国产色女人 | 最近中文字幕免费av | 亚洲片在线资源 | 国产精品一区二区免费在线观看 | 天天操月月操 | 国产一级电影免费观看 | 成人av在线网址 | 国产伦理久久精品久久久久_ | 97视频在线 | 97超在线视频 | 99久久精品费精品 | 久久久久99精品成人片三人毛片 | www.com在线观看 | 久久人人干| 色国产视频| 91看片看淫黄大片 | 四虎影视成人精品 | 最近免费中文视频 | 久久香蕉影视 | 午夜三级理论 | 超碰97人人射妻 | 激情视频综合网 | 国产大片黄色 | 久久高清国产视频 | 亚洲天堂网在线视频观看 | 亚洲丝袜中文 | 久久欧美在线电影 | 一区二区高清在线 | 99久久精品国产欧美主题曲 | 国产不卡在线观看视频 | 99久久精品视频免费 | 亚洲精品久久久久久国 | 国产成人免费网站 | 日韩高清在线观看 | 精品亚洲国产视频 | 操操操操网 | 日韩高清dvd| 免费国产亚洲视频 | 九九视频精品在线 | 日本九九视频 | 久久久五月天 | 欧美日韩91 | 97**国产露脸精品国产 | 人人网av | 高清av中文字幕 | 欧美夫妻性生活电影 | 东方av免费在线观看 | 欧美日韩中字 | 99热亚洲精品 | 99免费在线 | 国产精品久久久久久爽爽爽 | 一区二区三区在线视频观看58 | 99久久久久国产精品免费 | 欧美精品在线视频 | 日p视频在线观看 | 国产品久精国精产拍 | 91视频啊啊啊 | 久久精品久久久久久久 | 午夜精品久久久久久久久久久久久久 | 国产视频精选在线 | 色婷婷狠狠五月综合天色拍 | 夜夜干天天操 | 中文字幕乱码亚洲精品一区 | 日韩在线首页 | 国内外成人免费在线视频 | 狠狠色狠狠色终合网 | 免费a现在观看 | 91久久一区二区 | 国产资源免费 | 麻豆国产精品一区二区三区 | 久久在线 | 91av99| 四虎www| 久草视频免费看 | 成人精品一区二区三区中文字幕 | 99久久免费看 | 韩国视频一区二区三区 | 亚洲男男gⅴgay双龙 | a黄色大片| 91桃色在线观看视频 | 人人澡人人舔 | 日韩高清免费观看 | 久久免费播放视频 | 亚洲午夜精品一区二区三区电影院 | 国产一区二区网址 | 国产精品视频资源 | 日本婷婷色 | 日韩精品中文字幕在线 | 久久久美女 | 五月激情视频 | 综合色播 | 色窝资源 | 国产剧在线观看片 | 国产91精品在线播放 | 国产资源在线观看 | 亚洲香蕉在线观看 | 午夜三级福利 | 免费观看全黄做爰大片国产 | 国产高清区 | 日本黄色大片儿 | 五月天六月婷 | 在线观看视频你懂 | 日韩色在线 | 久久黄视频 | 国产精品久久网站 | 日韩a在线播放 | 日韩av视屏 | 伊人电影天堂 | 天堂av影院| 国产一级特黄毛片在线毛片 | 久久午夜免费视频 | 日韩精品一区二区三区丰满 | 亚洲三级精品 | 99精品黄色片免费大全 | 亚洲国产免费看 | 成 人 免费 黄 色 视频 | 91丨九色丨蝌蚪丨对白 | 九九九九免费视频 | 欧美成人精品欧美一级乱 | 视频在线观看一区 | 久久高清片 | www.久久久.com| 免费人成网 | 成人免费看电影 | 狠狠操综合 | 亚洲欧美激情精品一区二区 | 97碰在线视频 | 国产精品久久久影视 | 久久精品999 | 亚洲女人天堂成人av在线 | 国产精品对白一区二区三区 | 色婷婷婷| a黄色 | 日韩欧美69 | 美女久久精品 | 国产视频欧美视频 | 日韩理论在线播放 | 日韩欧美视频 | 国产精品久久久一区二区三区网站 | 在线视频专区 | 成人国产精品免费 | 国产麻豆视频 | 天堂va欧美va亚洲va老司机 | 婷婷视频在线 | 欧美日韩电影在线播放 | 国产一级片在线播放 | 精品一区二区免费 | 超碰在97 | 99热精品国产一区二区在线观看 | 亚洲欧美日韩一区二区三区在线观看 | 97在线影视 | 国产一级片直播 | 欧美人人| 久久久久久久99 | 亚洲国产视频直播 | 中文字幕高清 | 热99久久精品 | 国产精品高清免费在线观看 | 99精品在线观看 | 国产小视频福利在线 | 亚洲精品88欧美一区二区 | 9在线观看免费高清完整版 玖玖爱免费视频 | 在线观看视频h | 人人澡澡人人 | 欧美激情综合五月色丁香小说 | 午夜精品区| 久久精品福利 | 久久精品91久久久久久再现 | 久久黄色成人 | 91三级在线观看 | 久久综合九色综合欧美就去吻 | 久久大视频 | 五月开心网 | 日韩免费播放 | 婷婷色网| 亚洲三级视频 | 午夜婷婷网 | 91av视频在线观看免费 | 国产精品成人国产乱一区 | 久久影院中文字幕 | 国产精品18久久久久久久 | 久久天天综合网 | 涩av在线 | 色在线视频网 | 四虎www. | 中文字幕在线观看视频一区二区三区 | 欧美精品一区二区免费 | 国产免费观看视频 | 成人黄色小说网 | 欧美网站黄色 | 精品久久久久_ | 欧美日韩一区二区三区不卡 | 丁香六月婷婷激情 | 天天干,夜夜操 | 夜夜视频欧洲 | 成人免费观看网址 | 日韩高清精品一区二区 | 久久久久亚洲国产精品 | 日日夜夜天天 | 国产99久久九九精品免费 | 国产欧美中文字幕 | 欧美日韩国产页 | 亚洲美女视频网 | 久草在线费播放视频 | 成人午夜性影院 | 在线中文字幕观看 | 狠狠干干 | 在线99视频| 丁香花在线视频观看免费 | 日韩免费一区二区三区 | 午夜精品一区二区三区在线播放 | 91精品91 | 波多野结衣在线中文字幕 | 一级免费黄视频 | 波多野结衣电影久久 | 国产网站色 | 日韩精品在线视频 | 五月婷综合 | 国产九九九精品视频 | 成人片在线播放 | 日韩一级成人av | 久久国产精品视频 | 欧美激情精品一区 | 日韩在线观看中文字幕 | 激情综合色图 | 黄色在线网站噜噜噜 | 久久久91精品国产一区二区精品 | 久久久久国产免费免费 | 亚洲国产合集 | 最新av网址在线观看 | 久久视频精品在线 | 又黄又爽又刺激的视频 | 日日操狠狠干 | 伊人色综合久久天天网 | 国产婷婷vvvv激情久 | 久久成人综合 | 亚洲午夜av电影 | 国产精品第十页 | 成人国产亚洲 | 国产白浆在线观看 | 又污又黄的网站 | 国产精品美女网站 | 天天综合区| 国内免费久久久久久久久久久 | 亚洲免费婷婷 | 99高清视频有精品视频 | 亚洲国内精品在线 | 国产专区精品视频 | 国产成人久久av免费高清密臂 | 日日精品 | 又黄又刺激又爽的视频 | 久久久久成人精品 | 久久视频在线免费观看 | 精品一区二区在线免费观看 | 国产精品永久久久久久久久久 | 91丨九色丨蝌蚪丰满 | 成人手机在线视频 | 999亚洲国产996395 | 在线观看视频中文字幕 | 国产成人精品三级 | 天天爽天天碰狠狠添 | 久久久av免费| 91久久国产自产拍夜夜嗨 | 在线观看91av | 久久系列 | 免费特级黄色片 | 日韩欧美在线观看一区二区三区 | 久久99热这里只有精品国产 | 国产网站色 | 日韩免费一区二区 | 在线导航av | 骄小bbw搡bbbb揉bbbb | 激情久久综合 | 免费精品人在线二线三线 | 色网站免费在线观看 | 97超碰人人 | 国产午夜精品一区 | www.天天操 | 人人插人人爱 | 麻豆国产网站入口 | 亚洲国产成人av网 | 国产精品永久久久久久久久久 | 中文字幕五区 | 永久免费毛片在线观看 | 亚洲精品视频中文字幕 | 五月天激情综合 | 亚洲欧美国产精品久久久久 | 亚洲人成在线观看 | 午夜精品久久久久久久99水蜜桃 | 97精品国产97久久久久久春色 | 久久最新 | 可以免费观看的av片 | 亚洲精品欧洲精品 | 天天干天天想 | 狠狠干天天操 | 免费看的黄色小视频 | 日韩在线观看视频一区二区三区 | 日韩欧美在线不卡 | 国产一线在线 | 色黄久久久久久 | 亚洲a成人v | 99视频在线播放 | 视频三区在线 | 日韩大片在线 | 中文字幕在线观看网址 | 亚洲第一区精品 | 中文字幕久久精品亚洲乱码 | 亚洲成人av在线电影 | 综合精品久久 | 国产精品久久久久久久久久久久久 | 精品视频成人 | 中文字幕888 | 国产精品美女久久久久久久 | 在线观看mv的中文字幕网站 | 一级久久精品 | 中文在线√天堂 | 久久在线精品视频 | 午夜免费在线观看 | 操操操av | 一区二区视 | 一级欧美一级日韩 | 97精品国产91久久久久久久 | 欧美一二三四在线 | 日韩精品一区二区三区免费观看 | 亚洲精品一区中文字幕乱码 | 欧美在线观看视频一区二区三区 | 欧美日韩xxxxx | 久久久久网址 | www黄色大片 | 天天五月天色 | 最新av在线播放 | 日韩一区二区三区免费视频 | 3d黄动漫免费看 | 欧美一二区在线 | 91丨九色丨国产丨porny精品 | 久久精品9| 成人黄色中文字幕 | 免费av影视 | 日韩电影黄色 | 九九热1| 天天爽人人爽 | 狠狠色婷婷丁香六月 | 国产网站av | 狠狠操精品 | 天天天干夜夜夜操 | 久久精品黄 | 91丨九色丨丝袜 | 欧美国产精品久久久久久免费 | 在线国产日韩 | 奇米影视999 | 韩国av电影网 | 美女网站色免费 | 国产精品一区免费在线观看 | 中字幕视频在线永久在线观看免费 | 久草在线手机观看 | 国产成人精品女人久久久 | 日韩视频免费观看高清 | 天天爽夜夜爽人人爽一区二区 | 国产精品久99 | 青草草在线视频 | av在观看 | 91国内产香蕉 | 婷婷久久网 | 欧美日韩中文另类 | 久久色网站 | 久久久久免费精品国产 | 久久黄色片子 | 国产成人一区二区精品非洲 | 日日夜夜人人精品 | 在线免费观看视频 | 精品免费一区 | 黄色毛片网站在线观看 | 国产黄a三级三级 | 欧美成人a在线 | 久久精品久久综合 | 国产精品原创av片国产免费 | 欧洲精品码一区二区三区免费看 | 国产一区二区不卡在线 | 国产麻豆剧传媒免费观看 | 日韩免费一区二区三区 | 国产精品久久久久久久久久不蜜月 | 91大神在线观看视频 | 亚洲精品99久久久久久 | 美女久久 | 日韩午夜剧场 | 久久av免费观看 | 黄色三级网站在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 午夜丁香网 | 日韩在线观看三区 | 欧美日韩裸体免费视频 | 在线观看久久久久久 | 日本中文字幕系列 | 在线免费观看的av | 深夜成人av | 亚洲在线视频网站 | 综合色爱| 五月天婷婷在线播放 | 国产在线精品二区 | 去干成人网 | 亚洲激情综合 | 日韩黄色影院 | 91精品国产麻豆国产自产影视 | 日韩电影在线一区二区 | 欧美另类z0zx | 欧美男男激情videos | 国产一区二区手机在线观看 | 中文字幕制服丝袜av久久 | 国产精品免费一区二区 | 欧美性色综合网站 |