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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 逆向分析大全

發布時間:2024/7/23 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 逆向分析大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

轉載:Android 逆向分析大全:https://www.jianshu.com/p/a12d04fc748f

?

?

?

1. 概述

?

1.1 分析步驟

?

通用逆向分析步驟

  • 1. 了解該模塊正向編程相關方法
  • 2. 使用apktool解密apk,得到資源、jni模塊等文件
  • 3. 從apk提取出dex文件,使用dex2jar轉換成jar文件,再用java逆向工具得到java源碼 dex->jar->java
  • 4. 根據特征(字符串、常量、包名類名方法名、manifest文件、布局文件等方式)或調試手段定位到關鍵代碼
  • 5. 分析變量含義類型、函數邏輯、模塊流程
  • 6. 對變量、函數、類進行標注、恢復成高級語言 ->c

Android程序的特點相比在于使用混淆方式打包,將包名、類名、函數名改成不易看懂的字母,從而使生成的apk小很多(android studio提供了release編譯方式,使用proguard混淆),因此反編譯apk最多的工作在于重構這些名稱,這一點和pc上一致,對于android native程序(jni)則和pc上基本一致,不同之處在于常見的是arm匯編。

?

安卓上APK調試步驟:

  • 1.Apk(debuggable)或系統(ro.debuggable=1)設置為可調試
  • 2.在虛擬機中啟動服務端(adbd/android_server)
  • 3.在主機端連接客戶端調試器(IDA/jdb/adt),設置斷點

?

安卓上linux程序調試步驟:

  • 1.在虛擬機中啟動服務端(gdb_server/linux_server)
  • 2.在主機端連接客戶端調試器(IDA/gdb_for_windows),設置斷點

對于apk的反編譯,由于資源和xml都進行了編碼,因此反編譯時必然要解析相應的resource.arsc/AndroidManifest.xml等文件,對于做過保護處理的apk通常會在這里做手腳干擾Apktool、dex2jar等反編譯工具因此很有必要掌握編譯、調試這些工具源碼的方法(見“如何編譯、調試apktool和dex2jar”)

?

?

1.2 分析工具

