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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

AVB源码学习(一):AVB2.0工作原理及编译配置

發布時間:2023/12/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AVB源码学习(一):AVB2.0工作原理及编译配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考資料

感謝前輩的blog,安全相關的資料可太少了,很詳細很卓越
https://blog.csdn.net/jackone12347/article/details/116241676

前言

在這個AVB源碼系列學習之前,還是重新看一下這個AVB到底是什么?AVB是為什么誕生?

1、設備中的系統分區,可以通過fastboot和燒錄工具進行替換掉,替換成功后,可以正常開機,這種能接受么? 2、在設備運行過程中,破壞或者篡改一部分數據,系統能知道被篡改了么? 3、google發布了security patch安全補丁版本,明確告知某個版本有缺陷,OEM廠商仍然使用有缺陷的版本 或者被攻擊者使用了有缺陷的版本,系統能檢查的出來么? 4、boot鏡像的head頭和內容被篡改了,系統能檢查的出來么? 5、uboot被替換,或者system被替換,系統能檢查的出來其中有一個被替換過么?

這些問題,可統歸為系統安全相關的問題,從Android O版本開始,google就設計出了AVB,用來解決這些問題。

其實AVB校驗的設計難點,主要是在uboot中的AVB校驗,因為uboot要校驗vbmeta和boot分區要校驗公鑰,以及lock上鎖邏輯、防回滾邏輯、啟動狀態的邏輯,以及這些邏輯的內容存儲在分區中還是RPMB中等等。
(這里不一定是uboot去校驗avb,這是與系統的啟動流程。)

下面開始android AVB2.0(一)工作原理及編譯配置

android AVB2.0(一)工作原理及編譯配置

android AVB2.0介紹,本篇主要介紹AVB2.0的概述和工作原理、配置和編譯。有關AVB2.0的其他子系統的介紹,請查看android AVB2.0學習總結。

AVB2.0概述

什么是AVB?

先看一段google官方的定義: “Verified boot is the process of assuring the end user of the integrity of the software running on a device. It typically starts with a read-only portion of the device firmware which loads code and executes it only after cryptographically verifying that the code is authentic and doesn’t have any known security flaws. AVB is one implementation of verified boot.”

AVB是確保終端用戶運行的設備安全的一整套流程。
通常從設備固件的只讀部分啟動,使用加密的方式驗證代碼是真實的,且沒有任何已知的安全缺陷后才執行它。AVB是驗證啟動的一種實現。

AVB是android的一個非常重要的安全功能,主要是防止啟動鏡像被篡改,提高系統整體的抗攻擊的能力,在啟動的過程實現一整套的校驗鏈,確保各個啟動階段是安全啟動的。

AVB在系統啟動的哪些階段工作?

AVB一般在bootloader階段和INIT的第一階段工作。

AVB在這兩個階段做了哪些事情?

AVB主要在Bootloader中校驗vbmeta/vbmeta_system/boot/vendor_boot等分區,在init的第一階段校驗vbmeta/system/vendor等分區。

AVB工作原理大概是怎樣的?

  • 1、在bootloader或者UEFI中對vbmeta分區做校驗,
  • 2、通過vbmeta中的descriptor描述符信息,去校驗boot/vendor_boot等分區,同時獲取系統中的device_status(locked or unlocked 即上鎖或者未上鎖)、boot_status(啟動狀態)、vbmeta中的加密的digest/加密算法/vbmeta大小等信息,append到kernel cmdline中;
  • 3、然后啟動kernel,kernel加載ramdisk運行init進程,進入init第一階段,進行system/vendor分區的安全校驗,會利用kernel cmdline中的值,跳過boot分區的校驗;同時,因為system/vendor分區比較大,對大分區會執行hashtree的數據處理,將root digest等信息通過ioctl存到kernel中,后面訪問數據時文件系統會執行dm-verity校驗,執行運行時動態安全校驗。

AVB對分區的處理是怎樣的?

知道了其工作原理后,那google是如何設計框架的,對系統分區做了哪些設計呢?

首先,google想到了這樣的設計:通過增加一個獨立的分區,這個分區包括了其他分區的重要校驗信息;只要保證這個vbmeta的足夠安全,那么vbmeta中包含的其他分區的信息也就足夠安全。

其次,這些安全的信息總不能用明文吧,所以得加密。用什么加密方式比較合適呢?google采用了RSA非對稱加密,對鏡像數據做RSA簽名,將來在啟動加載鏡像分區時做公鑰驗證簽名。一級級的保證各個分區的安全性。

好了,有了這些基本內容后,我們接下就介紹vbmeta的設計細節,以及它的設計用意。

AVB細節

一、vbmeta鏡像內容說明:

在整個AVB驗證的過程中,需要借助于vbmeta分區,需要增加vbmeta分區和vbmeta.img鏡像。

vbmeta.img鏡像,編譯出來的大小為4KB

可使用avbtool提供的工具查看編譯出來的vbmeta.img鏡像內容:

./android/external/avb/avbtool info_image --image android/out/target/product/xxx/vbmeta.img The vbmeta image consists of three blocks:| Header data - fixed size 256 bytes rollback index | algorithm_type | signature offset | public_key offset| Authentication data - variable size hash of vbmeta.img | signature of vbmeta.img| Auxiliary data - variable size public key | public key metadata | descriptors of other include image

vbmeta分區描述內容及vbmeta_system.img內容 :

Vbmeta的Descriptor的分類:

Chain Descriptor: 鏈式,vbmeta等分區數據少的分區。 Hash Descriptor:hash哈希,boot等小分區。 Hashtree Descriptor: dm-verity校驗的大分區,像vendor

在A/B版本中的vbmeta分區描述:


vbmeta鏡像的加解密過程簡述:

● 加密過程
根據摘要信息生成private key(私鑰),利用私鑰extra生成public key(公鑰),同時利用私鑰對vbmeta鏡像進行簽名(signature),并將公鑰和計算的hash寫到vbmeta鏡像的header中。
● 解密過程
先驗證公鑰是否平臺簽發的(公鑰比對,防止vbmeta鏡像的公鑰和簽名都被篡改掉),然后利用公鑰進行解密簽名。


AVB中鏡像的加密和解密過程,以boot.img鏡像為例

編譯制作boot.img時進行簽名時,先通過SHA-256算法得到一個散列值digest(十六進制長度為64),然后用帶RSA算法的私鑰加密這個digest,并生成簽名后和公鑰一起加在鏡像的footer尾部上,編譯時也會將這個digest存一份到vbmeta.img鏡像中。

在bootloader中加載boot鏡像時,先從vbmeta.img鏡像分區中讀出boot descriptor的digest,然后利用boot鏡像中的公鑰進行解密計算得到一個digest,和自己SHA-256計算得到的digest進行比較;

digest相等則說明boot.img是平臺編譯簽名的,如果不相等,則boot.img可能是被篡改過的,boot啟動失敗。
最后再計算一次boot鏡像內容的hash是否相等,hash不相等,啟動也是失敗。


所以這里也說保護這個vbmeta是很重要的。

私鑰簽名 公鑰驗簽的python腳本舉例說明,這個看起來就更明白些了吧?

私鑰簽名 def rsa_private_sign(data):private_key = get_key('rsa_private_key.pem')signer = PKCS1_signature.new(private_key)digest = SHA.new()digest.update(data.encode("utf8"))sign = signer.sign(digest)signature = base64.b64encode(sign)signature = signature.decode('utf-8')return signature ? ?公鑰驗證簽名 def rsa_public_check_sign(text, sign):publick_key = get_key('rsa_public_key.pem')verifier = PKCS1_signature.new(publick_key)digest = SHA.new()digest.update(text.encode("utf8"))return verifier.verify(digest, base64.b64decode(sign)) ? ?調用 def test_sign():msg = ‘test content'sign = rsa_private_sign(msg)print(rsa_public_check_sign(msg, sign)) # True

