亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 應用技巧 > 正文

Android apk反編譯基礎(apktoos)圖文教程

2019-11-29 05:22:46
字體:
來源:轉載
供稿:網友

很久有寫過一個廣工圖書館主頁一個類爬蟲的demo(因為沒接口,只能扒取靜態網頁),實現一些圖書館系統的一些功能。但最近發現圖書館系統在html頁面上做了手腳,一頁html頁面中嵌入了幾千行的注釋,并有了自己的App,應該是為了增加扒取的流量成本來防止別人去扒取網頁,不過加注釋這手段就不敢恭維了,內網訪問速度還行,但外網訪問的話體驗很差的。 

 如下圖:一堆注釋,導致一個網頁要2MB 

dfe4342t5h5e6uw23t

 

主頁上的APP,必然是用了圖書館的后臺接口和服務器交互的,從而想試試用反編譯的手段來看看APP使用了什么接口。(另外更簡單可以通過tcpdump來給Android手機抓包分析其接口,再用Wireshark來分析tcp包,不過你想要知道全部接口的話,可能需要一個個接口去調用,會比較麻煩,采用反編譯,可能集中在一個類中找到這些接口)。

 

首先要準備的工具:(了解更多反編譯工具可以去看雪論壇下載或者學習-Link)

APKTool是GOOGLE提供的APK編譯工具,需要JAVA運行環境??梢詫PK進行反編譯,使用它可以將其反編譯成非常接近打包前的原始格式。逆向AndroidManifest.xml、資源文件 resources.arsc以及將dex文件反編譯成可以調試的smali文件。修改后,可以將其編譯回apk文件。APKTool也可以用來漢化Android軟件然后重新打包發布。 
官方:http://code.google.com/p/android-apktool/
 

解壓縮APKTool,并把要反編譯的APK放入目錄中

   

反編譯:

通過CMD進入上面的目錄,執行命令: apktool decode ZhaoBenShu.apk outdir  

稍等片刻完成反編譯,反編譯后的文件會在outdir目錄下。

    

 

    ---outdir目錄結構

    

res :資源文件,跟adnroid工程目錄下的res基本一樣,各種UI圖片  XML布局文件  values xml文件(多了一個public.xml,有各個資源的id號(R.java中的id))
smail:這個是重點文件夾,里面都是smail格式文件,是Dalvik虛擬機執行的操作碼(Dalvik opcodes),這些操作嗎有自己的語法,如果有學過JNI的話, 這些語法還是比較容易看懂和理解的。AndroidManifest.xml:Android工程下的AndroidManifest.xml
apktool.yml:用于重打包。

 

smail語法:(全部語法請link)

smail中的數據類型簽名跟java中的是一樣的,如下。

 

