欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
云中漫步 ? Android應用程序獲得root權限

Android應用程序獲得root權限

    我在博文《Android程序的安全系統》中提到兩種讓root權限的辦法。最近在網(wǎng)上發(fā)現很多朋友轉載那篇文章,但是對那篇文章中提到的第一種方法怎樣實(shí)現,不是很明白。本文將會(huì )以一個(gè)例子實(shí)現來(lái)演示怎樣讓一個(gè)Android應用程序獲得root權限。

問(wèn)題

    我遇到的問(wèn)題是我想在Java應用程序中動(dòng)態(tài)mount一個(gè)NFS的系統,但是執行mount命令必須要要root權限才可以。一般情況下,在A(yíng)ndroid的Java層是不能獲得root權限的。

思路

   我在博文《Android程序的安全系統》中提到兩種思路:

1、實(shí)現一個(gè)init實(shí)現一個(gè)Service,來(lái)幫助Android應用程序執行root權限的命令。
2、實(shí)現一個(gè)虛擬設備,這個(gè)設備幫助Android應用程序執行root權限的命令。

   本文將會(huì )選擇第一種來(lái)解決Android應用程序mount NFS文件系統的問(wèn)題。

Init.rc Service

   在A(yíng)ndroid系統init.rc中定義很多Service,具體定義格式可以參考《Android Platform Developer’s Guide》中的“Android Init Language”。Init.rc中定義的Service將會(huì )被Init進(jìn)程創(chuàng )建,這樣將可以獲得root權限。

   現在問(wèn)題是Android應用程序怎樣啟動(dòng)讓init進(jìn)程知道我們想運行那個(gè)進(jìn)程呢?答案是設置系統屬性“ctl.start”,把“ctl.start”設置為你要運行的Service,假設為“xxx”,Android系統將會(huì )幫你運行“ctl.start”系統屬性中指定的Service。那么運行結果init進(jìn)程將會(huì )將會(huì )寫(xiě)入命名為“init.svc.+Service名稱(chēng)”的屬性中,也就是“init.svc.xxx”屬性,應用程序可以參考查閱這個(gè)值來(lái)確定Service執行的情況。想更深入了解Android property系統可以參考博文《(翻譯)Android屬性系統》。

Android property權限

    難道Android屬性“ctl.start”是所有進(jìn)程都可以設置的嗎?那世界不就亂套了,誰(shuí)都可以可以執行init.rc中Service了,查看property_service.c中的源碼,設置Android系統屬性的函數為handle_property_set_fd:

   1: void handle_property_set_fd(int fd)

   2: {

   3:     ......

   4:     switch(msg.cmd) {

   5:     case PROP_MSG_SETPROP:

   6:         msg.name[PROP_NAME_MAX-1] = 0;

   7:         msg.value[PROP_VALUE_MAX-1] = 0;

   8:  

   9:         if(memcmp(msg.name,"ctl.",4) == 0) {

  10:             if (check_control_perms(msg.value, cr.uid, cr.gid)) {

  11:                 handle_control_message((char*) msg.name + 4, (char*) msg.value);

  12:             } else {

  13:                 ERROR("sys_prop: Unable to %s service ctl [%s] uid: %d pid:%d\n",

  14:                         msg.name + 4, msg.value, cr.uid, cr.pid);

  15:             }

  16:         }

  17:         ......

  18:     }

  19: }

    從源碼中我們發(fā)現如果設置“ctl.”開(kāi)頭的Android系統property,將會(huì )調用check_control_perms函數來(lái)檢查調用者的權限,其定義如下:

   1: static int check_control_perms(const char *name, int uid, int gid) {

   2:     int i;

   3:     if (uid == AID_SYSTEM || uid == AID_ROOT)

   4:         return 1;

   5:  

   6:     /* Search the ACL */

   7:     for (i = 0; control_perms[i].service; i++) {

   8:         if (strcmp(control_perms[i].service, name) == 0) {

   9:             if ((uid && control_perms[i].uid == uid) ||

  10:                 (gid && control_perms[i].gid == gid)) {

  11:                 return 1;

  12:             }

  13:         }

  14:     }

  15:     return 0;

  16: }

    我們發(fā)現root權限和system權限的應用程序將會(huì )授權修改“ctl.”開(kāi)頭的Android系統屬性。否則將會(huì )檢查control_perms全局變量中的定義權限和Service。

    如果想更深入的了解Android Init進(jìn)程和Android Property的權限控制,請參考《Android Permission》。