二、AVB2.0的配置和編譯

AVB2.0的配置,其實看完android/external/avb/README.md中的內容,估計就了解的差不多了,耐著點心看完。

我簡單點歸納一下,主要分下面三個部分來介紹。

  • 1、AVB的配置總開關
# Enable AVB 2.0 BOARD_AVB_ENABLE := true
  • 2、AVB key配置介紹
BOARD_AVB_ALGORITHM := SHA256_RSA4096 BOARD_AVB_KEY_PATH

AVB使用的key的路徑和加密算法類型。這個key可自己使用openssl命令生成即可, 唯一需要注意的是使用-f4 4096參數,算法類型保持不變。為什么要用4096而不用2048?這個長度越長,越難被破解,vbmeta的public key驗證時盡量用4096這個長度。

  • 3、AVB編譯鏡像

鏡像的編譯主要有vbmeta.img、boot.img、system/vendor.img、recovery.img等。

我們一個個來看。

vbmeta.img鏡像的編譯

vbmeta.img需要配置物理分區大小為64KB,這個是google推薦的,實際上數據只有4KB左右。

因為vbmeta.img里面要保存boot/dtbo/system/vendor等分區的校驗信息,所以編譯時會依賴于這些鏡像的編譯。BOARD_AVB_KEY_PATH可自定義,如果沒有定義則使用avb默認的test測試密鑰。

下面是build/core/Makefile中編譯vbmeta.img部分的腳本,其中BOARD_AVB_ALGORITHM和BOARD_AVB_KEY_PATH就是前面章節提到的需要自定義的算法和KEY路徑了。

ifdef BUILDING_VBMETA_IMAGE INSTALLED_VBMETAIMAGE_TARGET := $(BUILT_VBMETAIMAGE_TARGET) $(INSTALLED_VBMETAIMAGE_TARGET): PRIVATE_AVB_VBMETA_SIGNING_ARGS := \--algorithm $(BOARD_AVB_ALGORITHM) --key $(**BOARD_AVB_KEY_PATH**) #key是私鑰 $(INSTALLED_VBMETAIMAGE_TARGET): \$(AVBTOOL) \$(INSTALLED_BOOTIMAGE_TARGET) \$(INSTALLED_VENDOR_BOOTIMAGE_TARGET) \$(INSTALLED_SYSTEMIMAGE_TARGET) \$(INSTALLED_VENDORIMAGE_TARGET) \$(INSTALLED_PRODUCTIMAGE_TARGET) \$(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \$(INSTALLED_ODMIMAGE_TARGET) \$(INSTALLED_DTBOIMAGE_TARGET) \$(INSTALLED_CUSTOMIMAGES_TARGET) \$(INSTALLED_RECOVERYIMAGE_TARGET) \$(INSTALLED_VBMETA_SYSTEMIMAGE_TARGET) \$(INSTALLED_VBMETA_VENDORIMAGE_TARGET) \$(BOARD_AVB_VBMETA_SYSTEM_KEY_PATH) \$(BOARD_AVB_VBMETA_VENDOR_KEY_PATH) \$(BOARD_AVB_KEY_PATH)$(build-vbmetaimage-target)

這個會調用external/avb/avbtool.py腳本的make_vbmeta_image函數,去完成對vbmeta.img鏡像的處理,后面會專門拿一個章節來介紹這些腳本函數。

define build-vbmetaimage-target$(call pretty,"Target vbmeta image: $(INSTALLED_VBMETAIMAGE_TARGET)")$(hide) mkdir -p $(AVB_CHAIN_KEY_DIR)$(call extract-avb-chain-public-keys, $(AVB_CHAIN_KEY_DIR)) #生成公鑰信息$(hide) $(AVBTOOL) make_vbmeta_image \$(INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS) \ ##添加chain鏈式分區信息和avbpubkey公鑰信息$(PRIVATE_AVB_VBMETA_SIGNING_ARGS) \ ##添加—algorithm和BOARD_AVB_KEY_PATH,在板卡mk中配置過的$(BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS) \ ##設置padding_size/set_hashtree_disabled_flag/rollback_index等參數--output $@

編譯出來的vbmeta.img鏡像,可用info_image命令進行查看。
命令:

#./android/external/avb/avbtool info_image --image your_out_put_dir/vbmeta.img

boot鏡像的編譯
在boot.img鏡像編譯的時候,會調用add_hash_footer函數,也是調用的avbtool.py腳本的函數,是為了在boot.img鏡像的尾部添加校驗信息,為后面bootloader校驗boot.img安全性做的功能,通過這個尾部的信息來判斷當前啟動的boot.img是否足夠安全。

@build/core/Makefile $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(AVBTOOL) $(INTERNAL_BOOTIMAGE_FILES) $(BOARD_AVB_BOOT_KEY_PATH)$(call pretty,"Target boot image: $@")$(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) $(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@$(hide) $(call assert-max-image-size,$@,$(call get-hash-image-max-size,$(BOARD_BOOTIMAGE_PARTITION_SIZE)))$(hide) $(AVBTOOL) **add_hash_footer** \ ####主要是這個函數--image $@ \--partition_size $(BOARD_BOOTIMAGE_PARTITION_SIZE) \--partition_name boot $(INTERNAL_AVB_BOOT_SIGNING_ARGS) \$(BOARD_AVB_BOOT_ADD_HASH_FOOTER_ARGS)

編譯完成后,可以使用xxd命令查看鏡像中的內容,看一下就大致明白是怎么回事了。

# xxd boot.img | head # xxd boot.img | tail

sysmte/vendor鏡像的編譯

system/vendor鏡像處理是類似的,因為這兩個鏡像一般都比較大,不能采用和boot.img鏡像的add_hash_footer,如果在開機的時候對system/vendor整個內容進行hash計算,會比較耗時,所以google設計采用了hashtree的方式,計算整體分區最后只保證root digest hash和salt,只校驗這兩個值速度就比較快了。(而且這個過程好像是在后臺動態運行的,不影響流暢性。)

下面是腳本內容

@build/core/Makefileifeq ($(BOARD_AVB_ENABLE),true)$(BUILT_SYSTEMIMAGE): $(BOARD_AVB_SYSTEM_KEY_PATH)endif$(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE)$(call build-systemimage-target,$@)$(INSTALLED_SYSTEMIMAGE_TARGET): $(BUILT_SYSTEMIMAGE)@echo "Install system fs image: $@"$(copy-file-to-target)$(hide) $(call assert-max-image-size,$@,$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))ifeq ($(BOARD_AVB_ENABLE),true)PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$$$PATH \$(AVBTOOL) add_hashtree_footer \ ###主要是這個函數了--image $(3) \--key $(BOARD_AVB_$(call to-upper,$(2))_KEY_PATH) \--algorithm $(BOARD_AVB_$(call to-upper,$(2))_ALGORITHM) \--partition_size $(BOARD_AVB_$(call to-upper,$(2))_PARTITION_SIZE) \--partition_name $(2) \$(INTERNAL_AVB_CUSTOMIMAGES_SIGNING_ARGS) \$(BOARD_AVB_$(call to-upper,$(2))_ADD_HASHTREE_FOOTER_ARGS)endif

至于avbtool腳本如何處理hashtree數據,本篇就不介紹了,請自行看看這個函數。

好了朋友們,關于AVB2.0的工作原理和編譯配置本篇就介紹到這里了。

三、vbmeta和vbemta_system,以及vbmeta_system和system等分區的關系。

vbmeta_system.img

android/build/make/core/board_config.mk BUILDING_SYSTEM_IMAGE := true BUILDING_VBMETA_IMAGE := true