?

  • 集成IDE:APK改之理、JD-GUI、JEB(1.4破解 2.0)、jadx
  • 解壓(apk, jar):WinRar
  • 解析資源:apktool
  • 反編譯引擎(jar, class):dex2jar工具集、jd-core(JD-GUI,JD-Eclipse反編譯核心)、fernflower(Android Studio反編 、procyon
  • 回編譯:aapt、dex2jar工具集
  • 調試器:IDA、jdb、adt等
  • 輔助工具:DDMS 如果是虛擬機可以看到所有進程

?

APK 改之理

  • 整合&提供了全套解壓、反編譯代碼和資源、回編譯、簽名功能,強大的正則搜索,修改smali字節碼等功能
  • 集成ApkTool、Dex2jar、JD-GUI工具
  • 可視化操作,全自動的反編譯、回編譯、簽名Apk
  • 正則表達式搜索資源及源碼

?

JD-GUI

輕量級反編譯,反編譯jar/class等java字節碼文件(能力一般),提供簡單的搜索能力

?

JEB

  • 反編譯apk/jar工具(能力較強)
  • 強大的正向、反向索引,一定程度重命名能力,一定搜索能力
  • 支持注釋、插件
  • 交互式可視化操作,全自動的反編譯
  • 支持重命名

?

Dex2jar 工具集

dex2jar是一個工具包,反編譯dex和jar,還提供了一些其它的功能,每個功能使用一個bat批處理或 sh 腳本來包裝,只需在Windows 系統中調用 bat文件、在Linux 系統中調用 sh 腳本即可。在bat中調用相應的jar主類完成特定功能,例如d2j-dex2jar.bat中的內容是:@"%~dp0d2j_invoke.bat" com.googlecode.dex2jar.tools.Dex2jarCmd %*。常用的有dex2jar jar2dex dex2smali smali2dex

  • d2j-apk-sign用來為apk 文件簽名。命令格式:d2j-apk-sign xxx.apk 。
  • d2j-asm-verify 用來驗證jar 文件。命令格式:d2j-asm-verify -d xxx.jar。
  • d2j-dex2jar 用來將dex 文件轉換成jar 文件。命令格式:d2j-dex2jar xxx.apk
  • d2j-dex-asmifier 用來驗證dex 文件。命令格式:d2j-dex-asmifier xxx.dex。
  • d2j-dex-dump 用來轉存dex 文件的信息。命令格式:d2j-dex-dump xxx.apk out.jar 。
  • d2j-init-deobf 用來生成反混淆jar 文件時的初始化配置文件。
  • d2j-jar2dex 用來將jar 文件轉換成 dex 文件。命令格式:d2j-jar2dex xxx.apk。
  • d2j-jar2jasmin 用來將jar 文件轉換成jasmin 格式的文件。命令格式:d2j-jar2jasmin xxx.jar
  • d2j-jar-access 用來修改jar 文件中的類、方法以及字段的訪問權限。
  • d2j-jar-remap 用來重命名jar 文件中的包、類、方法以及字段的名稱。
  • d2j-jasmin2jar 用來將jasmin 格式的文件轉換成 jar 文件。命令格式:d2j-jasmin2jar dir dex2jar為d2j-dex2jar 的副本。
  • dex-dump為d2j-dex-dump 的副本

?

Apktool反編譯&打包工具

  • 反編譯apk:apktool d file.apk –o path
  • 回編譯apk:apktool b path –o file.apk

?

?

1.3 常見文件格式

?

Apk

Android package,android安裝程序文件,本質上是壓縮包,解壓得到classes.dex、resources.arsc、AndroidManifest.xml、so文件以及資源文件

  • Resources.arsc資源描述文件
  • Classes.dex所有代碼編譯過得darvik字節碼文件,可能會有多個
  • AndroidManifest.xml 編譯過的AndroidManifest.xml文件

使用 aapt 解析 xml

aapt d xmltree 1.apk AndroidManifest.xml N: android=http://schemas.android.com/apk/res/androidE: manifest (line=2)A: android:versionCode(0x0101021b)=(type 0x10)0x1A: android:versionName(0x0101021c)="1.0" (Raw: "1.0")A: package="com.ibotpeaches.issue767" (Raw: "com.ibotpeaches.issue767")A: platformBuildVersionCode=(type 0x10)0x17 (Raw: "23")A: platformBuildVersionName="6.0-2438415" (Raw: "6.0-2438415")E: uses-sdk (line=0)A: android:minSdkVersion(0x0101020c)=(type 0x10)0x16A: android:targetSdkVersion(0x01010270)=(type 0x10)0x17E: application (line=3)A: android:theme(0x01010000)=@0x7f090083A: android:label(0x01010001)=@0x7f060015A: android:icon(0x01010002)=@0x7f030000A: android:debuggable(0x0101000f)=(type 0x12)0xffffffffA: android:allowBackup(0x01010280)=(type 0x12)0xffffffffA: android:supportsRtl(0x010103af)=(type 0x12)0xffffffffE: activity (line=4)A: android:theme(0x01010000)=@0x7f090030A: android:label(0x01010001)=@0x7f060015A: android:name(0x01010003)="com.ibotpeaches.issue767.MainActivity" (Raw : "com.ibotpeaches.issue767.MainActivity")E: intent-filter (line=5)E: action (line=6)A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "andr oid.intent.action.MAIN")E: category (line=7)A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw:"android.intent.category.LAUNCHER")E: meta-data (line=10)A: android:name(0x01010003)="large.int.value" (Raw: "large.int.value")A: android:value(0x01010024)="9999999999999999999999" (Raw: "99999999999 99999999999")

查看xml => aapt d xmltree 1.apk AndroidManifest.xml
查看resource => aapt d resources 1.apk (resource.arsc)

?

Dex

Dalvik Executable,Dalvik可執行文件,從java class文件轉換而來的字節碼,Classes.Dex通過dex2jar轉換成java字節碼(有損),或者dex2smali轉換成darvik匯編(無損)——smali字節碼,其形式如下

?

Jar

Java Archive,java歸檔文件,可以直接解壓得到class文件

?

Odex

dex 轉 odex:/system/bin/dexopt
dexopt-wrapper 1.apk 1.odex

?

Aar

Android 歸檔文件,壓縮包格式,包含

  • /AndroidManifest.xml (強制) 未編譯的

  • /classes.jar (強制)

  • /res/ (強制)

  • /R.txt (強制)

  • /assets/ (可選)

  • /libs/*.jar (可選)

  • /jni/

    <abi>/*.so (可選)</abi>

  • /proguard.txt (可選)

  • /lint.jar (可選)

?

So

Linux 動態鏈接庫文件,包含arm64 arm mips mips64 x86 x86-64幾個平臺

?

工具轉換圖

?

Android 設備上重要目錄

  • /system/app/1.apk 系統應用
  • /data/app/1.apk 用戶應用
  • /data/data/[pkgname] 應用數據(so,database,…)
  • /data/dalvik-cache 存放dex



?

2. Java 層?

?

2.1 常用工具

?

adb

設備通信、調試工具,常用法:

adb devices 列出當前設備 adb –s d24eb3ab [命令] 指定設備執行命令 adb push 源 目標 非root機器可以設置路徑為/data/local/tmp adb pull 源 目標 adb shell 執行終端 adb logcat 查看日志(/system/logcat為服務器) adb jdwp 查看遠程jdwp進程 adb forward tcp:主機端口 tcp:遠程端口 把主機端口消息轉發手機端口(端口對應進程) 用于ida調試 adb forward tcp:主機端口 jdwp:遠程進程ID 把主機端口消息轉發手機jdwp進程 用于jdb調試 adb install [apkpath] 安裝apk adb uninstall [packagename] 卸載apk 注意會徹底清理,刪除/data/app下的備份apk adb remount 將/system重新映射為讀寫,以便進行系統區文件操作 adb root 使adb以root方式啟動,便于push/pull/remount

?

aapt

APK資源管理工具,用于增刪查改APK中的文件、資源等,對于分析編譯后的Resource.arsc, AndroidManifest.xml格式較有價值,通常也可以用winrar對apk/jar進行解壓

打印xml樹 aapt d xmltree 1.apk AndroidManifest.xml 打印資源 aapt d resources 1.apk 添加文件 aapt a 1.apk AndroidManifest.xml 刪除文件 aapt r 1.apk AndroidManifest.xml

?

am & pm

Android 遠程命令,am 執行調試、運行功能,pm 執行安裝、卸載功能

  • 啟動應用:am start -D -n "b.myapp/b.myapp.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
  • 啟動服務:am startservice -n com.android.music/com.android.music.MediaPlaybackService
  • 強制停止包:am force-stop com.example.administrator.myapplication
  • 強制結束包進程:am kill com.example.administrator.myapplication am kill all
  • 發送廣播:adb shell am broadcast -a com.android.test
  • 安裝應用:pm install –r 1.apk
  • 卸載應用:pm uninstall packagename
  • 列出所有安裝包:pm list package
  • 查看是否以指定名為前綴的包存在:pm list package com.qihoo
  • 禁用應用:pm disable packagename (禁用后,圖標消失,對該應用的操作都無效)

?

?

2.2 有源碼調試 APK

?

Android studio

在 android studio 中可以采用運行調試或進程附加方式調試,支持條件斷點、一次斷點、對單線程下斷,有6種斷點:

TypeChTypEnDescription
行斷點Java Line Breakpoints在(java/c)源碼某行下斷
Java類成員變量訪問斷點Java Field Watchpoints類似于內存訪問斷點,在讀和寫java類成員變量時斷下
Java類方法斷點Java Method Breakpoints在進入java層函數或退出函數時斷下
Java異常斷點Java Exception Breakpoints發生java層捕獲或未捕獲異常時斷下
異常斷點Exception Breakpoints拋異常或捕獲異常時斷下
符號斷點Symbolic Breakpoints(c/java)符號斷點

?

Adb wifi

應用市場有很多這種軟件,需要Root權限。解決沒有USB數據線的情況下的調試

C:\Users\Administrator>adb connect 192.168.0.103:5555 connected to 192.168.0.103:5555 此時可以用adt調試

?

?

2.3 無源碼調試apk

?

不需要調試的一般過程 :使用反編譯工具得到源代碼,修改調試標識,修改機器碼,最后回編譯簽名:

反編譯apk:apktool d file.apk –o path 回編譯apk:apktool b path –o file.apk

?

使用 AndroidStudio 和 Apktool 工具調試

  • 第一步,反編譯得到(占行)偽源碼:java -jar apktool.jar d -d input.apk -o out,加上-d選項之后反編譯出的文件后綴為.java,而不是.smali,每個.java文件立馬都偽造成了一個類,語句全都是“a=0;”這一句,smali語句成為注釋,做這些都是為了后面欺騙idea、eclipse、android studio這些ide的
  • 第二步,修改資源或者源碼(smali),修改AndroidManifest.xml調試標識,反編譯以后可以在dex中插入waitfordebugger或者Log.i的smali代碼來進行相應的控制
  • 第三步,回編譯(-d選項) + 簽名? ? ? ??
    ?? ??? ?回編譯:apktool b –d path –o input.apk
    ? ? ? ? 簽名: java –jar signapk.jar testkey.x509.pem testkey.pk8 input.apk output.apk
  • 第四步,新建android studio工程 ,將反編譯得到的smali文件夾中的源文件拷貝到源碼目錄(欺騙),回編譯的apk覆蓋目標apk位置 ,刪除Edit configuration的Before launch,下斷點調試

點評:這種方式只可以用來分析加密很弱的App,前提是apktool可以成功反編譯

?

?

使用 jdb 調試

jdb是一個支持java代碼級調試的工具,它是由java jdk提供的,可以設置斷點、查看堆棧、計算表達式、動態修改類字節碼、調試&跟蹤、修改變量值、線程操作,斷點包括:(源碼)行斷點、符號斷點、成員變量訪問斷點。每個java程序(windows/ios/android)都可以用jdwp協議進行調試,Android Studio/Eclipse的調試也是建立在該協議基礎之上,下面以實例說明:

  • 第一步,開發 demo

    public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.b.com"));intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");startActivity(intent);}});} }
  • 第二步,啟動 jdb 調試

    adb shell am start -D -n "b.myapp/.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

    ?

  • 第三步,開始調試
    ? ? ? ? 查看 ddms 中該進程端口號 8600
    ? ? ? ? 使用 jdb 調試:jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8600
    ? ? ? ? 下斷點:函數斷點stop in android.app.Activity.startActivity(android.content.Intent)

    行斷點 stop at android.app.Activity:123,觸發斷點后顯示堆棧:``` <1> main[1] where [1] android.app.Activity.startActivity (Activity.java:3,490) [2] b.myapp.MainActivity$1.onClick (MainActivity.java:21) [3] android.view.View.performClick (View.java:4,084) [4] android.view.View$PerformClick.run (View.java:16,966) [5] android.os.Handler.handleCallback (Handler.java:615) [6] android.os.Handler.dispatchMessage (Handler.java:92) [7] android.os.Looper.loop (Looper.java:137) [8] android.app.ActivityThread.main (ActivityThread.java:4,745) [9] java.lang.reflect.Method.invokeNative (本機方法) ```

?

查看參數

<1> main[1] print intentintent = "Intent { act=android.intent.action.VIEW dat=http://www.b.com cmp= com.android.browser/.BrowserActivity }"

設置源碼從而進行逐行調試

<1> main[1] use D:\Android\sdk\sources\android-18 //參考設備android版本 <1> main[1] use D:\test\MyApplication\app\src\main\java <1> main[1] list 3,421 * @hide Implement to provide correct calling token. 3,422 */ 3,423 public void startActivityAsUser(Intent intent, UserHandle user) { 3,424 startActivityAsUser(intent, null, user); 3,425 => } 3,426 3,427 /** 3,428 * @hide Implement to provide correct calling token. 3,429 */ 3,430 public void startActivityAsUser(Intent intent, Bundle options, User Handle user) {

行斷點:

> use D:\test\MyApplication\app\src\main\java stop at b.myapp.MainActivity:18 正在延遲斷點b.myapp.MainActivity:18。 將在加載類后設置。 > resume 已恢復所有線程。 > 設置延遲的斷點b.myapp.MainActivity:18 斷點命中: "線程=<1> main", b.myapp.MainActivity.onCreate(), 行=18 bci=12 18 int j = 0;

初始斷點

只要連接到 jdb 就會導致 app 運行起來,此時如果想斷在初始化這部分就沒有辦法了,不過 jdb 提供初始命令腳本

  • 暫停所有線程: echo suspend > jdb.ini
  • 執行調試:jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8601

此時,app 仍然處于等調試器狀態,而蟲子已經變綠,此時可以下斷點,然后 resume 恢復所有線程

附加后會變綠色蟲子

> > stop in b.myapp.MainActivity.onCreate(android.os.Bundle) 正在延遲斷點b.myapp.MainActivity.onCreate(android.os.Bundle)。 將在加載類后設置。 >resume 已恢復所有線程。 斷點命中: "線程=<1> main", b.myapp.MainActivity.onCreate(), 行=13 bci=0<1> main[1] where[1] b.myapp.MainActivity.onCreate (MainActivity.java:13)[2] android.app.Activity.performCreate (Activity.java:5,372)[3] android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1,1 04)[4] android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2,25 8)[5] android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2,350 )[6] android.app.ActivityThread.access$700 (ActivityThread.java:160)[7] android.app.ActivityThread$H.handleMessage (ActivityThread.java:1,317)[8] android.os.Handler.dispatchMessage (Handler.java:99)[9] android.os.Looper.loop (Looper.java:137)[10] android.app.ActivityThread.main (ActivityThread.java:5,454)

調試命令

stop in:斷點step:步入(源碼行)stepi:單入(指令)step up:執行到返回cont:恢復運行next:步過輸出表達式:print/eval

jdb 最大缺點在于難用,所以有人用 python 封裝了一次,工具名 AndBug

?

?

2.4 無源碼調試 dex

  • 使用 ida 分析 apk 或者從 apk 中提取出的 dex
  • 設置調試選項,包括包名和主類名,參考反編譯的 AndroidManifest
  • 啟動調試即可

?

?

3. Linux 層?

?

3.1 常用工具

?

Gdbserver

Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...]gdbserver [OPTIONS] --attach COMM PIDgdbserver [OPTIONS] --multi COMM隱藏用法:gdbserver [OPTIONS] +SOCKETFILE --attach PID 會在本地建立socket文件通信 Options:--debug Enable general debugging output.--remote-debug Enable remote protocol debugging output.--version Display version information and exit.--wrapper WRAPPER -- Run WRAPPER to start new programs.--once Exit after the first connection has closed. 使用方式: 啟動模式遠程調試:gdbserver --debug --remote-debug :23946 /system/test.out [參數] 附加模式遠程:gdbserver –debug –remote-debug –attach :23946 1234Adb forward tcp:23946 tcp:23946 轉發端口 IDA中選擇Remote GDB Debugger附加即可

?

Strace