B---byteC---charD---doubleF---floatI---intJ---longS---shortV---voidZ---boolean[XXX---arrayLxxx/yyy---object

 

    smail代碼例子:

        

 初看smail文件,可能會覺得有一些凌亂。不過只要把幾種語法弄懂了,就可以很好地閱讀smail文件。
 smail比較常用語法 ( 非全部)分為: 賦值,取值,函數調用,if語句,返回值等。

賦值取值:


例子:
 iget-object v6, p0, Lcom/zbsh/code/clas/ClassSystem$9;->val$vBarCodes:Ljava/util/ArrayList;

分析:

iget個取值操作,i=instance,是用來instance filed(實例變量),object是類的意思。 v6是本地寄存器,p0在這里是代表this(在非static函數正代表this,在static函數中代表第一個參數)。Lcom/zbsh/code/clas/ClassSystem是表示包路徑為 Lcom/zbsh/code/clas下的ClassSystem類,->相當于C/C++的箭頭操作符,后面是類中的變量或者方法vBarCodes是ClassSystem中的一個變量,Ljava/util/ArrayList是vBarCodes這個變量的類型 (是java中類的簽名)

作用:

把ClassSystem中vBarCodes的值存放在寄存器v6中,vBarCodes的類型必須是對象,且是實例變量非靜態變量。
其中object可以是替換成基本數據類型:iget-boolean   iget-byte  iget-char   iget-short等等。

同樣的

sget- [type]用來獲取static變量。(少了一個p0,因為靜態變量是沒有this的)

aget-[type]用來獲取array類型。

[x]get vx, vy,把寄存器vy中的值賦給vx。

賦值:

同樣都有以下幾種:
iput-[type]
sput-[type]
aput-[type]

也支持寄存器和寄存器之間的賦值,寄存器和變量之間的賦值。

函數調用

 invoke-direct 調用private函數
invoke-super 調用父類函數
invoke-static 調用靜態函數
invoke-virtual 用于調用protected或public函數(相當于C++的虛函數,java的重載函數,只有protect和public能夠重載)
還有一種比較特殊的:invoke-xxxxx/range:參數多于5個的時候,要加/rang


 例子:

invoke-virtual {v4, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

 v4是this,代表 Ljava/lang/String的一個實例,v1是函數的第一個參數,在這里是調用放在V4寄存器中類型為Ljava/lang/String的實例的equal ()方法,并傳入參數v1,返回的結果是Z類型,也就是boolean類型。

如果是invoke-static{v4, v1}, 不同遇在于invoke-virtual {v4, v1}的是v4不是this,而是第一個參數。v1是第二個參數,所調用的方法需要兩個參數。

 

返回值:

獲取返回值:

move-result vx :把上一個方法返回的值,存在寄存器 vx中。

返回返回值:

return-void   沒返回。
return vx       返回寄存器中vx的值  。

 

if語句:

if-eq vx,vy,target:eq:equal  如果vx==xy 跳轉到target目標代碼,否則執行順序執行下一句代碼
if-ne vx,vy,target:nq :not equal  如果vx!=xy 跳轉到target目標代碼,否則執行順序執行下一句代碼       
if-eqz vx,target:eqz : equal zero  如果vx==0 跳轉到target目標代碼,否則執行順序執行下一句代碼     
if-nez vx,target:nez :not equal zero   如果vx!=0 跳轉到target目標代碼,否則執行順序執行下一句代碼    

smail,找接口:
   

以搜索接口為例子:
根據文件命名找到GropZbshFind.smali這個文件,應該就是搜索Activity。

在其中有一段代碼:


復制代碼
代碼如下:

# virtual methods
.method public onCreate(Landroid/os/Bundle;)V
.locals 3
.parameter "savedInstanceState"</font></p><p><font face="Courier New"> .prologue
.line 13
invoke-super {p0, p1}, Lcom/zbsh/code/thrd/GroupActivity;->onCreate(Landroid/os/Bundle;)V</font></p><p><font face="Courier New"> .line 14
const-class v0, Lcom/zbsh/code/ZbshFindMain;</font></p><p><font face="Courier New"> invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;</font></p><p><font face="Courier New"> move-result-object v0</font></p><p><font face="Courier New"> new-instance v1, Landroid/content/Intent;</font></p><p><font face="Courier New"> const-class v2, Lcom/zbsh/code/ZbshFindMain;</font></p><p><font face="Courier New"> invoke-direct {v1, p0, v2}, Landroid/content/Intent;->(Landroid/content/Context;Ljava/lang/Class;)V</font></p><p><font face="Courier New"> invoke-virtual {p0, v0, v1}, Lcom/zbsh/code/GropZbshFind;->startChildActivity(Ljava/lang/String;Landroid/content/Intent;)V</font></p><p><font face="Courier New"> .line 15
return-void
.end method
 

很明顯是通過startActivity來啟動ZbshFindMain這個Activity,

在ZbshFindMain中找到Onclick方法。


復制代碼
代碼如下:

# virtual methods
.method public onClick(Landroid/view/View;)V
.........省略一坨代碼...........
iget-object v0, v5, Lcom/zbsh/code/clas/ClassSystem;->ipAddress:Ljava/lang/String;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> .line 199
.local v0, ipAddress:Ljava/lang/String;
new-instance v5, Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-static {v0}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v6</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> const-string v6, "Find/GetBookList.aspx?a="</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> const-string v6, "gdut"</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> const-string v6, "&b="</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v6</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v5, p0, Lcom/zbsh/code/ZbshFindMain$4;->this$0:Lcom/zbsh/code/ZbshFindMain;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5}, Lcom/zbsh/code/ZbshFindMain;->getApplication()Landroid/app/Application;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> check-cast v5, Lcom/zbsh/code/clas/ApplZbsh;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v5, v5, Lcom/zbsh/code/clas/ApplZbsh;->iSystem:Lcom/zbsh/code/clas/ClassSystem;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v5, v5, Lcom/zbsh/code/clas/ClassSystem;->searchType:Ljava/lang/String;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> const-string v6, "&c="</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v6</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v5, p0, Lcom/zbsh/code/ZbshFindMain$4;->this$0:Lcom/zbsh/code/ZbshFindMain;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5}, Lcom/zbsh/code/ZbshFindMain;->getApplication()Landroid/app/Application;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> check-cast v5, Lcom/zbsh/code/clas/ApplZbsh;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v5, v5, Lcom/zbsh/code/clas/ApplZbsh;->iSystem:Lcom/zbsh/code/clas/ClassSystem;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v5, v5, Lcom/zbsh/code/clas/ClassSystem;->inputKeywords:Ljava/lang/String;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> const-string v6, "&d="</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> sget v6, Lcom/zbsh/code/clas/ClassDataParameter;->count:I</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> const-string v6, "&e="</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> sget v6, Lcom/zbsh/code/clas/ClassDataParameter;->page:I</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v3</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> .line 201
.local v3, urlPath:Ljava/lang/String;
iget-object v5, p0, Lcom/zbsh/code/ZbshFindMain$4;->this$0:Lcom/zbsh/code/ZbshFindMain;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5}, Lcom/zbsh/code/ZbshFindMain;->getApplication()Landroid/app/Application;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> move-result-object v5</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> check-cast v5, Lcom/zbsh/code/clas/ApplZbsh;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v5, v5, Lcom/zbsh/code/clas/ApplZbsh;->iSystem:Lcom/zbsh/code/clas/ClassSystem;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v6, p0, Lcom/zbsh/code/ZbshFindMain$4;->this$0:Lcom/zbsh/code/ZbshFindMain;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> iget-object v6, v6, Lcom/zbsh/code/ZbshFindMain;->mUIHandler:Landroid/os/Handler;</font></pre><pre class="brush: php; highlight: [5, 15]; html-script: true"><font face=""> invoke-virtual {v5, v0, v3, v6}, Lcom/zbsh/code/clas/ClassSystem;->GetFindOnThread(Ljava/lang/String;Ljava/lang/String;Landroid/os/Handler;)V