boardxx.mk 配置vbmeta_system.img的簽名需要的內容

BOARD_AVB_VBMETA_SYSTEM := system system_ext product BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048 BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 2

build/core/Makefile 制作vbmeta_system.img

define build-chained-vbmeta-image$(call pretty,"Target chained vbmeta image: $@")$(hide) $(AVBTOOL) make_vbmeta_image \$(INTERNAL_AVB_$(call to-upper,$(1))_SIGNING_ARGS) \$(BOARD_AVB_MAKE_$(call to-upper,$(1))_IMAGE_ARGS) \$(foreach image,$(BOARD_AVB_$(call to-upper,$(1))), \--include_descriptors_from_image $(call images-for-partitions,$(image))) \ ##遍歷遍歷BOARD_AVB_VBMETA_SYSTEM所有的分區描述符,并保存在vbmeta_system中--output $@ endefifdef BUILDING_SYSTEM_IMAGE ifdef BOARD_AVB_VBMETA_SYSTEM INSTALLED_VBMETA_SYSTEMIMAGE_TARGET := $(PRODUCT_OUT)/vbmeta_system.img $(INSTALLED_VBMETA_SYSTEMIMAGE_TARGET): \$(AVBTOOL) \$(call images-for-partitions,$(BOARD_AVB_VBMETA_SYSTEM)) \ ##遍歷BOARD_AVB_VBMETA_SYSTEM所有的分區鏡像,并將這些鏡像的信息存在vbmeta_system中$(BOARD_AVB_VBMETA_SYSTEM_KEY_PATH)$(call build-chained-vbmeta-image,vbmeta_system) endif endif # BUILDING_SYSTEM_IMAGE

vbmeta.img

制作vbmeta.img,這里能看到有添加INSTALLED_VBMETA_SYSTEMIMAGE_TARGET這個vbmeta_system.img進來

這樣vbmeta.img就包含vbmeta_system.img內容了

define build-vbmetaimage-target$(call pretty,"Target vbmeta image: $(INSTALLED_VBMETAIMAGE_TARGET)")$(hide) mkdir -p $(AVB_CHAIN_KEY_DIR)$(call extract-avb-chain-public-keys, $(AVB_CHAIN_KEY_DIR)) ##分離抽取私鑰對應的公鑰出來,公鑰保存在鏡像頭部$(hide) $(AVBTOOL) make_vbmeta_image \$(INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS) \$(PRIVATE_AVB_VBMETA_SIGNING_ARGS) \$(BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS) \--output $@$(hide) rm -rf $(AVB_CHAIN_KEY_DIR) endefifdef BUILDING_VBMETA_IMAGE INSTALLED_VBMETAIMAGE_TARGET := $(BUILT_VBMETAIMAGE_TARGET) $(INSTALLED_VBMETAIMAGE_TARGET): PRIVATE_AVB_VBMETA_SIGNING_ARGS := \ ##vbmeta的key路徑和算法類型--algorithm $(BOARD_AVB_ALGORITHM) --key $(BOARD_AVB_KEY_PATH)$(INSTALLED_VBMETAIMAGE_TARGET): \ ...$(INSTALLED_VBMETA_SYSTEMIMAGE_TARGET) \

vbmeta_system.img如何將這些分區鏡像的數據進行存儲的

現在我們來分解一下vbmeta_system.img,看下是如何將這些分區鏡像的數據進行存儲的。
執行

./external/avb/avbtool.py info_image --image out/xxx/vbmeta_system.img Minimum libavb version: 1.0 Header Block: 256 bytes Authentication Block: 320 bytes Auxiliary Block: 2176 bytes Public key (sha1): cdbb77177f731920bbe0a0f94f84d9038axxxxxx Algorithm: SHA256_RSA2048 Rollback Index: 1633046400 Flags: 0 Release String: 'avbtool 1.1.0' Descriptors:Prop: com.android.build.system.os_version -> '11'Hashtree descriptor:Version of dm-verity: 1Image Size: 385806336 bytesTree Offset: 385806336Tree Size: 3043328 bytesData Block Size: 4096 bytesHash Block Size: 4096 bytesFEC num roots: 2FEC offset: 388849664FEC size: 3080192 bytesHash Algorithm: sha1Partition Name: productSalt: d29a6163c3bed5c9e9b4f141d163722369xxxxxxRoot Digest: c05e7f1987d2ec59ca3d39e7a5f9d8e070xxxxxx

vim vbmeta_system.img,然后輸入%!xxd,就可以看到如下內容了:

00000000: 4156 4230 0000 0001 0000 0000 0000 0000 AVB0............ 00000010: 0000 0140 0000 0000 0000 0880 0000 0001 ...@............ 00000020: 0000 0000 0000 0000 0000 0000 0000 0020 ............... 00000030: 0000 0000 0000 0020 0000 0000 0000 0100 ....... ........ 00000040: 0000 0000 0000 0670 0000 0000 0000 0208 .......p........ 00000050: 0000 0000 0000 0878 0000 0000 0000 0000 .......x........ 00000060: 0000 0000 0000 0000 0000 0000 0000 0670 ...............p 00000070: 0000 0000 6156 4f80 0000 0000 0000 0000 ....aVO......... 00000080: 6176 6274 6f6f 6c20 312e 312e 3000 0000 avbtool 1.1.0... 00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 我把這里分割一下,前面256字節內容長度是固定的,用來存儲vbmeta_system.img本身的內容00000100: f471 409a 8786 ca2f 2d22 0f33 732c e431 .q@..../-".3s,.1 00000110: a164 95fb a21b e7dd 646e 8879 5a70 6943 .d......dn.yZpiC 00000120: af4a a9ca 55c2 7050 7201 10ca 8561 eb68 .J..U.pPr....a.h 00000130: 83b9 839b 0a80 42ac ee56 5855 720b f9be ......B..VXUr... 00000140: b37b c224 2292 9f99 a903 9c19 a423 38d0 .{.$"........#8. 00000150: d495 9f22 b7fa b7ee af00 3b46 5680 3130 ..."......;FV.10 00000160: 1d1e 84d3 241b 6366 0121 c7db 60e6 ad0b ....$.cf.!..`... 00000170: 9fa7 adbd 920e 1def 4a9b 5102 e359 2072 ........J.Q..Y r 00000180: dbac f867 42b9 5dd2 a7c5 5398 e6b9 5e3d ...gB.]...S...^= 00000190: 770f ede6 0df0 cb89 31e0 f1ac ad3c 6540 w.......1....<e@ 000001a0: f435 215d f298 d1d4 bbb4 91e9 6bc3 9174 .5!]........k..t 000001b0: 2377 dc5a 27e9 cc97 e5fb eb6f e6e6 9a13 #w.Z'......o.... 000001c0: 3428 c340 6f0a 3a71 788c 76fe 2b4d 9da4 4(.@o.:qx.v.+M.. 000001d0: ee5e 4ac4 7936 478a d9ef 10c6 2ffd 813c .^J.y6G...../..< 000001e0: 90d8 68af 31be 9ca9 0b8e b840 8fb3 877d ..h.1......@...} 000001f0: fcb1 cf2a d092 3c64 af9f 0d14 876a cdbc ...*..<d.....j.. 00000200: db84 c462 b32f cbc1 af4e 2be8 0c1b aa78 ...b./...N+....x 00000210: a359 263e f7a8 e3fe 1efb dcd7 7663 0206 .Y&>........vc.. 00000220: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000230: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000240: 0000 0000 0000 0000 0000 0000 0000 0088 ................ 說明:到這里是576字節 =256 +320 ,這里存的是Authentication簽名和hash數據了,加密混淆了。 Header Block: 256 bytes Authentication Block: 320 bytes... 00000a30: 5c3b 9436 c18f fec9 d25a 6aa0 46e1 a28b \;.6.....Zj.F... 00000a40: 2f51 6151 a336 9183 b4fb cda9 4034 4698 /QaQ.6......@4F. 00000a50: 8a1a 91df d92c 3abf 573a 4646 20f2 f0bc .....,:.W:FF ... 00000a60: 315e 29fe 5890 325c 6697 999a 8e15 23eb 1^).X.2\f.....#. 00000a70: a947 d363 c618 bb8e d220 9f78 af71 b32e .G.c..... .x.q.. 00000a80: 0889 a1f1 7db1 30a0 e61b bd6e c8f6 33e1 ....}.0....n..3. 00000a90: dab0 bd16 41fe 076f 6e97 8b6a 33d2 d780 ....A..on..j3... 00000aa0: 036a 4de7 0582 281f ef6a a975 7ee1 4ee2 .jM...(..j.u~.N. 00000ab0: 955b 4fe6 dc03 b981 0000 0000 0000 0000 .[O............. 這些數據就是輔助數據了,存的是vbmeta_system包含的system等分區的descriptor信息了 Auxiliary Block: 2176 bytes