usage: strace [-CdDffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file][-p pid] ... [-s strsize] [-u username] [-E var=val] ...[command [arg ...]] or: strace -c [-D] [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ...[command [arg ...]] -c --統計每一系統調用的所執行的時間,次數和出錯的次數等. -C -- like -c but also print regular output while processes are running -f --跟蹤由fork調用所產生的子進程. -F --嘗試跟蹤vfork調用.在-f時,vfork不被跟蹤. -i --輸出系統調用的入口指針 -q --禁止輸出關于脫離的消息 -r --打印出相對時間關于,,每一個系統調用 -T --顯示每一調用所耗的時間 -v --輸出所有的系統調用.一些調用關于環境變量,狀態,輸入輸出等調用由于使用頻繁,默認不輸出 -x --以十六進制形式輸出非標準字符串 -a設置返回值的輸出位置.默認 為40. -e expr -指定一個表達式,用來控制如何跟蹤.: option=[!]all or option=[!]val1[,val2]...options: trace, abbrev, verbose, raw, signal, read, or write -o file --將strace的輸出寫入文件filename -O overhead -- set overhead for tracing syscalls to OVERHEAD usecs -p pid --跟蹤指定的進程pid. -D -- run tracer process as a detached grandchild, not as parent -s strsize --指定輸出的字符串的最大長度.默認為32.文件名一直全部輸出 -S sortby -- sort syscall counts by: time, calls, name, nothing (default time) -u username --以username 的UID和GID執行被跟蹤的命令 -E var=val -- put var=val in the environment for command -E var -- remove var from the environment for command使用方式: Strace –f ProcessA 啟動跟蹤 Strace –f –p 234 附加跟蹤-e trace=file -e trace=process -e trace=network

?

?

3.2 有源碼 so 調試

?

Ndk-gdb

該程序是一個shell腳本,執行過程如下:

adb shell am start -D -n com.example.hellojni/.HelloJni 啟動app并等待調試器ps | grep hellojni 得到PID 3569 adb shell run-as com.example.hellojni /data/data/com.example.hellojni/lib/gdbserver +debug-socket --attach (3569)PID將PID與文件映射建立調試鏈接(c層) adb forward tcp:5039 localfilesystem:/data/data/com.example.hellojni/debug-socket將調試鏈接和本地端口建立鏈接(c層) adb forward tcp:65534 jdwp:(3569)PID 將本地端口和進程建立連接(java層) jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=65534 使用jdb調試java層 arm-linux-androideabi-gdb.exe target remote :5039 使用gdb調試c層set breakpoint pending on

(使用前關掉騰訊的AndroidServer.exe,否則連不上!!!),在工程目錄下(有AndroidManifest.xml),命令行運行%NDK_ROOT%\ndk-gdb-py.cmd --start --verbose,輸出下面字符即為成功:

Android NDK installation path: D:/Android/AndroidNDK/android-ndk-r10e ADB version found: Android Debug Bridge version 1.0.32 Using ADB flags: Using auto-detected project path: . Found package name: com.example.hellojni ABIs targetted by application: arm64-v8a armeabi armeabi-v7a armeabi-v7a-hard mips mips64 x86 x86_64 Device API Level: 19 Device CPU ABIs: armeabi-v7a armeabi Compatible device ABI: armeabi-v7a Using gdb setup init: ./libs/armeabi-v7a/gdb.setup Using toolchain prefix: D:/Android/AndroidNDK/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/windows/bin/arm-linux-androideabi Using app out directory: ./obj/local/armeabi-v7a Found debuggable flag: true Found device gdbserver: /data/data/com.example.hellojni/lib/gdbserver Found data directory: '/data/data/com.example.hellojni' Found first launchable activity: .HelloJni Launching activity: com.example.hellojni/.HelloJni ## COMMAND: adb_cmd shell am start -D -n com.example.hellojni/.HelloJni ## COMMAND: adb_cmd shell sleep 2.000000 Found running PID: 9139 ## COMMAND: adb_cmd shell run-as com.example.hellojni /data/data/com.example.hellojni/lib/gdbserver --attach +debug-socket 9139 [BACKGROUND] Launched gdbserver succesfully. Setup network redirection ## COMMAND: adb_cmd forward tcp:5039 localfilesystem:/data/data/com.example.hellojni/debug-socket Attached; pid = 9139 Listening on Unix socket debug-socket ## COMMAND: adb_cmd pull /system/bin/app_process ./obj/local/armeabi-v7a/app_process 79 KB/s (9488 bytes in 0.117s) Pulled app_process from device/emulator. ## COMMAND: adb_cmd pull /system/bin/linker ./obj/local/armeabi-v7a/linker 585 KB/s (63596 bytes in 0.106s) Pulled linker from device/emulator. ## COMMAND: adb_cmd pull /system/lib/libc.so ./obj/local/armeabi-v7a/libc.so 1184 KB/s (310584 bytes in 0.256s) Pulled /system/lib/libc.so from device/emulator. Set up JDB connection, using jdb command: C:\Program Files\Java\jdk1.8.0_66\bin\jdb.exe ## COMMAND: adb_cmd forward tcp:65534 jdwp:9139 --------------------./obj/local/armeabi-v7a/gdb.setup--------------- GNU gdb (GDB) 7.7 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i586-pc-mingw32msvc --target=arm-linux-android". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://source.android.com/source/report-bugs.html>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word". Remote debugging from host 9.11.5.0 warning: Could not load shared library symbols for 112 libraries, e.g. libstdc++.so. Use the "info sharedlibrary" command to see the complete listing. Do you need "set solib-search-path" or "set sysroot"? 0x400daa80 in __futex_syscall3 () from D:\Android\AndroidNDK\android-ndk-r10e\samples\hello-jni\obj\local\armeabi-v7a\libc.so (gdb)

點評:該工具要求環境極為苛刻且不穩定,不建議使用

?

Gdb-Gdbserver

操作步驟:

  • Android studio導入jni工程,
  • 拷貝.so到搜索路徑,pull /system/lib到搜索路徑,pull /system/linker到搜索路徑
  • 啟動gdbserver (具體命令根據版本不同而變)
    gdbserver --attach *:111 1234
  • 轉發端口
    adb forward tcp:111 tcp:111
  • 連接本地調試器
    target remote 127.0.0.1:111
(gdb) set solib-search-path C:/Users/lichao/2/ Reading symbols from C:\Users\lichao\2\linker...(no debugging symbols found)...done. Loaded symbols for C:\Users\lichao\2\linker Reading symbols from C:\Users\lichao\2\libc.so...(no debugging symbols found)...done. Loaded symbols for C:\Users\lichao\2\libc.so Reading symbols from C:\Users\lichao\2\libstdc++.so...(no debugging symbols found)...done. Loaded symbols for C:\Users\lichao\2\libstdc++.so Reading symbols from C:\Users\lichao\2\libm.so...(no debugging symbols found)...done. Loaded symbols for C:\Users\lichao\2\libm.so Reading symbols from C:\Users\lichao\2\liblog.so...(no debugging symbols found)...done. Loaded symbols for C:\Users\lichao\2\liblog.so Reading symbols from C:\Users\lichao\2\libcutils.so...(no debugging symbols found)...done. Loaded symbols for C:\Users\lichao\2\libcutils.so Reading symbols from C:\Users\lichao\2\libgccdemangle.so...(no debugging symbols found)...done. Loaded symbols for C:\Users\lichao\2\libgccdemangle.so Reading symbols from C:\Users\lichao\2\libcorkscrew.so...(no debugging symbols found)...done.(gdb) bt #0 0x400e50e0 in fork () from C:\Users\lichao\2\libc.so #1 0x76886ca0 in Java_com_example_hellojni_HelloJni_stringFromJNI () from C:\Users\lichao\2\libhello-jni.so #2 0x416b8350 in dvmPlatformInvoke () from C:\Users\lichao\2\libdvm.so #3 0x416e8fd2 in dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*) () from C:\Users\lichao\2\libdvm.so #4 0x416ea9ba in dvmResolveNativeMethod(unsigned int const*, JValue*, Method const*, Thread*) () from C:\Users\lichao\2\libdvm.so #5 0x416c1828 in dvmJitToInterpNoChain () from C:\Users\lichao\2\libdvm.so Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) list

?

?

3.3 無源碼調試 So

?

使用 Arm 版 Gdb 在移動端直接調試

  • 獲取arm版gdb
  • 把gdb下載到移動端
    adb push gdb /data/bin
  • 執行gdb
    adb shell
    ./data/bin/gdb
GNU gdb 6.7 Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=arm-none-linux-gnueabi --target=". (gdb)

點評:該方法速度快,但不好查看符號

?

IDA調試

  • 將android_server拷入/data/local/tmp/
    adb push android_server /data/local/tmp/
  • 修改可執行權限,運行
    cd /data/local/tmp/
    chmod 755 android_server
    ./android_server
  • 將模擬器端口轉發至pc端口 (另開啟命令行)
    adb forward tcp:23946 tcp:23946
  • IDA中選擇Remote ARMLinux/Android debugger,端口23946,調試即可,成功以后顯示
    Accepting connection from 127.0.0.1...

?

Gdb-Gdbserver

  • 啟動server
    ./gdbserver –attach :1234 [pid]
  • 轉發端口
    adb forward tcp:1234 tcp:1234
  • 啟動client
    arm-linux-androideabi-gdb.exe
  • 連接server
    target remote :1234
  • 設置單步調試
    set step-mode on
  • 設置反匯編模式
    set disassemble-next on
  • 設置加載so斷點
    catch load 1.so
0xb6cdf480 in __epoll_pwait () from E:\aaa\libc.so => 0xb6cdf480 <__epoll_pwait+28>: 1e ff 2f 91 bxls lr (gdb) bt #0 0xb6cdf480 in __epoll_pwait () from E:\aaa\libc.so #1 0xb6cb70ca in epoll_pwait () from E:\aaa\libc.so #2 0xb6cb70d8 in epoll_wait () from E:\aaa\libc.so #3 0xb6f06bd6 in android::Looper::pollInner(int) () from E:\aaa\libutils.so #4 0xb6f06e52 in android::Looper::pollOnce(int, int*, int*, void**) () from E:\aaa\libutils.so #5 0xb6e4d41c in android::NativeMessageQueue::pollOnce(_JNIEnv*, _jobject*, int) () from E:\aaa\libandroid_runtime.so #6 0x732e056e in ?? ()

?

Gikdbg

GikDbg 是一款移動平臺的匯編級調試器,它基于 OllyDbg ,GDB 以及 LLVM 實現而來。OllyDbg 現已廣泛用于 PC 平臺軟件安全領域,GikDbg 是 OllyDbg 向移動平臺轉移的產物,它可以協助您完成諸如應用調試分析,應用安全評估,應用漏洞挖掘等移動安全領域。What features can GikDbg support? http://gikir.com/product.php

  • ELF / Mach-O executable file static analysis;
  • Android / iOS App dynamic debugging;
  • Android / iOS remote console;
  • ARM assembler;
  • ARM disassembler;
  • Device file uploading and downloading;
  • Built-in GDB and LLDB;
  • Support for memory breakpoint, software breakpoint, conditional breakpoint;
  • Support for multi-threaded debugging;
  • Support for assembly code level file patching.

?

GikDbg for IOS

?

GikDbg for Android

gikdbg.art-Gikir Debugger for Android RunTime, 是Android平臺的32位匯編級調試器。此處的Android RunTime既指DVM RunTime又指ART RunTime,因此不管是運行dalvik虛擬機還是運行本地代碼的art均可以使用gikdbg.art進行程序的二進制調試分析。不同之處在于dalvik虛擬機的運行時只能調試so動態庫,而art運行時不僅能調試so動態庫,還能調試系統鏡像oat,可執行程序dex這樣的文件。另外,gikdbg-Gikir Debugger for iPhone OS,是調試越獄蘋果設備的32位匯編級調試器,同學們莫搞混淆了哈,它需要一些復雜點的服務端和客戶端的配置,而gikdbg.art在正常情況下是不需要手工配置的,所以別去找android server了。對于靜態分析,可以執行/ART Debug/View/ELF Data…,/ART Debug/View/ELF Code…兩個菜單打開本地so,oat,dex文件。

?

調試 so

Step 0.前置說明

Step 0.前置說明 手機端:Android模擬器,Android 4.4.2 ART 運行時;(真機與DVM運行時是一樣的) PC端:ParallelDesktop虛擬機,Windows 8.0,gikdbg.art v1.0.build140601.3; PS:非root環境的設備由于權限的原因會有很多問題,不推薦使用!

Step 1.連接設備

Step 1.連接設備運行模擬器,打開gikdbg.art.exe,執行/ART Debug/Device菜單,我們就可以來到如下界面:

如果模擬器已經運行了,但是設備列表中沒有,則等待一段時間后執行右鍵的Refresh菜單。然后雙擊或者右鍵Login就可以登陸選中的設備了。對于第一次Login該設備,會詢問你是否上傳依賴的文件到/data/local,這一步如果否定了的話將不能使用調試功能。上傳文件這個步驟目前已知的問題是對于非root的設備,往往因為權限的原因上傳不成功,一般情況下/data/local/tmp目錄沒有問題,但是有些設備又沒有/data/local/tmp目錄,因此我們只有設置/data/local為目標路徑,這個問題目前還不知道好的解決辦法。歸納一下就是:非root的機器無法在其/data/local下創建我們依賴的文件夾以及上傳文件,如果我們將其遷移至/data/local/tmp這個目錄下,又有部分設備沒有這個文件夾,就更沒有辦法上傳了。
對于這類上傳失敗的同學,可以想辦法手工將$(GIKDBG.ART)/adb/android/gdb傳至/data/local/gikir_android-xxxx/gdb這個位置,其中xxxx是GUID。
如果還沒有安裝該apk文件的,則可以在ADB Shell中執行$install –r命令選擇gikdebugee.apk進行安裝.

?

Step 2.選擇進程

Step 2.選擇進程 登陸成功后執行,確保模擬器的gikdebugee.apk運行正常, 然后執行/ART Debug/File/Attach就可以得到如下進程列表, 選中我們的gikdebugee進程,雙擊或者執行Attach按鈕

之后我們就會看到如下加載輸出:

等 gdb 加載完畢之后我們就可以進入熟悉的 CPU 主窗口了:

?

Step 3.選擇模塊

Step 3.選擇模塊 我們的目的是調試apk里面的so動態庫,因此執行/ART Debug/View/Module切換到模塊列表, 選中我們要調試的模塊,雙擊它

?

Step 4.擊中斷點

Step 4.擊中斷點 本例中找到要調試的函數getNativeString,我們可以用CTRL+F查找到它, 找到之后F2下斷點,F9運行它,然后在設備中操作按鈕則該方法將被斷點擊中,F8運行3步

?

?

3.4 調試 Android 上 Linux 程序

?

adb push %NDK%\prebuilt\android-arm\gdbserver\gdbserver /system/bin chmod 777 /system/bin/gdbserver adb push test.out /system/bin chmod 777 /system/bin/test.out gdbserver :2345 /system/bin/test.out(若附加調試則提供進程號) adb forward tcp:2345 tcp:2345 gdb > gdb > target remote :2345

?

技巧:如何在 so 入口下斷?

用 ida分析 so,并在 JNI_OnLoad 下斷點,動態附加后,ida 會自動 rebase,使用 gdb 的 catch load 命令捕獲

?

?

4. Java層 / Linux層 聯合調試?

?

4.1 有源碼聯合調試

參照前幾節

?

4.2 無源碼聯合調試

?

操作步驟

adb shell am start -D -n com.example.hellojni/.HelloJni 啟動app并等待調試器ps | grep hellojni 得到PID 3569 adb shell run-as com.example.hellojni /data/data/com.example.hellojni/lib/gdbserver +debug-socket --attach (3569)PID將PID與文件映射建立調試鏈接(c層) adb forward tcp:5039 localfilesystem:/data/data/com.example.hellojni/debug-socket將調試鏈接和本地端口建立鏈接(c層) adb forward tcp:65534 jdwp:(3569)PID 將本地端口和進程建立連接(java層) jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=65534 使用jdb調試java層 arm-linux-androideabi-gdb.exe target remote :5039 使用gdb調試c層set breakpoint pending on

?

最簡單的 gdb 中,斷在加載 so 時刻的方法

  • 1. 以等待模式啟動
    am start -D -n com.example.hellojni/.HelloJni

  • 2.Gdbserve r鏈接該進程(ps | grep hello)
    gdbserver --attach :1234 10863

  • 3.轉發端口
    adb forward tcp:1234 tcp:1234

  • 4.連接gdb
    arm-linux-androideabi-gdb Target remote :1234

    root@ja3gchnduos:/ # am start -D -n com.example.hellojni/.HelloJni Starting: Intent { cmp=com.example.hellojni/.HelloJni } root@ja3gchnduos:/ # ps | grep hello u0_a165 10863 3593 869292 16088 ffffffff 40077a08 S com.example.hellojni root@ja3gchnduos:/ # gdbserver --attach :1234 10863 Attached; pid = 10863 Listening on port 1234
  • 5.設置符號路徑(提前把/system/lib/*.so /system/bin/linker libhello-jni.so拷貝到目錄)
    set solib-search-path c:/1

  • 6.設置加載so斷點
    catch load libhello-jni.so

  • 7.執行continue,使用android studio的attach使程序繼續運行

  • 8.加載so時自動斷下:

    Catchpoint 1 Inferior loaded C:\Users\lichao\sumsing\libhello-jni.so 0x40036b8c in rtld_db_dlactivity () from C:\Users\lichao\sumsing\linker
  • 9.用ida分析出onload要下斷點的偏移,b *addr下斷

?

4.3 Android linux 內核層調試

Android底層為linux層,gdb用于調試linux應用層,而kgdb用于調試linux內核層
kgdb的android版本下載:http://github.com/dankex/kgdb-android

?

?

5. 使用 Hook

?

5.1 常用 Hook / Inject 工具簡介

常用 Hook 框架:

  • Cydia Substrate
    ? ? ? ? 支持 Java 層 hook
    ? ? ? ? 支持 Jni 層 hook
    ? ? ? ? 需要 Root,且機型適配
    ? ? ? ? 支持 dalvik,不支持 art
    ? ? ? ? 閉源
  • Xposed?https://github.com/rovo89/Xposed
    ? ? ? ? 支持 Java 層 hook
    ? ? ? ? 需要 Root,且機型適配
    ? ? ? ? 支持 dalvik/art
    ? ? ? ? 開源
  • Frida https://github.com/frida/frida
    ? ? ? ? 需要 Root
    ? ? ? ? 支持 Java 層 hook
    ? ? ? ? 支持 Jni 層 hook
    ? ? ? ? 支持 dalvik/art
    ? ? ? ? 開源
    ? ? ? ? 任意時刻注入,簡單易用,遠程代碼即時編譯并注入運行
  • Adbi https://github.com/evilsocket/arminject
    ? ? ? ? 需要 Root
    ? ? ? ? 支持 Jni 層 hook
    ? ? ? ? 任意時刻注入,手工
    ? ? ? ? 開源

?

?

6. 實例:360手機衛士卸載后彈窗分析過程

?

6.1 現象

360手機衛士在非root情況下卸載后彈出瀏覽器。于是有2種常見可能,一種是intent跳轉,一種是執行am命令,后者可以在java層和jni層實現,如果是java層考慮進行hook,jni層考慮修改am.jar

?

6.2 文件注入

將/system/bin/am改名,發現無法彈窗,于是確定是通過第二種方式實現,為了確定調用層級,嘗試修改(反編譯成smali->加入logcat輸出打印回溯棧和接收參數->回編譯)/system/framework/am.jar,(可以通過自己再另一個app中實現同樣的功能,通過反編譯得到smali代碼)再次反編譯后內容如下:

public static void main(String[] args) {String v0 = "";int v3 = args.length;int v2;for(v2 = 0; v2 < v3; ++v2) {v0 = String.valueOf(v0) + " " + args[v2];}Log.d("my god", v0);Log.d("my god", Log.getStackTraceString(new Throwable()));}

?

分析日志

在卸載瞬間拿到輸出:

start -n com.android.browser/.BrowserActivity -a android.intent.action.VIEW -d http://shouji.360.cn/web/uninstall/uninstall.html?u=100&id=76bb84de8f53b53f57dd3cedfe966091&v=6.3.1.1048&s=1&model=SE0gTk9URSAxTFRF&sdk=19&ch=200222&wid=9fa298f35aec4232c26048442f36dc59 --user 0 java.lang.Throwable at com.android.commands.am.Am.main(Am.java:30)at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:245)at dalvik.system.NativeStart.main(Native Method)

發現命令行是 am start –n com.android.browser/.BrowserActivity -a android.intent.action.VIEW

?

定位關鍵代碼

通過字符串搜索,定位到java層關鍵代碼,使用android hook框架cydia substrate,掛鉤java.lang.Runtime類的exec函數,定位到調用棧:

content:/data/user/0/com.qihoo360.mobilesafe/files/so_libs/um.0.2 com.qihoo360.mobilesafe --execute am start -n com.android.browser/.BrowserActivity -a android.intent.action.VIEW -d http://shouji.360.cn/web/uninstall/uninstall.html?u=100\&id=7b55c26b779bd111dfed8b02bb00131c\&v=5.5.0.1041\&s=1\&model=TmV4dXMgUw\&sdk=19\&at=KTvooEkhHMzgJ13AXfMkJINnhrmyyNdu\&ch=200222 --user 0 java.lang.Throwable at com.example.emptytest.Main$1$1.invoked(Main.java:68)at com.saurik.substrate.MS$2.invoked(MS.java:68)at java.lang.Runtime.exec(Native Method)at egv.a(360MobileSafe:257)at egv.a(360MobileSafe:66)at com.qihoo360.mobilesafe.ui.index.MobileSafeApplication.p(360MobileSafe:1223)at com.qihoo360.mobilesafe.ui.index.MobileSafeApplication.onCreate(360MobileSafe:799)

?

結論

啟動不久,360啟動 linux 程序?/data/data/com.qihoo360.mobilesafe/com.qihoo360.mobilesafe/files/so_libs/um.0.2,并將彈窗任務以參數形式傳遞給該程序,程序中對 /data/data/com.qihoo360.mobilesafe 文件夾的刪除操作進行掛鉤,以實現卸載后彈窗機制

?

?

7. GDB 調試?

?

7.1 反匯編一段地址

(gdb) disass /r 0x401148b8,0x40114900 Dump of assembler code from 0x401148b8 to 0x401148c8: => 0x401148b8: 0c 70 a0 e1 mov r7, r120x401148bc: 01 0a 70 e3 cmn r0, #4096 ; 0x10000x401148c0: 1e ff 2f 91 bxls lr0x401148c4: 00 00 60 e2 rsb r0, r0, #00x401148c8: 0e 70 00 ea b 0x40130908 End of assembler dump.

7.2 表達式計算

print exprprint ”%d” adprintf 動態插入printf函數dprintf location,format string,arg1,arg2,...

7.3 查看寄存器

info registers

7.4 查看棧參數

info args

7.5 查看局部變量

info locals

7.6 查看內存

x

7.7 修改內存

set *(unsigned int*)0x800000000=0x00000000

7.8 斷點

break [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]
clear [LOCATION]

break *0x4000000 絕對地址 break 12 行號 break func1 函數 clear *0x40000000 clear 12 clear func1

一次斷點

tbreak [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]

條件/線程斷點

break func1 thread1 if i==0

觀察斷點

watch/awatch/ rwatch [-l|-location] EXPRESSION 變化/讀寫/讀斷點 (如果EXPRESSION不是絕對地址,則需要用-l計算表達式) watch *0x40000000==0x90909090 watch –l *$pc watch i (有源碼,變量i的值有變化時停止)

范圍斷點

break-range START-LOCATION, END-LOCATION break-range 1.c:5, 1.c:10 在1.c的第5行和第10行之間下斷 break-range +5, +10 在當前行+5和當前行+10之間下斷

硬件斷點

普通硬斷 hbreak [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]
臨時硬斷 thbreak [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]

攔截當前函數退出

xbreak

捕獲斷點

普通補斷 catch [assert|catch|exception|exec|fork|load|rethrow|signal|syscall|throw|unload|vfork]
臨時捕斷 tcatch [assert|catch|exception|exec|fork|load|rethrow|signal|syscall|throw|unload|vfork]

如何使程序在so加載時刻斷下??(網上不少人用奇葩方式,還是對gdb不了解) catch load 1.so

跟蹤斷點

strace [LOCATION] [IF CONDITION]

7.9 查看調用棧

bt [N] 顯示N層調用棧
bt full 顯示全部調用棧

7.10 流程控制

行為命令
運行時中斷Ctrl+C
結束程序kill
單步步過next
單步步入step
單步步過(指令級)nexti
單步步入(指令級)stepi
繼續運行continue
執行到當前函數指定位置advance
分離進程detach
強制跳轉jump

反向調試

reverse-continue reverse-next reverse-search reverse-stepi reverse-finish reverse-next reverse-step

7.11 顯示當前加載模塊

info shared

7.12 強制加載模塊

可以用于做二進制對比

(gdb) load C:/Users/lichao/2/libadnative.so 0x50000000 Loading section .interp, size 0x13 lma 0x50000134 Loading section .dynsym, size 0x1210 lma 0x50000148 Loading section .dynstr, size 0x2061 lma 0x50001358 Loading section .hash, size 0x8a8 lma 0x500033bc Loading section .rel.dyn, size 0x10a0 lma 0x50003c64 Loading section .rel.plt, size 0x1b0 lma 0x50004d04 Loading section .plt, size 0x29c lma 0x50004eb4 Loading section .text, size 0xe7a0 lma 0x50005150 Loading section .ARM.extab, size 0x8e8 lma 0x500138f0 Loading section .ARM.exidx, size 0xd80 lma 0x500141d8 Loading section .rodata, size 0x11bc lma 0x50014f58 Loading section .data.rel.ro.local, size 0x738 lma 0x50018098 Loading section .fini_array, size 0x8 lma 0x500187d0 Loading section .init_array, size 0x14 lma 0x500187d8 Loading section .data.rel.ro, size 0x508 lma 0x500187f0 Loading section .dynamic, size 0xf8 lma 0x50018cf8 Loading section .got, size 0x210 lma 0x50018df0 Loading section .data, size 0x1c lma 0x50019000 Start address 0x0, load size 94044 Transfer rate: 188 KB/sec, 2541 bytes/write.

7.13 替換當前調試模塊

file c:/1.so

7.14 進程轉儲

gcore

7.15 進程空間

進程空間 inferior,用于調試多個進程,fork函數會自動添加進程空間

操作指令
添加進程空間add-inferior
復制進程空間clone-inferior 1
刪除進程空間remove-inferior 1
切換進程空間inferior 2
分離進程空間detach inferior 2

7.16 由地址獲對應的符號

maintenance translate-address [address]

7.17 查找符號

info functions [regex] 定位地址 info symbol address 定位文件 info variables [regex] 全局靜態符號

7.18 執行外部命令

目標系統:! [command]
主機系統:shell [command]

7.19 顯示線程

info threads

7.20 打印c++對象虛表

info vtbl
抄自此博客


?

?

總結

以上是生活随笔為你收集整理的Android 逆向分析大全的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲黄色片 | 久久久久这里只有精品 | 日韩欧美极品 | 欧美a√大片 | 色偷偷人人澡久久超碰69 | 亚洲欧美国产视频 | 深爱激情五月网 | 久操视频在线免费看 | 玖玖视频 | 成人av免费在线播放 | 中文字幕在线观看视频一区 | 欧美一级片免费观看 | 精品国产免费看 | 成人黄色国产 | 高潮久久久 | 国产精品18久久久 | 欧美日高清视频 | 丁香在线观看完整电影视频 | 国产精品ssss在线亚洲 | 91精品啪在线观看国产线免费 | 九9热这里真品2 | 国产一区网 | 在线观看免费版高清版 | 久久网站最新地址 | 久久一久久 | 久草综合视频 | 日本一区二区不卡高清 | 手机在线看a | 免费看成年人 | 久久草草影视免费网 | 五月天电影免费在线观看一区 | 在线免费视频a | 日韩视频一二三区 | 欧美xxxxx在线视频 | 中文国产字幕 | 天堂av影院 | 欧美日韩亚洲第一 | 亚洲免费永久精品国产 | 免费色视频 | 一级成人免费视频 | 激情电影在线观看 | 麻豆首页 | 九九九在线观看视频 | 成人日韩av | 天天噜天天色 | 亚洲少妇xxxx| 婷婷丁香狠狠爱 | 992tv在线观看网站 | 午夜精品av | 91在线中字 | 午夜狠狠干 | 在线综合色 | 久久精品99国产精品酒店日本 | 97碰在线 | 天天操天天吃 | 国产精品高清在线观看 | 国产精品免费在线观看视频 | 成人av资源| 一级片观看 | av成人免费在线 | 国产一级免费片 | 久久九九影视网 | 日韩手机在线观看 | 91在线文字幕| 99精品国产兔费观看久久99 | 精品电影一区二区 | 中文视频在线 | 成人av网址大全 | 81精品国产乱码久久久久久 | 国产精品高清av | 黄色a一级片 | 日日夜夜天天人人 | 在线国产激情视频 | 区一区二区三区中文字幕 | 亚洲小视频在线 | 日韩精品视| 亚洲精品国产成人 | 久久99国产精品免费网站 | 国产九九精品视频 | 国产精品网红直播 | 特黄特色特刺激视频免费播放 | 久草视频免费在线播放 | 日本三级香港三级人妇99 | 色婷婷成人网 | 最新高清无码专区 | 国产亚洲精品无 | 成人中文字幕在线 | 国产精品成人av久久 | 国产精品视频999 | 亚洲视频免费在线看 | 久艹视频在线免费观看 | 欧美日韩精品综合 | 热re99久久精品国产66热 | 97精品欧美91久久久久久 | 一区二区三区日韩精品 | 欧美成人基地 | 337p日本欧洲亚洲大胆裸体艺术 | 国产99在线免费 | 精品国产一区二区三区四 | 亚洲国产日韩一区 | 黄色动态图xx | 日韩免费电影网站 | 亚洲一级特黄 | 午夜美女wwww | 亚洲国产视频在线 | 日韩欧美视频在线免费观看 | 久艹视频在线免费观看 | 91麻豆精品国产91久久久久久久久 | 国产精品v欧美精品v日韩 | 欧美永久视频 | 国产探花| 免费日韩一区二区三区 | 午夜性生活片 | 99理论片| 成人免费视频视频在线观看 免费 | 国产盗摄精品一区二区 | 青春草免费视频 | 国产免费久久精品 | 国产高清免费在线播放 | 欧美伊人网| 成年人网站免费在线观看 | 狠狠久久婷婷 | 亚洲精品高清视频在线观看 | 99色免费视频 | 黄色在线观看免费网站 | 久久精品中文字幕一区二区三区 | 91精品影视| 日韩高清在线看 | 伊人狠狠操 | 69国产精品成人在线播放 | 91精品久久久久久 | 丁香六月中文字幕 | 国产精品久久久久久久久久不蜜月 | 欧美日韩中文另类 | 亚洲日本va在线观看 | 欧美日韩性生活 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 久久伊人国产精品 | 欧美日韩在线精品一区二区 | 五月天婷亚洲天综合网鲁鲁鲁 | 天天干天天拍天天操 | 国产小视频在线免费观看 | 在线播放精品一区二区三区 | 99久久精品国产欧美主题曲 | 中文国产在线观看 | 国产高清视频免费最新在线 | 韩国精品福利一区二区三区 | 国产美女精彩久久 | 欧美国产精品一区二区 | 探花视频在线观看免费版 | 国产精品久久久久久久午夜 | 久艹视频在线免费观看 | 国产香蕉97碰碰碰视频在线观看 | 国产高清视频在线播放 | 日韩性xxxx | av资源在线看 | 免费看片网址 | 国产精品女主播一区二区三区 | 日韩视频一 | 日本韩国精品在线 | 日本黄色大片免费看 | 国产一区二区成人 | 久久久免费视频播放 | 丁香婷婷久久久综合精品国产 | 五月开心色 | 国产精品一区二区在线观看免费 | 制服丝袜成人在线 | 又黄又刺激的视频 | 午夜10000| 黄色a视频 | 中文资源在线播放 | 在线观看免费一级片 | 久久国产剧场电影 | 欧美一级在线看 | 少妇搡bbbb搡bbb搡69 | 91麻豆网站 | 一级黄色电影网站 | 日韩av一卡二卡三卡 | 日日干网址 | 国产另类av | 六月激情| 在线观看91网站 | 毛片区| 久久黄色成人 | 久久久久久欧美二区电影网 | 一级片免费观看视频 | 国产福利一区二区在线 | 色婷婷啪啪免费在线电影观看 | 丁香综合激情 | 最新高清无码专区 | 国产成人在线一区 | 一区久久久 | 一区二区三区四区五区在线 | 中文字幕电影高清在线观看 | 亚洲高清视频在线 | 亚洲视频1区2区 | 中文字幕av免费在线观看 | 最近免费中文视频 | 93久久精品日日躁夜夜躁欧美 | 中文字幕在线视频一区二区三区 | 久久中文视频 | 久久经典国产视频 | 在线观看免费高清视频大全追剧 | 色综合亚洲精品激情狠狠 | 婷婷伊人网 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 精品一区二三区 | 国产一级二级三级在线观看 | 黄色一级大片在线免费看产 | 五月婷婷在线视频观看 | 五月婷婷色播 | 国产视频亚洲 | 在线a亚洲视频播放在线观看 | av免费网站 | 日本电影久久 | 亚洲精品国产成人 | 欧美日韩国产综合网 | 日日夜夜91| 国内精品国产三级国产aⅴ久 | 欧美国产高清 | 国产成人一区三区 | av在线专区 | 欧美韩国日本在线观看 | 国产一级片观看 | 精品国产一区二区三区不卡 | 激情xxxx | 成人午夜免费福利 | av在线播放快速免费阴 | 亚洲精品国产电影 | 毛片888| 婷婷色在线播放 | 98涩涩国产露脸精品国产网 | 精品欧美小视频在线观看 | 久久久久久久久久免费 | h视频日本| 2021国产在线视频 | 国产精品一区二区在线 | 久久久久久久久久久国产精品 | 亚洲美女精品视频 | 亚洲自拍自偷 | 国产亚洲观看 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 天天草天天插 | 国产精品成久久久久 | 国产视频精品网 | 亚洲一级在线观看 | 最近日本韩国中文字幕 | 国产一区二区精品在线 | 在线黄色免费av | 亚洲国产色一区 | 精品国产_亚洲人成在线 | 久久婷婷色 | 欧美 另类 交 | 日韩av一区二区三区四区 | 91片在线观看 | 国产又粗又长又硬免费视频 | 欧美色道 | www.人人草| 国产黄色免费观看 | 天天看天天干 | 日韩免费成人 | 精品自拍sae8—视频 | 中文字幕制服丝袜av久久 | 国产亚洲综合性久久久影院 | 黄色免费观看视频 | 久久玖 | 2020天天干天天操 | 久久九九免费视频 | 国产第一页福利影院 | 香蕉在线观看视频 | 国产精品一区二区中文字幕 | 2023亚洲精品国偷拍自产在线 | 丝袜制服天堂 | 国产在线播放一区二区三区 | 美女天天操 | 欧美一级黄色网 | 一区二区三区免费 | 国外av在线 | 久艹在线观看视频 | 99热最新在线 | 99久久这里有精品 | 国产男女免费完整视频 | 国产在线观看二区 | 成年人视频免费在线播放 | 国产成人在线播放 | 国产精品乱码久久久久久1区2区 | 免费黄色在线网站 | www色片| 国产精品白丝jk白祙 | 91夫妻自拍| 黄色app网站在线观看 | 黄网站色 | 亚洲欧洲中文日韩久久av乱码 | 伊人首页 | 久久久久久蜜桃一区二区 | 四虎影视成人永久免费观看亚洲欧美 | 亚洲最新视频在线播放 | 激情中文字幕 | 亚洲色图激情文学 | 日本免费久久高清视频 | 丁香在线 | 中文字幕高清在线 | 久久国产成人午夜av影院宅 | 日韩精品专区在线影院重磅 | 天堂av在线免费观看 | 国产免费国产 | 国产做aⅴ在线视频播放 | 在线免费三级 | 怡春院av| 国产精品嫩草影院99网站 | 粉嫩av一区二区三区四区在线观看 | 亚洲午夜精品久久久 | 久久婷婷一区二区三区 | 精品亚洲va在线va天堂资源站 | 中文字幕免费观看视频 | 国产一级视屏 | 精品国产伦一区二区三区观看说明 | 日韩在线观看一区二区三区 | 在线观看免费av网 | 国产在线国偷精品产拍免费yy | 亚洲成人免费 | 超碰在线中文字幕 | 九九热免费在线观看 | 国产精品专区h在线观看 | 波多野结衣一区二区三区中文字幕 | 99热最新地址 | 91精品国产福利在线观看 | 91人人爽久久涩噜噜噜 | 成 人 黄 色 视频 免费观看 | 超级碰碰免费视频 | 久久永久免费视频 | 91成人黄色| 最新国产精品视频 | 日本成人a| 夜夜骑天天操 | 亚洲成人xxx| 国产小视频国产精品 | 日韩电影中文,亚洲精品乱码 | 婷婷丁香花五月天 | 成人黄色国产 | 99久久精品免费 | 精品美女久久久久 | 久久久精品午夜 | 欧美日韩免费网站 | 在线观看成人毛片 | 在线观看网站黄 | 国产午夜精品一区二区三区 | 在线观看视频你懂的 | 免费试看一区 | 在线观看中文av | 最新成人在线 | 色婷婷激情综合 | 国产69精品久久久久99尤 | 亚洲最大成人免费网站 | 99久久精品国产一区二区成人 | 激情五月综合网 | 国产黄色精品在线 | 精品在线观看一区二区三区 | 在线观看你懂的网址 | 在线精品视频免费播放 | 国产精品美女免费看 | 日本中文字幕一二区观 | 中文字幕 在线 一 二 | 一二三精品视频 | 精品99999| 久久久久区 | 亚洲人av免费网站 | 欧美激情精品久久久久久免费印度 | 色播亚洲婷婷 | 精品一区二区影视 | 天堂网一区二区 | 天天久久夜夜 | 婷婷色 亚洲 | 精品视频久久久久久 | 久草视频精品 | 91精品国产成人www | 国内视频在线观看 | 亚洲国产字幕 | 天天躁日日躁狠狠 | 狠狠干在线播放 | 99久久婷婷 | 国产在线观看高清视频 | 欧洲精品二区 | 久久久久国产成人免费精品免费 | 欧美日韩精品在线视频 | 色99之美女主播在线视频 | 免费高清国产 | 国产精品久久久久影视 | 丁香视频五月 | 中文字幕日韩电影 | 黄p在线播放| 日日躁夜夜躁aaaaxxxx | 欧美少妇xxxxxx| 国产成人免费av电影 | 色婷婷激婷婷情综天天 | 韩国av免费在线 | 亚洲一区二区三区四区精品 | 国产精品a成v人在线播放 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 免费瑟瑟网站 | 黄色三级免费 | 美女在线黄 | 亚洲午夜大片 | 四虎成人精品永久免费av | 97超碰超碰久久福利超碰 | 久草免费在线视频 | 国产女人40精品一区毛片视频 | 亚洲自拍偷拍色图 | 久久久在线 | 国产精品麻豆视频 | 一区二区伦理 | 中文字幕第一页在线视频 | 国产精品久久久久婷婷 | 色综合久久99 | 精品视频在线免费观看 | 亚洲国产中文字幕在线视频综合 | 精品国产伦一区二区三区观看方式 | 在线99 | 久久视频在线视频 | 91人人澡 | 丁香在线观看完整电影视频 | 黄色片免费在线 | 一级黄色片在线观看 | 激情伊人五月天 | 久久黄色网页 | 国产中文字幕在线播放 | 六月丁香激情网 | 欧美在线1 | 99re国产视频 | 国产精品成人在线 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 欧美日本国产在线观看 | 在线观看香蕉视频 | 国产一区免费观看 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 国产精品美女久久久久久2018 | 黄色av播放 | 日韩一区正在播放 | 国产成人精品福利 | 欧美日韩三级在线观看 | 人人爱在线视频 | 综合色亚洲 | 日韩高清成人在线 | 日韩国产精品久久 | 欧美色婷 | 特级毛片爽www免费版 | www.日日日.com | 岛国精品一区二区 | 国产精品原创av片国产免费 | 午夜少妇av | 色综合久久中文综合久久牛 | 精品国产综合区久久久久久 | 亚洲国产精品电影 | 婷婷5月色 | 五月天久久激情 | 九九热视频在线免费观看 | 黄色三级免费观看 | 看黄色91 | 国产专区在线播放 | 久久亚洲私人国产精品va | 午夜在线观看一区 | 免费视频你懂得 | 国产在线精品播放 | 亚洲综合视频网 | 亚洲综合在线视频 | 在线观看亚洲免费视频 | 国产福利91精品一区 | 中文日韩在线 | www.黄色在线 | 日韩综合精品 | 人人射| 人人澡av | 国产一区二区三精品久久久无广告 | 免费观看国产视频 | 色久天| 欧美大jb | a级国产乱理论片在线观看 伊人宗合网 | 奇米网8888| 国产 日韩 欧美 中文 在线播放 | 精品999久久久 | 蜜桃视频精品 | 日韩中文字幕视频在线 | 久久久久综合精品福利啪啪 | 国产精品美女免费 | 亚洲精品av中文字幕在线在线 | av丝袜美腿 | 亚洲一区美女视频在线观看免费 | 日韩欧美网站 | 久久久精华网 | 欧美精品亚洲精品日韩精品 | 最新av在线网址 | 日韩视频在线观看视频 | 日韩久久久久 | 久久99久久精品 | 欧美精品免费在线 | 国产精品麻豆一区二区三区 | 日韩中文字幕a | 亚洲欧洲中文日韩久久av乱码 | 97麻豆视频 | 在线精品亚洲 | 福利一区视频 | 日韩网站一区 | 韩日av一区二区 | 99热超碰在线 | 三级av在线 | 亚洲精品视频在线看 | 亚洲国产精品一区二区久久hs | 国产成人精品一区二区三区在线观看 | 999久久久久久 | 韩日电影在线 | av大全在线免费观看 | 偷拍福利视频一区二区三区 | 成人在线你懂得 | 成人免费毛片aaaaaa片 | 91高清不卡 | 精品一区二三区 | 日韩高清精品免费观看 | 韩国在线一区二区 | 国产视频在线播放 | 亚州精品在线视频 | 91日韩在线专区 | 免费视频一区二区 | 亚洲理论影院 | 伊人五月婷| 狠狠色丁香婷婷综合欧美 | 成av人电影 | 午夜免费福利视频 | 久久99视频精品 | 91成人精品国产刺激国语对白 | 久久中文字幕在线视频 | 黄色大全在线观看 | 中文字幕亚洲精品日韩 | 成人四虎| www91在线| 中文字幕在线观看国产 | 亚州日韩中文字幕 | 深夜免费小视频 | 日韩av高清 | 国产精品一区在线播放 | 中文字幕在线专区 | 中文字幕在线观看视频网站 | 精品一区电影 | 国产黄色一级片在线 | av中文在线观看 | 国产在线播放一区 | 国产破处在线视频 | 日韩理论片中文字幕 | 免费人做人爱www的视 | 国产一级视频在线免费观看 | 久久艹艹 | 色婷婷av一区二 | 久久精品国产亚洲aⅴ | 久久免费看a级毛毛片 | 97超碰人人澡| 午夜国产福利在线观看 | 九九久久久久久久久激情 | 四虎国产精品永久在线国在线 | 国产高清视频在线免费观看 | 中文字幕亚洲精品日韩 | 天天干天天综合 | 久久精品99久久久久久 | 久久久99精品免费观看乱色 | 色av婷婷| 免费视频久久久久久久 | 中文字幕视频在线播放 | 国产女人18毛片水真多18精品 | 久草免费新视频 | 精品无人国产偷自产在线 | 亚洲伦理电影在线 | 91成年人视频 | 亚洲一级免费观看 | 日韩av快播电影网 | 日韩三级久久 | 国产精品一区二区免费在线观看 | 一区二区在线电影 | 91在线看视频免费 | 91在线小视频 | 白丝av免费观看 | 欧美日韩高清国产 | 在线观看黄色小视频 | 久久久精选 | 亚洲视频在线视频 | 这里有精品在线视频 | 国产日韩一区在线 | 久久久网 | 国产一区精品在线 | 国产清纯在线 | 亚洲精品91天天久久人人 | 久久久999精品视频 国产美女免费观看 | 18+视频网站链接 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 欧美久久久一区二区三区 | 91视频免费网站 | 国产一区二区久久久久 | 日韩精品中文字幕一区二区 | 尤物九九久久国产精品的分类 | 91麻豆精品国产91久久久久 | 日韩av视屏在线观看 | 国产一区二区精品久久 | 久av在线 | 最新极品jizzhd欧美 | 亚洲作爱视频 | 久久精品99久久 | 亚洲一区二区三区四区在线视频 | 久久亚洲私人国产精品 | 亚洲精品乱码久久久一二三 | 久久免费av电影 | 成人免费在线播放 | 免费日韩 精品中文字幕视频在线 | 亚州av网站| 狠狠的干 | 日本美女xx | 四虎国产精品永久在线国在线 | 欧美日韩高清在线一区 | 免费成人黄色片 | 精品亚洲午夜久久久久91 | 久久免费99精品久久久久久 | 久久狠狠干 | 久久久91精品国产 | 欧美 日韩 久久 | 午夜精品一区二区三区免费 | 黄污视频网站大全 | 国产一级免费在线观看 | 亚洲精品久久视频 | 国内精品久久久久久久久 | 四虎国产精品免费 | 天天插天天操天天干 | 久久久久夜色 | 国产玖玖在线 | www.国产精品| 色五月成人 | 欧美一区二区在线刺激视频 | 国产精品久久一区二区三区, | 日韩在线资源 | 在线成人一区二区 | 黄色一级大片在线免费看产 | 成人免费在线播放视频 | 天天色中文 | 国产精品手机在线 | 久久久久久国产精品久久 | 国产免费美女 | 99国产精品视频免费观看一公开 | 免费观看性生活大片3 | 五月婷婷六月综合 | 国产91成人在在线播放 | 天天曰天天爽 | 91亚洲国产成人 | 97色se | 久久看片网 | 九九热在线观看视频 | 超碰在线91 | 少妇资源站 | 中文字幕美女免费在线 | 99热这里有精品 | 久久99国产精品自在自在app | 国产精品一区二区久久国产 | 成人黄色中文字幕 | 婷婷精品国产一区二区三区日韩 | 就要色综合 | 伊人中文字幕在线 | 91黄视频在线 | 国产在线一区二区 | 一区二区欧美激情 | 亚洲成人av在线电影 | www.久久成人 | 91精品国产91久久久久 | 国产成在线观看免费视频 | 成人黄色电影在线观看 | www.色午夜,com| 国内精品视频免费 | 午夜国产在线观看 | 免费视频18| 国产精品久久久久久久久久久久午夜片 | 中文字幕在线观看一区二区 | 人人干在线 | 丁香视频在线观看 | 国产亚洲精品中文字幕 | 97在线公开视频 | 狠狠色狠狠色综合日日92 | 欧美成人性战久久 | 天天射射天天 | 夜夜嗨av色一区二区不卡 | 国产在线观看av | 97精品久久| av电影中文字幕在线观看 | 激情丁香久久 | 中文字幕日韩一区二区三区不卡 | 一区二区视频电影在线观看 | 日本中出在线观看 | 黄色电影在线免费观看 | 亚洲综合涩 | 久久久久国产成人精品亚洲午夜 | 亚洲精品一区二区久 | 日韩av一区二区三区四区 | 手机av网站| 在线观看你懂的网址 | 国产在线传媒 | 国产 日韩 欧美 中文 在线播放 | 欧美日韩国产精品一区二区三区 | 国产精品12| 操操操干干干 | 久久综合狠狠综合 | 美女视频免费一区二区 | 成人亚洲综合 | 免费一级特黄录像 | 五月婷婷一区二区三区 | 久久久久国产a免费观看rela | 91亚洲精品久久久蜜桃 | 日韩在线观看一区二区 | 日韩av高清在线观看 | 天天操天天爽天天干 | 午夜手机电影 | 国产人在线成免费视频 | 黄色小说在线免费观看 | 成人免费91 | 超碰com | 国产青春久久久国产毛片 | 亚洲欧美日韩精品一区二区 | 高清久久久 | 黄色av网站在线免费观看 | 精品三级av | 91免费视频国产 | 国产一区二区三区午夜 | 久久99亚洲精品 | 成人毛片在线视频 | 97**国产露脸精品国产 | 香蕉在线影院 | 国产正在播放 | 日本精品视频网站 | 国产成人av在线影院 | 日韩一区二区三区免费电影 | 亚洲国产欧美在线看片xxoo | 人人玩人人添人人澡超碰 | 色婷婷av一区 | 午夜三级影院 | 久久国产网| 国产精品99久久久久人中文网介绍 | 一区二区三区四区免费视频 | 国产99久久精品一区二区永久免费 | www.在线看片.com | 最新av网站在线观看 | 久久夜色网 | 在线观看中文字幕亚洲 | 欧美精品久久99 | 日韩av免费观看网站 | 黄色官网在线观看 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 毛片基地黄久久久久久天堂 | 高清av在线免费观看 | 久久综合一本 | 黄色一级在线视频 | 日韩欧美69 | 亚洲影院国产 | 在线免费国产视频 | 久久久久国产精品视频 | 看片网站黄色 | 精品国产成人 | 色网免费观看 | 国产精品成人一区二区三区吃奶 | 高清av免费看 | 欧美夫妻性生活电影 | 欧美日韩高清一区二区 国产亚洲免费看 | 日韩电影在线观看一区二区三区 | 999久久久国产精品 高清av免费观看 | 欧美日比视频 | 天天干天天操天天操 | 久久高清免费 | 亚洲天堂网在线视频 | 久久久免费在线观看 | 国产精品99蜜臀久久不卡二区 | 99色婷婷 | av在线h| 精品国产亚洲一区二区麻豆 | 丁香花在线观看视频在线 | 日韩高清 一区 | 日韩精品在线免费观看 | 男女日麻批 | 久草在线久| 日韩视频一区二区三区在线播放免费观看 | 在线免费成人 | 日韩伦理一区二区三区av在线 | 337p日本欧洲亚洲大胆裸体艺术 | 日日夜夜人人精品 | 中文字幕丝袜制服 | 天天操天天色天天射 | 日日碰夜夜爽 | 久久久久黄 | 天天干天天操人体 | 日韩免费看视频 | 色婷婷综合久久久中文字幕 | 亚洲精品自在在线观看 | 成人毛片一区二区三区 | 青春草视频 | 色婷婷狠狠五月综合天色拍 | 日韩资源在线观看 | 青春草免费视频 | 欧美一级片免费在线观看 | 成人免费电影 | 久久a久久| 成人a级网站 | 国产日韩精品在线 | 一区二区欧美日韩 | 天天视频色 | 天天操天天色天天 | 精品亚洲网 | 国产综合久久 | 精品成人久久 | 日韩欧美精品一区二区 | 久久免费观看少妇a级毛片 久久久久成人免费 | 亚洲午夜电影网 | 综合国产视频 | 五月天婷婷在线播放 | 欧美一级电影免费观看 | 亚洲国内精品视频 | 免费视频区 | 亚洲另类视频在线观看 | 国产999精品久久久影片官网 | 成人毛片在线观看 | 97精品久久人人爽人人爽 | 99久久精品免费看国产免费软件 | 欧美日韩亚洲精品在线 | 日日干激情五月 | 久久亚洲国产精品 | 欧美激情视频一区二区三区 | 麻豆免费在线播放 | 天堂在线免费视频 | 午夜av在线播放 | 亚洲在线视频网站 | 亚洲清纯国产 | 欧美精品国产综合久久 | 成人免费视频免费观看 | 最新黄色av网址 | 国内精品久久久久久久影视麻豆 | 精品国产一区二区三区不卡 | 天天射综合网视频 | 五月婷婷亚洲 | www好男人| 99久久99久久精品免费 | 亚洲电影一区二区 | 国产精品久久久久aaaa九色 | 香蕉网在线观看 | 91大神电影 | 日韩美女久久 | 久久夜夜操 | 五月婷香 | 久久专区 | 热久久电影 | 免费看国产曰批40分钟 | 国产精品原创av片国产免费 | 色天天综合网 | 中文在线亚洲 | 伊人天天操 | 麻豆系列在线观看 | 国产一区二区在线看 | 国产高清视频色在线www | 久热av在线 | 天天射天天干天天爽 | 国产免费观看久久黄 | 欧美在一区 | 在线观看黄色的网站 | 最近中文字幕免费观看 | 国产精品99久久久久久久久久久久 | 亚洲黄网址| 国产成年免费视频 | 91丨九色丨高潮丰满 | 久久久久久久久久久电影 | 婷婷99| 久久精品视频国产 | 毛片永久新网址首页 | 天天射天天干天天 | 中文视频在线 | 成人久久 | 精品视频免费播放 | 六月色丁香 | 五月天综合网站 | 日韩特级黄色片 | 亚洲国产精品第一区二区 | 日日夜夜免费精品视频 | 天天天色 | 国色天香在线 | 久草视频资源 | 日韩精品一区在线观看 | 国产高清在线免费观看 | 国产精品夜夜夜一区二区三区尤 | 国产亚洲精品v | 97超级碰碰碰碰久久久久 | www.天堂av| 一级一级一片免费 | 日韩特级片 | 黄色毛片视频免费观看中文 | 综合亚洲视频 | 日本在线免费看 | av在线在线 | 高潮毛片无遮挡高清免费 | 国产a免费| 久久视频二区 | 黄色高清视频在线观看 | 日韩成人精品一区二区三区 | 这里只有精品视频在线观看 | 麻豆久久久久久久 | 97超碰精品| 波多野结衣视频在线 | 久久一区二区三区超碰国产精品 | 91麻豆精品国产91久久久更新时间 | 91试看 | 日韩欧美精品一区二区三区经典 | 日韩视频一 | 久久国产精品偷 | 亚洲综合精品视频 | 久久国产精品久久w女人spa | 欧美激情精品一区 | 婷婷免费视频 | 天天插天天操天天干 | 日本精品一区二区在线观看 | 成年人在线视频观看 | 在线视频app| 日韩av资源在线观看 | 国内三级在线观看 | 欧美在线a视频 | 在线电影91| av电影在线免费 | 亚洲最新精品 | 久草视频观看 | 国产在线专区 | 99热最新网址 | 国产精品美女久久久久久久 | 国产精品欧美 | 亚洲视频久久久久 | 久久av伊人 | 婷婷色五| 日韩黄色在线电影 | 国产探花视频在线播放 | 91在线观看欧美日韩 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天干天天干天天射 | 国产成人在线观看 | 99这里只有精品99 | 日韩高清www | 狠狠天天 | 99久久精| www.五月天色 | 好看av在线 | 正在播放国产精品 | 天天躁日日 | 日本韩国精品一区二区在线观看 | 青青草国产在线 | av888av.com| 永久免费观看视频 | 91精品婷婷国产综合久久蝌蚪 | 99久久精品国产毛片 | 欧美久久久久久久久久久 | 国产黄色片网站 | www视频在线播放 | 婷婷伊人五月 | 中文高清av | 国产精品久久久久久欧美 | 99视频在线免费播放 | 91黄色小网站 | 国产精品激情偷乱一区二区∴ | 久久这里只有精品首页 | 国产一区二区在线观看免费 | 日韩国产精品一区 | 亚洲国产精品小视频 | 久久不色| 国产精品网在线观看 | 激情在线网址 | 91 在线视频播放 | 国产96av | 麻豆一区在线观看 | 国产高清视频免费在线观看 | 国产精品久久久久久久久婷婷 | 亚洲天堂色婷婷 | 国产中文在线视频 | 国色天香永久免费 | 最新日韩精品 | 色激情五月 | 伊人热| 超碰在线成人 | 久久精品免费播放 | 黄色1级毛片 | 日韩r级电影在线观看 | 久久无码av一区二区三区电影网 | 波多野结衣亚洲一区二区 | 久久蜜臀av | 久久久午夜精品理论片中文字幕 | 欧美精品久久人人躁人人爽 | 国产视频一区二区在线观看 | 久久99免费视频 | 久久成人精品视频 | 天天综合色网 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产精品av一区二区 | 五月天婷婷免费视频 | 久久精品视频在线观看 | 久久婷婷开心 | 亚洲专区欧美 | 久久久999精品视频 国产美女免费观看 | 国产成人三级一区二区在线观看一 |