上面這段代碼,實現的是通過StringBuilder,通過append方法,拼成一個地址出來,再調用ClassSystem;->GetFindOnThread這個方法,傳入參數,進行一個異步圖書搜索的任務。

 

再從ClassDataParameter.smali中找到一些定義host地址常量。


復制代碼
代碼如下:

.line 20
const-string v0, "<a </p><p> sput-object v0, Lcom/zbsh/code/clas/ClassDataParameter;->IPADDRESS_TEL:Ljava/lang/String;</p><p> .line 21
const-string v0, "<a </p><p> sput-object v0, Lcom/zbsh/code/clas/ClassDataParameter;->IPADDRESS_EDU:Ljava/lang/String

   

我們可以拼出圖書搜索的接口是:http://222.200.98.173:7778/Find/GetBookList.aspx?a=&b=1&c=java&d=40&e=100

返回的是Json數據格式化下:


復制代碼
代碼如下:

{
"error": "0",
"findtotal": "1612",
"findcache": "20131124024041.htm",
"find_list": [
{
"CtrlNo": "70658",
"Isbn": "7-301-03477-6 ",
"Title": "Java教程(Internet面向對象程序設計)",
"Author": "Mary Campione",
"Edition": " ",
"Publisher": "北大版",
"PubDate": "97.12"
},
{
"CtrlNo": "70657",
"Isbn": "7-301-03476-8 ",
"Title": "Java類手冊",
"Author": "Patrick Chan",
"Edition": " ",
"Publisher": "北大版",
"PubDate": "97.12"
},
{
"CtrlNo": "605337",
"Isbn": "978-7-115-30271-7 ",
"Title": "Java 7基礎教程= Java 7 for absolute beginners",
"Author": "(美) Jay Bryant著;李鵬, 韓智譯",
"Edition": " ",
"Publisher": "人民郵電出版社",
"PubDate": "2013.01"
},
{
"CtrlNo": "604835",
"Isbn": "978-7-302-30346-6 ",
"Title": "Java改錯學習法 [專著]",
"Author": "朱福喜編著",
"Edition": " ",
"Publisher": "清華大學出版社",
"PubDate": "2013"
}
]
}
    

其次:
        