實(shí)例

    通過(guò)上面的介紹我們基本已經(jīng)有思路了,下面以上面提出的mount nfs文件系統為例說(shuō)明:

1、首先定義一個(gè)執行mount的腳本,我把它位于/system/etc/mount_nfs.sh,定義如下:

   1: #!/system/bin/sh

   2:  

   3: /system/bin/busybox mount -o rw,nolock -t nfs 192.168.1.6:/nfs_srv /data/mnt

不要忘了把它加上可執行權限。

2、在init.rc中加入一個(gè)Service定義,定義如下:

   1: service mount_nfs /system/etc/mount_nfs.sh

   2:     oneshot

   3:     disabled

3、讓自己的應用程序獲得system權限,博文《Android程序的安全系統》中提到了怎樣獲得system權限,請參考,這里就不贅述了。

4、在自己應用程序中設置System系統屬性“ctl.start”為“mount_nfs”,這樣Android系統將會(huì )幫我們運行mount_nfs系統屬性了。這里需要強調的是不能夠調用System.getProperty,這個(gè)函數只是修改JVM中的系統屬性。而不能修改Android的系統屬性??梢哉{用android.os.SystemProperties(Android 2.1 Eclair系統可以調用這個(gè)API),如果你的Android版本不能調用這個(gè)類(lèi),只能通過(guò)JNI,調用C/C++層的API property_get和property_set函數了。如果想詳細了解請參考(翻譯)Android屬性系統。代碼如下:

   1: SystemProperties.set("ctl.start", "mount_nfs");

5、最后在自己應用程序中,讀取“init.svc.mount_nfs”Android系統Property,檢查執行結果。代碼如下:

   1: while(true)

   2: {

   3:     mount_rt = SystemProperties.get("init.svc.mount_nfs", "");

   4:     if(mount_rt != null && mount_rt.equals("stopped"))

   5:     {

   6:         return true;

   7:     }

   8:     

   9:     try

  10:     {

  11:         Thread.sleep(1000);

  12:     }catch(Exception ex){

  13:         Log.e(TAG, "Exception: " + ex.getMessage());

  14:     }

  15: }

    init進(jìn)程維護一個(gè)service的隊列,所以我們需要輪訓來(lái)查詢(xún)service的執行結果。

    通過(guò)上面的這些步驟,Android應用程序就能夠調用init.rc中定義的Service了。這樣你的Android應用程序也就獲得了root權限。

總結

   通過(guò)上文可以看出,在A(yíng)ndroid獲得root權限還是需要一些前提的,比如:

1、必須是Android系統開(kāi)發(fā)人員,否則你無(wú)法修改init.rc等文件。 2、你的應用程序必須要獲得system權限。

    這樣可以防止root權限被應用程序無(wú)限制的使用,最終危及Android系統安全。

    希望本文對你能有所幫助,如果有錯誤之處敬請指正。

你可以通過(guò)RSS 2.0 來(lái)跟蹤本文的所有評論。 你可以對本文發(fā)表評論,或者對本文進(jìn)行評分,或者從你的網(wǎng)站 引用 本文。

相關(guān)文章

COMMENTS

52 條評論

  1. bevis

    2011-01-20 14:51:20

    謝謝simon,每次定期的來(lái)你這里看看,總會(huì )學(xué)到很多知識。前幾天就剛好遇到你說(shuō)的這個(gè)問(wèn)題,今天來(lái)這里看了一下,問(wèn)題看來(lái)可以解決了,呵呵,謝謝!

    [回復]

    Simon_fu 回復:

    歡迎你多來(lái)關(guān)注Simon,也歡迎你對Simon的文章多提寶貴意見(jiàn)!大家共同進(jìn)步!

    [回復]

  2. flye03

    2011-01-21 16:12:07

    后來(lái)我更改service 為
    service mtest /system/bin/logwrapper /system/etc/a.sh
    后程序就能正確運行了,不知道是什么原因??傮w上是通過(guò)了,感謝simon的分享。

    [回復]

  3. tang

    2011-02-24 13:44:13

    Simon,你真棒

    [回復]

    Simon_fu 回復:

    歡迎大家多指正!
    共同進(jìn)步~!

    [回復]

  4. gqdy365

    2011-02-24 18:11:04

    我有個(gè)問(wèn)題想請教一下樓主,我在做fm模塊時(shí)遇到了一個(gè)權限問(wèn)題,驅動(dòng)層生成的文件節點(diǎn)在dev目錄下面,上層打開(kāi)它時(shí)說(shuō)沒(méi)有權限,我通過(guò)串口修改權限后是可以打開(kāi)的,我網(wǎng)上查了一下,有人說(shuō)是在init.rc里面做初始化修改,可以指點(diǎn)一下嗎?

    [回復]

    Simon_fu 回復:

    確實(shí)可以在init.rc中做,init.rc提供了chown和chmod命令,你可以參考system/core/init/readme.txt文件,里面對init.rc的命令進(jìn)行了詳細的描述,網(wǎng)上也有人已經(jīng)翻譯成了中文。

    [回復]

    gqdy365 回復:

    謝謝你,支持你的博客!

    [回復]

  5. billyc

    2011-03-10 03:06:19

    Thank you for this great article. The only one article talk about get app root access in an unrooted Android device.

    Great Job! and thank you again.

    [回復]

  6. 匿名

    2011-03-14 11:08:10

    總結
    通過(guò)上文可以看出,在A(yíng)ndroid獲得root權限還是需要一些前提的,比如:

    1、必須是Android系統開(kāi)發(fā)人員,否則你無(wú)法修改init.rc等文件。 2、你的應用程序必須要獲得system權限。

    這樣可以防止root權限被應用程序無(wú)限制的使用,最終危及Android系統安全。

    不等于沒(méi)說(shuō)么,如何是Android系統開(kāi)發(fā)人員的話(huà),難道他就沒(méi)有root權限么? 沒(méi)有Root權限,他還叫系統開(kāi)發(fā)人員么?

    最核心的問(wèn)題是,大家都想知道,一般的應用程序如何能夠請求到root權限,我目前system權限已經(jīng)有了,就是沒(méi)有root權限,因為我不是系統開(kāi)發(fā)人員。

    [回復]

    Simon_fu 回復:

    你不能修改init.rc呢?
    如果能修改就可以了~!
    Android系統設計目標就是不把root暴露給應用程序的,需要root權限的操作都已經(jīng)封裝成Service了,當然我的實(shí)現也是這樣的。
    如果你已經(jīng)獲得了system權限,那么你可以調用系統中定義的各種service,由各種service來(lái)執行需要root權限的操作。如果你要的操作沒(méi)有對應的service,那么這就是你的系統提供商不想暴露給你。你唯一能做的就是破解它,來(lái)獲得root權限了。
    Android系統開(kāi)發(fā)人員有root權限,但是他們要把需要root權限的操作暴露給上層的應用程序也是需要考慮的一個(gè)方面。也是Android系統安全的一個(gè)考慮的方面。

    [回復]

  7. 匿名

    2011-03-20 12:36:49

    simon您好!
    您提到“實(shí)現一個(gè)虛擬設備,這個(gè)設備幫助Android應用程序執行root權限的命令”

    我現在已經(jīng)寫(xiě)了一個(gè)相應驅動(dòng),但不知道android app如何跟底層的linux驅動(dòng)通信,一直找不到頭緒,能指導下我嗎?
    萬(wàn)分感謝

    [回復]

    Simon_fu 回復:

    實(shí)現一個(gè)字符設備驅動(dòng),然后app打開(kāi)這個(gè)設備驅動(dòng)文件,然后向里面寫(xiě)入需要執行的命令,由驅動(dòng)程序代理執行相應的命令。

    [回復]

    匿名 回復:

    謝謝您!
    祝博主天天開(kāi)心!

    [回復]

  8. 匿名

    2011-04-07 17:09:36

    simon您好!
    看了您的博客,收益很大,想問(wèn)問(wèn)您兩個(gè)問(wèn)題
    1,您說(shuō)的使用虛擬字符驅動(dòng)的方法,在方法里怎樣調用eth0讓它開(kāi)啟,設置ip等呀,可以提供些函數嘛?
    2,使用服務(wù)的方法,怎樣把參數傳進(jìn)去呀?運用一個(gè)腳本是ok的。
    希望指導下,萬(wàn)分感謝

    [回復]

    Simon_fu 回復:

    首先,實(shí)現字符設備的方法,我是這樣做的,就和打開(kāi)普通文件一樣打開(kāi)虛擬字符設備,然后把需要執行的命令一次性寫(xiě)入該設備文件,設備驅動(dòng)就開(kāi)始代理執行這些命令;你可以向做驅動(dòng)的同事請教這個(gè)問(wèn)題。
    其次:服務(wù)的方法,腳本應該也是可以處理參數的,當然你也可以通過(guò)C/C++編寫(xiě)一個(gè)程序來(lái)完成服務(wù)也是一樣的。你可以查閱一下腳本的實(shí)現,另外init服務(wù)也是可以加參數的,請參考Android init readme.

    [回復]

    匿名 回復:

    很謝謝您的及時(shí)回復
    驅動(dòng)也是我自己寫(xiě)的,現在問(wèn)題就在于設備怎樣去執行那些命令,驅動(dòng)中沒(méi)有system函數的調用,ifc_up也用不了,如何把ifconfig這個(gè)文件加入的話(huà)好像就麻煩了點(diǎn),您說(shuō)的“設備驅動(dòng)就開(kāi)始代理執行這些命令”是怎樣代理的,能指點(diǎn)下嘛,非常感謝

    [回復]

    Simon_fu 回復:

    請參考一下這個(gè)帖子:
    http://www.unixresources.net/linux/clf/linuxK/archive/00/00/57/83/578302.html
    另外,虛擬設備方案不是Android平臺下面常規方案,主要涉及到安全性;只有萬(wàn)不得已的時(shí)候再用。優(yōu)先選用init服務(wù)的方案會(huì )比較好。

    [回復]

    匿名 回復:

    謝謝您如此熱心。
    現在就是在考慮init服務(wù)寫(xiě)的那個(gè)socket如何能從用戶(hù)手中獲得參數,而不是在init中配置參數。
    非常感謝您的回答,祝您工作順利,身體健康

    [回復]

  9. byfrancis

    2011-04-13 10:23:08

    Simon您好,看了你的博文感覺(jué)受益匪淺,按照我的理解,文中的方法好像沒(méi)有不能讓用戶(hù)“一鍵獲取root的權限”,或者是讓?xiě)贸绦蜃詣?dòng)獲取root權限。我知道網(wǎng)上有個(gè)應用程序Z4root,可以讓用戶(hù)一鍵獲取root權限,但我不知道是怎么實(shí)現的。如果是我對您的方法沒(méi)有理解,或者是您有一鍵獲取root權限的方法,能指點(diǎn)一下嗎?不勝感激!

    [回復]

    Simon_fu 回復:

    這個(gè)就是傳說(shuō)中root破解,我沒(méi)有研究過(guò)這種破解方式,沒(méi)有發(fā)言權。不好意思!

    [回復]

    byfrancis 回復:

    非常感謝,期待您后續的android博文

    [回復]

  10. chaos

    2011-04-15 08:03:01

    simon牛,問(wèn)你一個(gè)比較傻的問(wèn)題啊

    像RE之類(lèi)的文件甚至能有重新把根目錄掛載為RW的權限

    這種權限也是通過(guò)這種方法實(shí)現的嗎

    還是說(shuō)已經(jīng)root的手機應用程序即可以通過(guò)

    process = Runtime.getRuntime().exec(“su”);

    這種語(yǔ)句來(lái)獲取root權限??

    [回復]

    Simon_fu 回復:

    我在網(wǎng)上看到很多人都是這樣獲得root權限的,但是這必須要是rooted過(guò)的手機,否則沒(méi)戲!所以這種方法不通用。rooted手機本身也是利用了系統漏洞,如果那一天把漏洞堵上,也就沒(méi)戲了!

    [回復]

    chaos 回復:

    謝謝simon牛

    我看了下android 那些terminal模擬器的代碼,自己編譯了,發(fā)現他們在沒(méi)有root權限的機器上是沒(méi)有辦法執行su的,也看了下superuser的代碼,它的思路是修改機器上的su程序,替換成自己編譯的su程序,大致明白了通過(guò)process = Runtime.getRuntime().exec(“su”);怎么獲取root權限的。

    ps:

    有一個(gè)小問(wèn)題,我看了你上文提到的請參考《Android Permission》。里面我嘗試著(zhù)對init.rc文件進(jìn)行修改,但是每次修改后重啟機器init.rc文件都恢復成為修改前的狀態(tài)了,請問(wèn)你有修改過(guò)該文件嗎?

    [回復]

    Simon_fu 回復:

    因為你的根分區是是只讀的,試試adb remount行不行?

    [回復]

    chaos 回復:

    對 我是root權限 mount -o rw,remount -t rootfs /

    [回復]

    匿名 回復:

    init.rc 不是在ramdisk裡面嗎?ramdisk運行在內存裡面,
    每次重開(kāi)機當然會(huì )恢復之前的狀態(tài)。

    [回復]

    chaos 回復:

    謝謝了 那init.rc未啟動(dòng)時(shí)具體在rom的什么文件里面呢?

    是不是在啟動(dòng)之后再映射到內存內嗎

    如果要修改是不是得修改rom然后重新刷機才可以成功??

    [回復]

    Simon_fu 回復:

    呵呵!我只是研究了這個(gè)技術(shù),刷機這種事兒我可沒(méi)干過(guò)!
    這個(gè)幫不了你??!
    你可以到刷機網(wǎng)站上面請教這個(gè)問(wèn)題。

    [回復]

    chaos 回復:

    那在為映射到內存之前init.rc對應哪個(gè)文件呢?

    是否修改init.rc必須先修改rom

    然后重新刷機才能生效??

    [回復]

  11. pcsuite

    2011-04-16 12:15:53

    樓主,你好,我看了你很多篇文章,寫(xiě)的都很好,而且對我的幫助也很大,在此表示感謝。

    [回復]

  12. dxz

    2011-04-22 18:18:20

    你好,我要是想用我的應用在system目錄下創(chuàng )建一個(gè)文件,用你說(shuō)的那方法好像不可行吧。能不能給個(gè)思路。謝謝

    [回復]

    Simon_fu 回復:

    你遇到什么問(wèn)題了嗎?
    我覺(jué)得是可以做到的!因為已經(jīng)有root權限了,在系統中創(chuàng )建文件沒(méi)有理由不成功的。
    system分區是只讀的,你可能需要remount一下吧。

    [回復]

    dxz 回復:

    您好,我是初學(xué)者,您說(shuō)的那個(gè)服務(wù)該怎么寫(xiě)呢 ?我還是沒(méi)明白那服務(wù)是怎么回事?為什么掉聲明一個(gè)服務(wù)就可以應用就可以獲取root權限呢 ?還是應用只能調用聲明的那個(gè)服務(wù)里的方法?

    [回復]

  13. chaos

    2011-04-24 01:34:49

    simon牛

    最近我打算詳細閱讀以下android框架的源代碼

    ActivityManagerService.java

    對ActivityManagerService的大致流程有所了解了

    但是對于細節很難看懂

    能不能介紹一下你閱讀android源碼的技巧嗎

    或者在國外有沒(méi)有對android相關(guān)源碼剖析的文章或blog嗎?

    尤其是對ActivityManagerService.java部分的??

    非常感謝

    [回復]

    Simon_fu 回復:

    說(shuō)實(shí)話(huà),上萬(wàn)行的代碼我也不看!
    只是說(shuō)自己需要的時(shí)候,順藤摸瓜摸到這里而已!
    另外既然是service,熟悉了Android service對你理解它也很有幫助。

    [回復]

  14. chaos

    2011-04-24 19:20:04

    simon牛,請教一個(gè)問(wèn)題

    請問(wèn)一下能不能指點(diǎn)一下閱讀android框架源代碼的技巧啊

    比如我最近在閱讀ActivityManagerService.java 光這一個(gè)模塊就一萬(wàn)多行的代碼

    大體知道是一個(gè)什么它流程 但細節深究實(shí)在是很亂啊 看不出頭緒

    或者外國有沒(méi)有相關(guān)剖析android源代碼的blog或文章嗎??

    [回復]

  15. aplikacje na telefon

    2011-04-30 08:58:52

    The most comprehensive and very well thought out write up I have found on this subject on the net. Keep on writing, I will keep on coming by to read your new content. This is my fourth time coming by your blog.

    [回復]

  16. soros

    2011-05-25 10:04:59

    謝謝樓主共享,不知道樓主是否研究過(guò)Runtime.exec() 方法執行shell 指令呢? 這樣是不是也能夠獲取到root 執行權限呢? 我正在使用這種方法,但是卻不能夠正常執行shell 腳本。

    [回復]

    Simon_fu 回復:

    可以肯定的告訴你,絕對不可能擁有root權限。因為只有在java層才能調用Runtime.exec(),這樣的進(jìn)程不可能是root權限的進(jìn)程,最高是system權限。

    [回復]

  17. abc

    2011-05-28 13:57:52

    理解錯,謝謝,問(wèn)題已經(jīng)解決了

    [回復]

  18. abc

    2011-06-03 09:55:44

    解決了,是線(xiàn)程并發(fā)問(wèn)題。

    [回復]

  19. 匿名

    2011-07-10 16:35:53

    simon_fu;你好,我想請問(wèn)一下,我要通過(guò)jni方式去操作/dev目錄下的設備文件,我看您的博文說(shuō)只要獲得system權限就可以操作設備了,但是我獲得了system權限還是不能訪(fǎng)問(wèn)設備文件,請問(wèn)訪(fǎng)問(wèn)設備文件ap必須要具備root權限嗎?

    [回復]

    Simon_fu 回復:

    這個(gè)就要看你的設備驅動(dòng)要求的權限了!
    有的設備驅動(dòng)必須要root才可以!
    需要驅動(dòng)哦你工程師商議!

    [回復]

  20. lufengdie

    2011-08-01 15:01:21

    “首先定義一個(gè)執行mount的腳本,我把它位于/system/etc/mount_nfs.sh”

    這一步不能操作啊。

    請教樓主、

    [回復]

    Simon_fu 回復:

    說(shuō)明你沒(méi)有設備的root權限,或者你沒(méi)有remount system分區。

    [回復]

  21. 匿名

    2011-08-19 22:34:30

    你好simon,我最近遇到一個(gè)問(wèn)題,我的apk要執行一些需要root權限的命令.看了你介紹的這種方法(第一種),可是這種方法怎么取得命令執行的輸出呢?

    [回復]

    Simon_fu 回復:

    把命令行重定向到文件,然后執行結束之后,讀取文件內容。

    [回復]

  22. vincent.yan

    2011-08-23 19:40:10

    simon牛,看了你的幾篇文章,收益匪淺
    但是我現在遇到類(lèi)似問(wèn)題,希望能給予指導。

    首先我要實(shí)現的是一個(gè)android應用,但是我想要獲取到root權限。(不是Android系統開(kāi)發(fā)人員),這個(gè)情況該怎么做?是否用第二種方法可以實(shí)現

    或者你有什么好方法讓?xiě)迷诜莚oot權限下,去抓屏呢?

    [回復]

    Simon_fu 回復:

    抓屏?
    我覺(jué)得應該是要用到framebuffer吧!
    沒(méi)有root權限我覺(jué)得難!
    不好意思!

    [回復]

  23. Simon_fu

    2011-09-14 13:59:41

    研究一下init的幫助文檔,里面解釋了init service參數傳遞問(wèn)題。

    [回復]

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android: 啟動(dòng)init.rc 中service的權限問(wèn)題
Android系統root破解原理分析(續)
iMX6 Android系統下常見(jiàn)問(wèn)題解決思路
android init.rc中啟動(dòng)的service 默認是disable的,后續如何啟動(dòng)此服務(wù)
Linux下讓Oracle服務(wù)自動(dòng)啟動(dòng)與停止 (2009-01-04 16:30:28)
Linux中如何將腳本做成系統服務(wù)開(kāi)機自啟動(dòng)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久