vbmeta鏡像中包含了vbmeta_system鏡像的信息

分析完了vbmeta_system.img,再回過頭來看vbmeta.img,可以看到vbmeta鏡像中包含了vbmeta_system鏡像的信息。

$ ./external/avb/avbtool.py info_image --image out/xxx/vbmeta.img Minimum libavb version: 1.0 Header Block: 256 bytes Authentication Block: 576 bytes Auxiliary Block: 3136 bytes Public key (sha1): 6fc544ec428a010fa304a398f3a8fe62c1xxxxxx Algorithm: SHA256_RSA4096 Rollback Index: 0 Flags: 0 Release String: 'avbtool 1.1.0' Descriptors:Chain Partition descriptor:Partition Name: vbmeta_systemRollback Index Location: 2Public key (sha1): cdbb77177f731920bbe0a0f94f84d9038axxxxxx ###公鑰的sha1值和前面vbmeta_system Public key (sha1)值是相同的Prop: com.android.build.boot.fingerprint -> xxx:userdebug/test-keys'Prop: com.android.build.boot.os_version -> '11'Hash descriptor:Image Size: 26800128 bytesHash Algorithm: sha256Partition Name: bootSalt: a55c2fa693f09b24bf261f2cae3c0290d37aad3a63a78f7ed673a2d656xxxxxxDigest: f352ae2862e12e85c921394448fc47585a01ec29a77c6d8dea8c6f9e33xxxxxxFlags: 0 ...

一般android設備在uboot階段加載校驗vbmeta本身和校驗boot/vendor_boot/dtbo等分區,在android init階段啟動的時候,不再需要校驗vbmeta本身了,但是會加載vbmeta整個分區(此接口libavb靜態庫中有實現),這樣能讀到vbmeta_system的信息。

所以,init啟動AVB校驗的第一個分區是system分區。
代碼處理在first_stage_mount.cpp中的SetUpDmVerity函數

bool FirstStageMount::MountPartition(const Fstab::iterator& begin, bool erase_same_mounts,Fstab::iterator* end) { ... //AVB校驗if (!SetUpDmVerity(&(*begin))) {PLOG(ERROR) << "Failed to setup verity for '" << begin->mount_point << "'";return false;}LOG(INFO) << "MountPartition SetUpDmVerity done."; //mount掛載bool mounted = (fs_mgr_do_mount_one(*begin) == 0); ... }

SetUpDmVerity會讀fstab:
會先判斷fstab中是否有avb_keys=/avb/q-gsi.avbpubkey:/avb/r-gsi.avbpubkey:/avb/s-gsi.avbpubkey的flag

然后判斷fstab中是否有avb=vbmeta_system的flag
如果都沒有,則沒有開啟AVB

bool FirstStageMountVBootV2::SetUpDmVerity(FstabEntry* fstab_entry) {AvbHashtreeResult hashtree_result;// It's possible for a fstab_entry to have both avb_keys and avb flag.// In this case, try avb_keys first, then fallback to avb flag.if (!fstab_entry->avb_keys.empty()) {if (!InitAvbHandle()) return false;// Checks if hashtree should be disabled from the top-level /vbmeta.if (avb_handle_->status() == AvbHandleStatus::kHashtreeDisabled ||avb_handle_->status() == AvbHandleStatus::kVerificationDisabled) {LOG(ERROR) << "Top-level vbmeta is disabled, skip Hashtree setup for "<< fstab_entry->mount_point;return true; // Returns true to mount the partition directly.} else {auto avb_standalone_handle = AvbHandle::LoadAndVerifyVbmeta(*fstab_entry, preload_avb_key_blobs_[fstab_entry->avb_keys]);if (!avb_standalone_handle) {LOG(ERROR) << "Failed to load offline vbmeta for " << fstab_entry->mount_point;// Fallbacks to built-in hashtree if fs_mgr_flags.avb is set.if (!fstab_entry->fs_mgr_flags.avb) return false;LOG(INFO) << "Fallback to built-in hashtree for " << fstab_entry->mount_point;hashtree_result =avb_handle_->SetUpAvbHashtree(fstab_entry, false /* wait_for_verity_dev */);} else {// Sets up hashtree via the standalone handle.if (IsStandaloneImageRollback(*avb_handle_, *avb_standalone_handle, *fstab_entry)) {return false;}hashtree_result = avb_standalone_handle->SetUpAvbHashtree(fstab_entry, false /* wait_for_verity_dev */);}}} else if (fstab_entry->fs_mgr_flags.avb) {if (!InitAvbHandle()) return false;hashtree_result =avb_handle_->SetUpAvbHashtree(fstab_entry, false /* wait_for_verity_dev */);} else {return true; // No need AVB, returns true to mount the partition directly.}

那么fstab中為什么要添加avb_keys=/avb/q-gsi.avbpubkey公鑰的flag呢?這種設計是要解決什么問題?

system分區的公鑰和簽名信息都在了vbmeta_system中了,為什么還需要在first_stage_ramdisk中保存一份avbpubkey呢?
我們看一下編譯產物:

android/out/target/product/xxx/recovery/root/first_stage_ramdisk/avb/r-gsi.avbpubkey

再回過頭來看一下extract-avb-chain-public-keys的定義,從定義的內容來看,應該是各partition的公鑰了,形式為partition.avbpubkey

define extract-avb-chain-public-keys$(if $(BOARD_AVB_BOOT_KEY_PATH),\$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_BOOT_KEY_PATH) \--output $(1)/boot.avbpubkey)$(if $(BOARD_AVB_VENDOR_BOOT_KEY_PATH),\$(AVBTOOL) extract_public_key --key $(BOARD_AVB_VENDOR_BOOT_KEY_PATH) \--output $(1)/vendor_boot.avbpubkey)$(if $(BOARD_AVB_SYSTEM_KEY_PATH),\$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_SYSTEM_KEY_PATH) \--output $(1)/system.avbpubkey)

而我們這里是r-gsi.avbpubkey,那r-gsi表示什么?搞過XTS的應該知道是google搞的通用系統鏡像,是需要燒錄對應的system.img的。
所以,在fstab中配置的avb_keys=/avb/xxx.avbpubkey,應該是為了過GSI測試用的,在VTS測試時,會往data分區push google簽名對應的public key。
(這個末尾這點就是說這個小尾巴的內容是為了通過谷歌測試。)

(銷往海外的Android電視,若想使用Google的應用程序和服務,如YouTube、Gmail、Google Play Store等,必須通過此認證,獲得Google授權。通過Google XTS TV認證測試。)

總結