還可以通過反編譯更強大的用處是用來修改smali代碼,再重打包apk,來破解一些收費軟件,去除廣告之類,或者了解一些優秀軟件的實現邏輯。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品久久久| 国产精品欧美亚洲777777| 欧美性一区二区三区| 欧美片一区二区三区| 少妇高潮 亚洲精品| 成人欧美一区二区三区在线湿哒哒| 91高清免费在线观看| 97视频在线观看免费| 国产精自产拍久久久久久蜜| 九九九久久久久久| 国产在线一区二区三区| 91黑丝在线观看| 欧美成人自拍视频| 成人美女免费网站视频| 亚洲欧美日韩一区在线| 国产日韩在线视频| 欧美一区亚洲一区| 在线色欧美三级视频| 国产精品久久久久久久美男| 国产精品美女网站| 欧美又大粗又爽又黄大片视频| 欧美成人激情图片网| 欧美大尺度电影在线观看| 亚洲乱亚洲乱妇无码| 久久精品免费播放| 欧美精品videosex极品1| 在线亚洲男人天堂| 欧美成人剧情片在线观看| 日韩h在线观看| 51ⅴ精品国产91久久久久久| 亚洲第一页中文字幕| 黑人狂躁日本妞一区二区三区| 日本精品久久电影| 九九综合九九综合| 亚洲国产古装精品网站| 亚洲人成网站999久久久综合| 国产精品亚洲美女av网站| 色多多国产成人永久免费网站| 4388成人网| 国产在线观看91精品一区| 国产精品久久二区| 欧美黄色片视频| 久久九九精品99国产精品| 国产91成人在在线播放| 欧美成年人在线观看| 亚洲午夜女主播在线直播| 国语自产精品视频在免费| 欧美专区在线视频| 国产成人在线亚洲欧美| 亚洲精品一区二区三区不| 国产精品久久久久久久久男| 欧美亚洲视频一区二区| 亚洲一区二区久久久久久久| 国产欧美一区二区| 91精品视频在线播放| 91精品视频在线播放| 九九热这里只有在线精品视| 欧美色视频日本版| 久久国产精品久久国产精品| 亚洲精品国精品久久99热一| 成人高清视频观看www| 九九热这里只有精品免费看| 欧美做爰性生交视频| 欧美又大又硬又粗bbbbb| 插插插亚洲综合网| 国产97在线亚洲| 欧美电影免费在线观看| 日韩激情av在线播放| 亚洲欧美激情精品一区二区| 欧美在线免费看| 亚洲午夜性刺激影院| 黑人精品xxx一区一二区| 91精品在线播放| 精品国产一区二区三区久久久| 国产午夜精品免费一区二区三区| 欧美乱人伦中文字幕在线| 日韩美女视频在线观看| 91精品国产亚洲| 国产精品xxx视频| 日韩欧美中文第一页| 最近日韩中文字幕中文| 久久精品夜夜夜夜夜久久| 久久久久国产一区二区三区| 91久久久精品| 久久久久久久久久久免费精品| 欧美亚洲一区在线| 日韩精品在线观看视频| 日韩精品中文字幕在线播放| 这里精品视频免费| 久久97精品久久久久久久不卡| 成人黄色免费看| 国产精品电影久久久久电影网| 亚洲男女性事视频| 国产精品成久久久久三级| 国产精品jizz在线观看麻豆| 高跟丝袜欧美一区| 亚洲天堂网在线观看| 国产性色av一区二区| 精品视频—区二区三区免费| 日韩电影中文字幕av| 青青在线视频一区二区三区| 欧美大尺度在线观看| 亚洲人成自拍网站| 91国在线精品国内播放| 久青草国产97香蕉在线视频| 91av在线视频观看| 亚洲a成v人在线观看| 国产欧美日韩丝袜精品一区| 亚洲精品动漫久久久久| 国产精品爽爽爽爽爽爽在线观看| 亚洲精品永久免费精品| 日韩av电影免费观看高清| 国产精品亚洲美女av网站| 精品亚洲一区二区三区在线观看| 日本午夜精品理论片a级appf发布| 欧美二区乱c黑人| 久久久99免费视频| 亚洲国产精品va| 国产精品免费久久久久影院| 亚洲午夜激情免费视频| 日韩男女性生活视频| 亚洲国产精品99久久| 国产精品va在线播放我和闺蜜| 一区二区三区国产在线观看| 国产精品男人的天堂| 亚洲第一区第一页| 日韩欧美精品网站| 久久久亚洲国产天美传媒修理工| 亚洲人午夜色婷婷| 91精品国产91久久久久久久久| 欧美黄色成人网| 亚洲人成自拍网站| 亚洲男人第一av网站| 国产亚洲美女精品久久久| 高潮白浆女日韩av免费看| 国产精品欧美一区二区三区奶水| 亚洲国语精品自产拍在线观看| 欧美性视频在线| 亚洲美女性视频| 欧美肥老太性生活视频| 亚洲精品综合久久中文字幕| 日韩精品一区二区三区第95| 九九热这里只有在线精品视| 欧美一级视频免费在线观看| 亚洲xxx视频| 欧美精品电影在线| 最近2019中文字幕在线高清| 国产中文字幕亚洲| 国产精品久久精品| 国产欧美精品在线| 国内精久久久久久久久久人| 亚洲精品国产综合区久久久久久久| 久久久久久久久久亚洲| 2019中文在线观看| 九九热这里只有在线精品视| 日韩av影视综合网| 国产成人啪精品视频免费网| 国内精品小视频在线观看| 在线午夜精品自拍| 欧美日韩午夜视频在线观看| 国产原创欧美精品| 亚洲天堂av女优| 欧美亚洲成人免费| 在线不卡国产精品|