以上是生活随笔為你收集整理的AVB源码学习(一):AVB2.0工作原理及编译配置的全部內容,希望文章能夠幫你解決所遇到的問題。

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

97超视频在线观看 | 久久免费视频精品 | 玖玖在线资源 | 正在播放日韩 | 午夜丁香视频在线观看 | 国产成人在线综合 | 性色va| 日av免费 | 欧美国产日韩一区二区三区 | 欧美男同网站 | 国产成人一级电影 | 久久福利小视频 | 狠狠躁夜夜躁人人爽视频 | 久草免费资源 | 天天爱综合 | 日本中文字幕在线视频 | 国模精品在线 | 人人澡人人舔 | 国产日韩欧美在线播放 | 99久久久久国产精品免费 | 在线a人v观看视频 | 久久国产网站 | 国产 亚洲 欧美 在线 | 亚洲精品99| 四虎在线免费观看 | 伊人夜夜 | 欧美日韩不卡在线观看 | 欧美精品一区在线发布 | 成人午夜电影久久影院 | 国产精品久久久久久久久久不蜜月 | 五月天天天操 | 国产精品久久久99 | 日韩啪啪小视频 | 精品亚洲一区二区三区 | 欧美日韩视频在线观看一区二区 | 激情综合五月天 | 99九九视频 | 国产福利中文字幕 | 久久免费中文视频 | 国产成人久久 | 超碰在线人 | 天天干,天天草 | 久久精品日产第一区二区三区乱码 | 亚洲欧美一区二区三区孕妇写真 | 中文在线a∨在线 | av大全在线看 | 特级aaa毛片 | 日本黄区免费视频观看 | 欧美成人黄色片 | 九九爱免费视频 | 日韩色一区二区三区 | 在线观看免费日韩 | 9999在线 | 国产免费人成xvideos视频 | 丁香在线观看完整电影视频 | 中文字幕在线免费看线人 | 亚洲国产日韩av | 色偷偷网站视频 | 男女拍拍免费视频 | 美女激情影院 | 国际精品久久久久 | 国产黄色片网站 | 国产黑丝一区二区 | 欧美国产日韩在线观看 | 极品嫩模被强到高潮呻吟91 | 成片人卡1卡2卡3手机免费看 | 天天爽人人爽夜夜爽 | 99在线精品视频观看 | 九九视频这里只有精品 | 日韩中文字幕视频在线观看 | 欧洲精品二区 | 天天干天天拍天天操 | 一区电影 | 99免费在线播放99久久免费 | 精品96久久久久久中文字幕无 | 黄色福利视频网站 | 狠狠躁夜夜躁人人爽超碰91 | 成人av播放 | 久久久久久视频 | 国产69精品久久久久99 | 日韩精品在线观看av | 中文字幕在线播放一区二区 | 91免费版在线观看 | 国产一区91| 91资源在线视频 | 黄色软件大全网站 | 亚洲精品美女在线 | 十八岁以下禁止观看的1000个网站 | www.com.日本一级 | 亚洲精品在线一区二区三区 | 成人免费在线电影 | 国产精品久99| 91在线操 | 日韩高清精品一区二区 | 精品国产一区二区三区久久影院 | 久久久久久久影视 | 黄色三级视频片 | 精品中文字幕在线 | 久久免费黄色网址 | 午夜黄色大片 | 国产久视频 | 在线中文字母电影观看 | 亚洲国产精品传媒在线观看 | 97免费| 久久专区 | 欧美国产高清 | 波多野结衣在线观看视频 | 日本不卡一区二区三区在线观看 | 在线视频欧美精品 | 丁香花在线观看视频在线 | 一级片免费视频 | 国产成人福利片 | 77国产精品 | 欧美精品国产综合久久 | 国产精品v a免费视频 | 91视频中文字幕 | 国产精品网址在线观看 | 美女网站视频色 | 日韩三级免费 | 国产视频69| 99久久国产免费,99久久国产免费大片 | 亚洲亚洲精品在线观看 | 中文字幕.av.在线 | 亚洲精品欧洲精品 | 国产精品色 | 国产综合在线观看视频 | 国产精品九九久久久久久久 | 色综合久久综合网 | 西西4444www大胆无视频 | 欧美日韩免费网站 | 97超碰超碰久久福利超碰 | 99视频在线精品免费观看2 | 成人免费一区二区三区在线观看 | 手机av片 | 九九一级片 | 亚洲免费在线看 | 久久久91精品国产一区二区精品 | 99在线观看视频网站 | 亚洲一区二区三区四区精品 | 久久久久国产免费免费 | 99久久精品免费看国产麻豆 | 久久免费视频国产 | 国产成在线观看免费视频 | av色图天堂网 | 国产精品99久久免费黑人 | 久久婷婷精品 | 99视频精品| 午夜精品久久久久久久久久 | 欧美激情在线看 | 999久久久久久久久6666 | 69xx视频| 521色香蕉网站在线观看 | 在线成人免费电影 | 久久久久久高潮国产精品视 | 精品久久国产精品 | 91精品久久久久久综合五月天 | 又长又大又黑又粗欧美 | av福利资源 | 免费看成年人 | 久精品视频免费观看2 | 国产精品原创视频 | 国产成人久久av977小说 | 一区二区三区在线视频观看58 | 久久午夜网 | 国产精品久久麻豆 | 亚洲精品在线观看的 | 视频精品一区二区三区 | 久久久久久综合网天天 | 久草在线免费看视频 | 最近中文字幕完整视频高清1 | 成人片在线播放 | 91桃色在线播放 | 精品国产乱码久久久久久1区二区 | av网站地址 | 国产视频1 | 黄色大片免费播放 | 在线你懂| 国产专区在线视频 | 色多视频在线观看 | 国产成人a v电影 | 狠狠狠狠狠色综合 | av高清网站在线观看 | 欧美片网站yy | 97人人人| 在线观看视频你懂的 | 黄色官网在线观看 | 四虎国产精 | 黄色福利视频网站 | 免费国产黄线在线观看视频 | 五月天激情婷婷 | 欧美一区二区精美视频 | 中文字幕在线有码 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲经典精品 | 欧美热久久 | 四川妇女搡bbbb搡bbbb搡 | 人人干人人搞 | 美女久久视频 | 国产精品一区二区在线播放 | 亚洲精品午夜国产va久久成人 | 免费看片成人 | 久久不射电影院 | 少妇bbw揉bbb欧美 | 亚洲永久精品在线观看 | 成人免费看视频 | 亚洲精品99久久久久中文字幕 | 99精品国产免费久久久久久下载 | 激情av资源网 | 中文区中文字幕免费看 | 狠狠干我 | 午夜久久成人 | 亚洲最新av网址 | 丝袜一区在线 | 视频在线观看国产 | 久久久久久久久久伊人 | 天天色天天操综合 | 久久久久电影网站 | 国产亚洲精品久久19p | 在线观看av国产 | 欧美一级在线观看视频 | 午夜在线观看一区 | 成人黄色免费在线观看 | 色视频 在线 | 日韩av中文字幕在线 | 久久久久久久久亚洲精品 | 午夜视频99 | 一区在线播放 | 免费观看www小视频的软件 | 伊人伊成久久人综合网小说 | 黄色一级免费 | 久久精品影片 | 日日操日日干 | 在线观看免费观看在线91 | 欧美日韩a视频 | 日韩在线大片 | 成人黄色大片在线观看 | 国产高清日韩 | 国产精品一区二区在线看 | 久草综合在线观看 | 日韩有码专区 | 久久热首页 | 亚洲视频综合在线 | 日韩成人免费在线观看 | 国产美腿白丝袜足在线av | 国产成人精品亚洲日本在线观看 | 91视频电影 | 国产黄网站在线观看 | 国产中文在线视频 | 国模精品在线 | 开心激情久久 | 国产精品1区2区3区 久久免费视频7 | 国产亚洲永久域名 | 在线免费国产 | 婷婷干五月 | 国产精品久久久一区二区三区网站 | 五月婷婷丁香网 | av在线超碰| 日本不卡123区 | 国产专区免费 | 麻豆精品传媒视频 | 日本久久久久久久久久 | 久久精品超碰 | 高清不卡一区二区在线 | 亚洲日本精品 | 涩av在线 | 日韩电影中文字幕 | 久久久久亚洲精品中文字幕 | 99久久毛片| 天天插天天狠天天透 | 日日干精品 | 五月婷婷综合在线视频 | 亚洲高清视频一区二区三区 | 成人超碰在线 | 深爱婷婷| 亚洲精品国产欧美在线观看 | 久久久夜色 | 亚洲精品短视频 | 最新久久免费视频 | 五月婷婷六月丁香在线观看 | 夜色成人网 | 狠狠狠狠狠狠天天爱 | 天天射天天操天天 | 久久精品人 | 81精品国产乱码久久久久久 | 精品久久久国产 | 91在线看视频 | 欧美a在线看 | 国产一区二区精品久久 | 丁香国产视频 | 五月亚洲婷婷 | 中文字幕一区二 | 美女露久久 | 中文字幕人成人 | 日韩精品播放 | 国产精品99久久久久久小说 | 最近高清中文在线字幕在线观看 | 麻豆免费视频网站 | 色视频在线观看 | 午夜少妇一区二区三区 | 麻豆精品视频在线 | 狠狠色伊人亚洲综合网站野外 | 色黄www小说 | 久久在线精品视频 | 婷婷av电影 | 日本成人中文字幕在线观看 | 国产黄色大全 | 日韩av福利在线 | 天天爽网站 | 欧美一级淫片videoshd | 日韩欧美在线观看一区二区三区 | 黄网站色成年免费观看 | 97超碰在 | 欧美99久久| 探花视频在线版播放免费观看 | 超碰在线观看97 | www.狠狠色.com | 欧美另类xxx| 在线免费观看欧美日韩 | 婷婷视频在线播放 | 亚洲少妇激情 | 欧美一级免费高清 | 粉嫩av一区二区三区免费 | 日日操操操 | 欧美做受高潮电影o | 狠狠躁夜夜a产精品视频 | 国产真实精品久久二三区 | 国产区久久 | 久久久精品久久 | 91精品一区二区三区久久久久久 | 婷婷色网站 | 天天干夜夜干 | 狠狠干激情 | 久久亚洲综合色 | 天天干天天爽 | 欧美日韩国产色综合一二三四 | 91黄视频在线观看 | 色片网站在线观看 | 99热精品国产一区二区在线观看 | 精品国产一区二区三区男人吃奶 | 黄色片毛片 | 日韩有码欧美 | 成人黄色电影在线播放 | 成人三级网站在线观看 | 深夜免费网站 | 99免费在线视频 | 最新av在线网站 | 国产拍在线| 天天色天天搞 | 欧美一区二区三区四区夜夜大片 | 国产剧情一区 | 久久综合中文字幕 | 精品国产自 | 欧美大荫蒂xxx | 国产美女精品人人做人人爽 | 激情综合网天天干 | 国产91精品看黄网站在线观看动漫 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产精品久久久久国产精品日日 | 天天操综合网站 | 在线观看视频福利 | 国产成人久久77777精品 | 亚洲另类久久 | av成人免费观看 | 成人免费在线观看av | 美女久久久久久久 | 国内精品久久久久影院日本资源 | 中文字幕亚洲欧美日韩2019 | www.五月天激情 | 97超碰在线久草超碰在线观看 | 91九色在线视频 | 91视频在线播放视频 | 亚洲天天做| 日韩丝袜 | 欧美日韩在线精品 | 久久免费视频7 | 五月天婷亚洲天综合网鲁鲁鲁 | 一区中文字幕 | 精品久久久成人 | 在线免费日韩 | 精品在线免费观看 | 久久在线免费 | 粉嫩av一区二区三区四区在线观看 | 久久久视频在线 | 一级片黄色片网站 | 91视频 - v11av| 伊人av综合 | 午夜久久成人 | 色综合天天视频在线观看 | 欧美性做爰猛烈叫床潮 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 99精品欧美一区二区 | 欧美成人aa | 玖玖玖影院 | 国产精品网红直播 | 国产精品ⅴa有声小说 | 精品乱码一区二区三四区 | 综合久久精品 | 成人午夜剧场在线观看 | 午夜av色 | 久操视频在线观看 | 波多野结衣在线播放一区 | 成人影视片| 亚洲一级片在线观看 | 中文字幕4 | 在线观看欧美成人 | 欧美日韩高清国产 | 亚洲蜜桃在线 | 精品96久久久久久中文字幕无 | 在线视频手机国产 | 成人av免费播放 | 91丨九色丨国产丨porny精品 | 国产v在线观看 | 国产成人精品久久久 | 免费观看全黄做爰大片国产 | 久久黄色网址 | 色a综合 | av丝袜制服| 午夜的福利 | 国产无套精品久久久久久 | 波多野结衣在线观看一区二区三区 | 久久色在线播放 | 久久久久久久久久福利 | 国产亚洲精品免费 | 天天操天天色天天射 | 99草在线视频 | 黄色亚洲片 | 蜜桃视频在线视频 | 草樱av | 亚洲高清网站 | 国产黄色大全 | 国产精品 中文字幕 亚洲 欧美 | 亚洲乱码精品久久久久 | 亚洲国产播放 | 国产精品一区久久久久 | 久久国产a | 色国产视频 | 日韩在线视频精品 | 久久精品99国产 | 久久综合给合久久狠狠色 | 日产乱码一二三区别免费 | 日本中文字幕久久 | 一区二区三区免费看 | 四虎国产精品成人免费影视 | 黄色小网站在线 | 国产精品二区三区 | 中文字幕人成不卡一区 | 亚洲午夜精 | 91在线亚洲 | 国产成人精品三级 | 天天色天 | 国产区免费 | 久久午夜网 | 国产女人免费看a级丨片 | 色综合久久久久综合99 | 国产麻豆电影在线观看 | 最新不卡av| 国产精品96久久久久久吹潮 | 亚洲视频在线观看免费 | 久久成人国产精品 | 国产在线播放观看 | 国产亚洲精品久久久久久大师 | 中文字幕在线观看免费高清完整版 | 四川妇女搡bbbb搡bbbb搡 | 久久精彩| 夜夜干天天操 | 久久无码精品一区二区三区 | 色偷偷男人的天堂av | 中文字幕乱码一区二区 | 国产精品成人免费一区久久羞羞 | 久久综合久久综合九色 | 成人欧美一区二区三区黑人麻豆 | 天天射网 | 欧美午夜激情网 | 欧美精品少妇xxxxx喷水 | 99国产视频在线 | 国产精品手机视频 | 久久在线免费 | 久久久久久久99 | 成人av免费网站 | 久久国产精品二国产精品中国洋人 | 99r在线精品| 激情图片区 | 欧美日韩视频在线播放 | 日韩精品视频免费 | 国产精品入口久久 | 在线观看日韩免费视频 | 国产97色在线 | 国产日韩高清在线 | 91亚洲影院 | 免费看的黄色录像 | 精品二区久久 | 国产精品久久久久久久久久尿 | 在线影院av | 久草在线视频资源 | 免费久久久久久 | 超碰大片| 正在播放一区二区 | 国产麻豆精品久久一二三 | 中文字幕一区二区三区在线观看 | 国内精品久久久久国产 | 欧美激情综合色综合啪啪五月 | 中文字幕在线成人 | 中文在线中文资源 | 国产视频一区在线播放 | 91中文字幕在线视频 | 欧美一二三专区 | 狠狠色狠狠色综合日日92 | 一级免费av | 在线播放亚洲激情 | 欧美片一区二区三区 | 99久久精品国产毛片 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 黄色一级动作片 | 在线观看久 | 天天搞夜夜骑 | 日本少妇久久久 | 午夜精品久久久久久久久久久久久久 | 欧美成年人在线视频 | 国内视频在线观看 | 国语黄色片 | 中文在线字幕观看电影 | 精品视频免费久久久看 | 九九热久久免费视频 | 国产五月天婷婷 | 亚洲精品视 | 国产高清专区 | 天天色.com| 亚洲高清在线视频 | 精品自拍sae8—视频 | 久久免费看毛片 | 成人欧美一区二区三区黑人麻豆 | 欧美久草在线 | 久久伦理 | 国产精品va在线播放 | 久久久午夜视频 | 欧美在线18 | 日韩精品在线观看视频 | 欧美日韩高清一区二区 国产亚洲免费看 | 99精品久久久久久久 | 欧美日韩在线视频一区二区 | 亚洲一区二区三区精品在线观看 | 在线观看视频福利 | 园产精品久久久久久久7电影 | 欧美视频一区二 | 欧美-第1页-屁屁影院 | 久草在线视频免赞 | 91丨九色丨首页 | 91爱爱网址 | 免费日韩高清 | 中文综合在线 | 开心综合网 | 成 人 黄 色 视频播放1 | 精品一区二区三区香蕉蜜桃 | 国产高清精品在线 | 欧美日韩在线看 | 国产伦理久久精品久久久久_ | 狠狠五月婷婷 | 日韩欧美在线观看一区二区三区 | 黄a在线观看 | 欧美久久九九 | 免费黄色av. | 欧美 日韩 国产 中文字幕 | 国产综合视频在线观看 | 中文字幕在线字幕中文 | 四虎免费在线观看视频 | 亚洲精欧美一区二区精品 | 午夜国产福利在线 | 日韩午夜大片 | 欧美久久久久久久久久久久久 | 亚洲最大在线视频 | 欧美日韩久久久 | 欧美性生活免费 | 亚洲欧洲中文日韩久久av乱码 | 国产免费视频一区二区裸体 | 国产一区影院 | 亚洲 欧美 日韩 综合 | 精品一区二区在线观看 | 欧洲亚洲国产视频 | 午夜精品福利影院 | 久久精品国产成人精品 | 日韩乱色精品一区二区 | 欧美十八 | 麻豆一区二区 | 在线免费观看视频你懂的 | 国产精品激情在线观看 | 成人免费中文字幕 | 少妇bbbb | 久久免费视频这里只有精品 | 久久人人爽人人 | 超碰午夜 | 亚洲国产精品成人综合 | 午夜影院一级 | 亚洲精品视频在线观看网站 | 三级黄免费看 | 国产精品第一视频 | 国产视频二区三区 | 国精产品一二三线999 | 黄色在线看网站 | 国产精品99爱 | 国产裸体视频网站 | 久久久www成人免费精品 | 色欧美88888久久久久久影院 | 欧美午夜寂寞影院 | 久久国产精品一二三区 | 97偷拍在线视频 | 国产欧美精品一区二区三区四区 | 欧美一级电影片 | 欧美成人黄色 | 超碰97中文 | 免费网站在线观看人 | 中文字幕之中文字幕 | 欧美国产大片 | www.五月激情.com | 一区二区三区 亚洲 | 在线观看成人国产 | 一级片视频在线 | 色婷婷狠狠18 | 婷婷国产精品 | 毛片永久免费 | 久久久久亚洲精品 | 日韩av伦理片 | 久久久久 免费视频 | 国内三级在线观看 | 国产二区精品 | 99久久精品免费看国产免费软件 | 精品国产精品久久一区免费式 | 国产在线国产 | 国内精品中文字幕 | 色综合久久88色综合天天6 | 精品久久中文 | 国产精品久久久久久五月尺 | 在线观看的黄色 | 91丨九色丨蝌蚪丰满 | 国产69精品久久99不卡的观看体验 | 超碰九九| 黄色中文字幕 | 免费视频久久 | 成人国产精品免费观看 | 成人久久精品 | 久久久激情视频 | 青草视频在线免费 | av成人动漫 | 久久久久久久久久电影 | 久久国产视屏 | 欧美国产91 | 国产97视频 | 亚洲最大av网 | 亚洲午夜久久久久久久久 | 外国av网 | 午夜精品久久久久久久久久久 | aⅴ精品av导航 | 国产自产在线视频 | 欧美日韩1区 | 亚洲日本欧美在线 | 99热免费在线 | 欧美激情精品久久久 | 欧美激情视频在线免费观看 | 一级片免费观看视频 | 日韩精品一区二区在线观看 | 久草在线在线精品观看 | 日韩一区二区三区在线观看 | 五月天激情视频在线观看 | 探花在线观看 | 美女中文字幕 | 亚洲黄色在线观看 | 97日日碰人人模人人澡分享吧 | 日本成人黄色片 | 97超碰在线免费 | 久久国产精品一二三区 | 97视频久久久 | 日韩精品播放 | 国产精品日韩欧美一区二区 | 五月天六月丁香 | 免费网站黄色 | 欧美 日韩精品 | 日韩精品网址 | 伊人亚洲综合网 | 日本电影黄色 | www.91成人| 亚洲永久字幕 | 伊人五月 | 国产正在播放 | 婷婷综合视频 | 国产99久久久久久免费看 | 中文字幕日本在线观看 | 久久新 | 亚洲专区欧美专区 | 国产日本三级 | 久操中文字幕在线观看 | 久久久毛片 | 黄色高清视频在线观看 | 亚洲成a人片在线www | 在线观看视频免费播放 | 日韩免费电影网站 | 97超碰人人澡 | 国产成人免费在线 | 99久高清在线观看视频99精品热在线观看视频 | 中文字幕免费观看全部电影 | 国产.精品.日韩.另类.中文.在线.播放 | 欧美日韩在线视频一区 | 91看片淫黄大片在线播放 | 亚洲少妇激情 | 欧美亚洲精品一区 | 国产一区二区三区免费观看视频 | a视频在线| 久久综合综合久久综合 | 最新国产精品拍自在线播放 | 国产黄色片久久 | 91高清视频免费 | 国产精品第一页在线 | 日韩婷婷| 五月天婷婷在线观看视频 | 精品网站999www | 免费看一及片 | 天天综合精品 | 国产精品久久久久久av | 久久午夜鲁丝片 | 日韩黄色软件 | 国产三级久久久 | 日韩欧美一区二区不卡 | 国产精品欧美久久久久无广告 | 日韩欧美一区二区在线观看 | 婷婷久操| 日韩精品免费一区二区三区 | 国产三级午夜理伦三级 | 97超级碰碰 | 日韩欧美国产成人 | 亚洲欧美激情精品一区二区 | 99 精品 在线 | 在线观看免费日韩 | 成人香蕉视频 | 久久精品欧美日韩精品 | 国产成人精品av在线 | 欧美一级大片在线观看 | 色综合咪咪久久网 | 中文字幕 91 | 色噜噜噜噜| 91丨九色丨国产在线观看 | 色网站国产精品 | 韩国av免费观看 | 99精品久久久久久久久久综合 | 久久久久国产精品免费网站 | 最近中文字幕免费av | 日韩r级在线 | 国产专区第一页 | 国产视频一区二区在线 | 中文字幕乱码一区二区 | 91专区在线观看 | 色综合久久88色综合天天6 | 免费精品视频在线 | 麻豆免费视频 | 在线观看中文字幕第一页 | 日韩视频一区二区三区在线播放免费观看 | 亚洲色图27p | 精品久久久精品 | 欧美日韩高清一区二区 国产亚洲免费看 | 亚洲另类交 | 久久99九九99精品 | 91在线播放综合 | 亚洲成av人影院 | 日本久久高清视频 | 国产精品对白一区二区三区 | 波多野结衣在线观看一区二区三区 | 日韩欧美一区二区三区在线观看 | 免费 在线 中文 日本 | 精品国产美女在线 | 日本中文乱码卡一卡二新区 | 粉嫩av一区二区三区四区在线观看 | 日韩欧美中文 | 伊人av综合 | 五月天综合网站 | 日韩中文字幕视频在线 | 欧美亚洲久久 | 免费视频色 | 欧洲精品一区二区 | 好看的国产精品视频 | www亚洲视频 | 日韩羞羞 | 欧美激情xxxx性bbbb | 国产一区二区免费 | 91精品国产92久久久久 | 亚洲人成精品久久久久 | 又黄又爽又色无遮挡免费 | 亚洲 欧美 综合 在线 精品 | 精品国产成人在线影院 | 国产精品96久久久久久吹潮 | 亚洲精品动漫久久久久 | 在线成人免费av | 婷婷九月激情 | 中文字幕美女免费在线 | 奇米影视8888 | 中文字幕a∨在线乱码免费看 | 免费日韩一区 | 成人小视频在线观看免费 | 国产精品久久久久一区二区国产 | 亚洲精品国产自产拍在线观看 | 成人网页在线免费观看 | 日本中文字幕网站 | 婷婷六月中文字幕 | 久久天堂精品视频 | 精品国产欧美一区二区三区不卡 | 欧美激情精品久久 | 久久av网 | 4438全国亚洲精品在线观看视频 | 久久国产精品免费 | 999久久a精品合区久久久 | 97精品超碰一区二区三区 | 三级黄在线 | 黄色片视频在线观看 | 国产精品一区久久久久 | 亚洲综合视频在线播放 | 久久久久久久久久网 | 成人免费网站在线观看 | 在线观看视频一区二区三区 | 狠狠躁18三区二区一区ai明星 | 狠狠久久 | 亚洲热视频 | 精品国产乱码久久久久久久 | 日韩欧美大片免费观看 | a成人v在线 | 狠狠色丁香九九婷婷综合五月 | 久久国产亚洲视频 | 日韩av中文字幕在线 | 欧美日本在线视频 | 久久精品免费观看 | 97超碰香蕉 | 精品日韩中文字幕 | 99久久99久久精品国产片果冰 | 中文字幕人成人 | 丝袜少妇在线 | 久久免费a | 99se视频在线观看 | 久久视频这里有精品 | 亚洲精品伦理在线 | 一本一道波多野毛片中文在线 | 日本一区二区三区免费看 | 99久久夜色精品国产亚洲96 | 日韩高清一二区 | 久久免费99精品久久久久久 | 国产香蕉久久精品综合网 | 亚洲一区二区精品在线 | 成人精品在线 | 国产一区国产二区在线观看 | 国产永久免费观看 | 黄色小说视频在线 | 亚洲国产成人精品在线 | 成人av在线一区二区 | 91九色porn在线资源 | 在线免费高清一区二区三区 | 日韩在线视频网 | 久久国产精品久久精品国产演员表 | 国产一区二区三区免费在线观看 | 亚洲免费永久精品国产 | 91在线免费播放视频 | 久久tv| 五月天亚洲综合小说网 | 成人在线播放免费观看 | 国产高清视频在线播放一区 | 手机在线中文字幕 | 久热只有精品 | 亚洲精品国偷自产在线99热 | 日韩视频精品在线 | 国产精品九九久久久久久久 | 一本一本久久a久久精品牛牛影视 | 国产又黄又硬又爽 | av亚洲产国偷v产偷v自拍小说 | 久草视频首页 | 国产亚洲人 | 丁香六月婷 | 五月婷婷丁香激情 | 欧美性极品xxxx娇小 | 日韩无在线 | 欧美日本一区 | 欧美极品裸体 | 在线中文视频 | 国产精品久久久久久超碰 | 国产高清成人在线 | av成人免费网站 | 亚洲一区尤物 | 狠狠操天天干 | 免费在线观看国产精品 | 成人精品久久 | 亚洲在线免费视频 | 日韩免费av在线 | 国精产品999国精产品岳 | 国产日韩精品在线 | 一区二区三区视频网站 | 一区二区三区四区在线 | 蜜臀av一区| a视频在线观看免费 | 国产91综合一区在线观看 | 狠狠色噜噜狠狠 | 中文字幕黄色网址 | 免费在线观看91 | 69国产精品成人在线播放 | 91精品对白一区国产伦 | 成人羞羞免费 | 中文字幕免| 国产精品密入口果冻 | 久久久久国产精品免费免费搜索 | 中文字幕在线高清 | 国产午夜一级毛片 | 麻豆视传媒官网免费观看 | 亚洲精品激情 | 91看片成人| 久久天天躁夜夜躁狠狠85麻豆 | 日韩精品一区二区三区免费视频观看 | 国产日韩中文在线 | 精品国产视频在线观看 | 国产91在线看 | 国内精品视频久久 | 在线观看国产一区二区 | 欧美国产亚洲精品久久久8v | 欧美怡红院 | 人人插人人艹 | 成人av播放 | 亚洲精品在线观看网站 | 久久人人爽爽 | 国产中文在线播放 | 91精品推荐 | 日韩视频中文字幕在线观看 | 18国产精品福利片久久婷 | 亚洲男男gaygay无套同网址 | 久久久黄视频 | 在线观看日韩国产 | 三级黄色a | 不卡的av电影在线观看 | 国产不卡免费av | 色爽网站 | 国产精品麻豆果冻传媒在线播放 | 日韩亚洲在线 | 99精品视频在线观看 | 99久热在线精品视频成人一区 | 精品久久久亚洲 | 国产视频在线观看一区 | 亚洲日本黄色 | 99亚洲国产| 久久精品导航 | 又长又大又黑又粗欧美 | 久久综合九色综合网站 | 91喷水 | 成人作爱视频 | 久久久久久久久久久久av | 少妇性xxx| 色a在线观看| 香蕉色综合 | 久久久久一区二区三区四区 | 天堂网av 在线| 亚洲91精品在线观看 | 久久视屏网 | 中文字幕 成人 | 色狠狠狠| 精品色999| 国产精品小视频网站 | 亚洲好视频 | www.久久99 | 91视频最新网址 | 中文字幕在线观看你懂的 | 日批视频 | 久久男女视频 | 国产精品日韩在线 | 狠狠干 狠狠操 | 天天操天天色综合 | 国产成人中文字幕 | 在线看的av网站 | 中文字幕在线观看一区 | 久久三级毛片 | 在线观看 国产 | 91成人精品一区在线播放 | 一区二区三区在线观看免费 | 欧美色图东方 | 久久精品一二三区白丝高潮 | 免费国产视频 | 免费高清av在线看 | 婷婷看片| 久久久鲁 | 人人看黄色 | 337p西西人体大胆瓣开下部 | 国产999精品久久久久久 | 尤物97国产精品久久精品国产 | 丁香视频在线观看 | 国产麻豆精品免费视频 | 久草在线视频首页 | 天天操比 | 97在线播放| 天天色天天艹 | 亚洲视频axxx | 狠狠婷婷 | 欧美色图视频一区 | 中文av字幕在线观看 | av超碰在线观看 | 毛片网在线 | 91看片在线看片 | 精品麻豆| 免费在线观看成人小视频 | 91精品在线免费观看视频 | a√资源在线 | 一区二区三区 亚洲 |