iOS逆向(10)-越獄!越獄原理!遠(yuǎn)程連接登錄手機(jī)

之前的九篇文章講述的是在不越獄的情況下,詳細(xì)的講解了對(duì)APP重簽名的原理,如何動(dòng)態(tài)庫(kù)注入,以及之后的各種調(diào)試技巧。這些功能其實(shí)已經(jīng)很強(qiáng)大了,能夠幫助咱們?cè)诮^大多數(shù)情況下去分析并且更改對(duì)方的APP了。這對(duì)付一些在開(kāi)發(fā)過(guò)程中沒(méi)有安全意識(shí)的APP其實(shí)已經(jīng)足以。但是但凡對(duì)方有對(duì)APP進(jìn)行防護(hù),那么重簽名就顯得有些弱雞了。
比如:
1、登錄微信后,第二天會(huì)受到他們的警告。
2、重簽名優(yōu)酷后可以看到他們有類(lèi)似非法APP的Log
...

那么這個(gè)時(shí)候就需要咱們對(duì)APP,甚至的操作系統(tǒng)擁有更大的掌控權(quán),而這一切的基礎(chǔ)就是越獄!

hackers總是想象如果自己是開(kāi)發(fā)者會(huì)怎么寫(xiě),然后才能找到入手點(diǎn)。同理,開(kāi)發(fā)者們也要想象自己是hackers會(huì)怎么做,才能采取相應(yīng)的防御措施。然后,就是一場(chǎng)遞歸的博弈。
拿越獄檢測(cè)這件事來(lái)說(shuō),起初大家只需判斷有無(wú)安裝Cydia就好了,hackers們說(shuō)好,那我就不安裝Cydia也可以動(dòng)手腳。開(kāi)發(fā)者們又說(shuō),那你一定得用的上MobileSubstrate,bash,ssh吧,我去檢測(cè)手機(jī)有沒(méi)有安裝這些工具。可是又有什么用呢?你判斷什么我繞過(guò)去什么。
當(dāng)class-dump大肆流行,函數(shù)符號(hào)都被暴露,開(kāi)發(fā)者想盡辦法藏起自己的敏感函數(shù)代碼。hackers們也知道class-dump的死穴在哪里,于是新的檢索辦法油然而生。也就說(shuō),當(dāng)一個(gè)防御手段成為流行,它就不會(huì)再是個(gè)讓hackers大罵“真特么費(fèi)勁”的防御手段了。比如之前介紹的一個(gè)小技巧:內(nèi)存數(shù)據(jù)擦除 ,hackers知道開(kāi)發(fā)者都去擦數(shù)據(jù)了,那我hook memset在你擦之前去讀就好了。開(kāi)發(fā)者說(shuō):我直接寫(xiě)硬盤(pán)上然后刪除!hackers說(shuō):難道你沒(méi)聽(tīng)說(shuō)過(guò)文件恢復(fù)?

以上來(lái)自大佬念茜的自言自語(yǔ)。

所以說(shuō),這是一個(gè)全新的篇章,從這開(kāi)始才是真的逆向的起點(diǎn),讓我們一起來(lái)享受在iOS世界中安全攻防的其樂(lè)窮窮吧。

一、什么是越獄

要了解越獄,就必要要先了解iOS系統(tǒng)的啟動(dòng)過(guò)程。
iOS啟動(dòng)引導(dǎo)分為三種模式:

  • 正常引導(dǎo)
  • 恢復(fù)引導(dǎo)
  • 固件更新引導(dǎo)

這里我們只對(duì)「正常模式」進(jìn)行介紹,其他兩種模式可以自己猜一猜。

1、圖解啟動(dòng)鏈

iOS安全啟動(dòng)鏈.png

2、詳解啟動(dòng)鏈

Step 1、按下電源

額,這個(gè)就不談了。

Step 2、Boot ROM

所有iOS設(shè)備在處理器內(nèi)都集成有一段名為Boot Room的代碼,此代碼被燒制到處理器內(nèi)的一塊存儲(chǔ)上,并且只讀,所以它的完整性的得到保障的。但這也同樣會(huì)有問(wèn)題,萬(wàn)一Boot Room本身存在安全漏洞,那么就無(wú)法通過(guò)更新進(jìn)行修復(fù)。
而B(niǎo)oot Room的功能主要是負(fù)責(zé)初始化設(shè)備,并且引導(dǎo)加載底層引導(dǎo)加載器LLB(Low Level Bootloader)。在這一過(guò)程中,Boot Room會(huì)使用Apple Root CA Public證書(shū)對(duì)LLB進(jìn)行驗(yàn)證,如果驗(yàn)證成功則加載iBoot,不成功則啟動(dòng)失敗。
Boot Room在啟動(dòng)的過(guò)程中的地位至關(guān)重要,由于Boot Room只讀特性,保證了iPhone上不能安裝Android系統(tǒng)。同理,在除了iPhone其他的設(shè)備上沒(méi)有Boot Room,也就無(wú)法安裝iOS系統(tǒng)。

Step 3、Low Level Bootloader

LLB(Low Level Bootloader)不同于Boot ROM,它不是被內(nèi)嵌在設(shè)備上的,而是在iOS系統(tǒng)中,同其他文件一樣,是一種被加密的IMG3格式文件,會(huì)隨著iOS系統(tǒng)更新而更新。
LLB負(fù)責(zé)啟動(dòng)更高層次的Bootloader,同樣這一步也需要進(jìn)行驗(yàn)證。驗(yàn)證不成啟動(dòng)失敗,成功則繼續(xù)。

Step 4、iBoot

iBoot 才是引導(dǎo)過(guò)程中的主加載器,它負(fù)責(zé)加載操作系統(tǒng)內(nèi)核。同樣這一步也需要進(jìn)行驗(yàn)證。驗(yàn)證不成啟動(dòng)失敗,成功則繼續(xù)。

iBoot在內(nèi)存中被加載至地址0x5FF00000處。它有一個(gè)內(nèi)建的HFS+驅(qū)動(dòng),可以直接訪問(wèn)iOS的文件系統(tǒng),并支持多線程。iBoot通常會(huì)派生出兩個(gè)線程:
一個(gè)main線程,負(fù)責(zé)顯示啟動(dòng)時(shí)的蘋(píng)果logo,并根據(jù)auto-bootboot-command環(huán)境變量的設(shè)置(正常引導(dǎo)模式下boot-command被設(shè)為fsboot)進(jìn)行系統(tǒng)引導(dǎo),引導(dǎo)過(guò)程可以根據(jù)bootdelay環(huán)境變量延遲進(jìn)行;
一個(gè)是uart reader線程,蘋(píng)果可能將這個(gè)線程用于調(diào)試,其基本處于閑置狀態(tài)。正常引導(dǎo)模式中,iBoot調(diào)用fsboot()函數(shù)掛載iOS系統(tǒng)分區(qū),定位內(nèi)核,準(zhǔn)備設(shè)備數(shù)并引導(dǎo)系統(tǒng),如果引導(dǎo)失敗,則進(jìn)入恢復(fù)模式引導(dǎo)。

以上三個(gè)步驟只要其中任何一個(gè)步驟驗(yàn)證失敗,則啟動(dòng)失敗。

Step 5、launchd && 守護(hù)程序和代理程序 && SpringBoard

之前最主要的幾部完成之后就剩下啟動(dòng)相關(guān)程序了,先啟動(dòng)第一個(gè)程序launchd,再由由launchd啟動(dòng)守護(hù)程序和代理程序,之后是桌面應(yīng)用SpringBoard,系統(tǒng)啟動(dòng)完成。

3、越獄是什么?

Windows下最高權(quán)限用戶(hù)是AdminAdmin可以對(duì)電腦操作任何事情,哪怕是刪掉自己。
Linux下最高權(quán)限用戶(hù)是RootAndroid下早年就有Root的說(shuō)法,其實(shí)就是取得Root權(quán)限。
iOS衍生與Unix,其與Linux基本相似,所以咱們這說(shuō)的越獄其實(shí)就是取得Root權(quán)限。

結(jié)合上文所說(shuō)的安全啟動(dòng)鏈的驗(yàn)證過(guò)程,越獄要做的事情也就是找到那三個(gè)驗(yàn)證的步驟中的漏洞,并且繞過(guò)其驗(yàn)證,從而禁止掉信任鏈中負(fù)責(zé)驗(yàn)證的組件,最終取得Root權(quán)限。

目前情況下越獄分兩種:

  • 完美越獄:破解iOS系統(tǒng)漏洞之后,每次系統(tǒng)重啟都能自動(dòng)調(diào)用注入的惡意代碼,達(dá)到破壞安全驗(yàn)證,再次獲得ROOT權(quán)限。
  • 非完美越獄:越獄系統(tǒng)后,并沒(méi)有完全破解安全鏈,有部分信息或功能應(yīng)用不佳;比如;關(guān)機(jī)以后必須去連接越獄軟件來(lái)引導(dǎo)開(kāi)機(jī);或者重啟會(huì)導(dǎo)致越獄的失效;這樣的越獄稱(chēng)為“不完美越獄”。

目前完美越獄只支持iOS10一下的設(shè)備,所以如果大家需要玩,建議入手一臺(tái)iOS9的iPhone5s(咸魚(yú)300塊之內(nèi)能包郵到家哦),

二、如何越獄

自從盤(pán)古聯(lián)合PP助手發(fā)布了國(guó)內(nèi)首批越獄工具后,越獄就變得極其簡(jiǎn)單。一鍵操作,無(wú)痛無(wú)煩惱。
筆者利用「愛(ài)思助手」助手越獄。

愛(ài)思助手

然后根據(jù)自己的手機(jī)系統(tǒng)選擇對(duì)應(yīng)版本的越獄工具即可。
根據(jù)提示有對(duì)應(yīng)的簡(jiǎn)單操作,然后等待自動(dòng)重啟,重啟后能打開(kāi)Cydia即代表越獄成功。當(dāng)然也有可能越獄失敗,重復(fù)以上越獄的步驟就好了。

Cydia

Tips: 筆者在手機(jī)機(jī)身溫度比較高的時(shí)候經(jīng)常越獄失敗,所以如果有同樣情況的同學(xué),等待機(jī)身溫度降低之后再次嘗試,應(yīng)該就可以成功了。

三、推薦插件(必裝)

首先在Cyida中添加幾個(gè)常用的源:
1、PP助手:apt.25pp.com
2、雷鋒源:apt.abcydia.com
3、Frida:https://build.frida.re

  • Apple File Conduit "2":獲取訪問(wèn)手機(jī)根目錄權(quán)限


    Apple File Conduit "2"
  • AppSync Unified 關(guān)閉簽名:繞過(guò)簽名檢測(cè)


    AppSync Unified 關(guān)閉簽名
  • adv-cmds:命令行


    adv-cmds
  • OpenSSH:SSH (Secure SHell) 協(xié)議的免費(fèi)開(kāi)源實(shí)現(xiàn)。SSH協(xié)議族可以用來(lái)進(jìn)行遠(yuǎn)程控制, 或在計(jì)算機(jī)之間傳送文件。

    OpenSSH

  • Frida:之后制作砸殼工具需要用到


    Frida

四、遠(yuǎn)程連接登錄手機(jī)

1、Wifi連接

在上一步已經(jīng)安裝完OpenSSH插件之后,Wifi登錄就變得很簡(jiǎn)單。
先確保手機(jī)和電腦通處于一個(gè)Wifi環(huán)境,在手機(jī)的網(wǎng)絡(luò)設(shè)置里面找到當(dāng)前的IP地址,如:172.20.122.108
打開(kāi)終端

// ssh 用戶(hù)名@手機(jī)IP地址
$ssh root@172.20.122.108

第一次登錄會(huì)有類(lèi)似這樣的提示:


iPhone公鑰保存

直接yes就可以了,他會(huì)將對(duì)應(yīng)IP生成秘鑰保存在目錄/.ssh/known_hosts

known_hosts

如果將其中對(duì)應(yīng)的IP刪掉,下次又會(huì)有同樣的提示了。

然后就需要填入用戶(hù)密碼,root用戶(hù)的默認(rèn)密碼為:alpine。
如果你對(duì)手機(jī)安全性有要求,建議改掉此密碼,并且牢記。否則就不要改了,要不然忘記了的話就只能刷機(jī)了(刷機(jī)有風(fēng)險(xiǎn))。

出現(xiàn)類(lèi)似如下圖就代表等成功


登錄成功

2、Wifi取別名

每次都是用ssh root@1172.20.122.108有點(diǎn)麻煩,而且也不利于記憶。所以我們可以給一個(gè)對(duì)應(yīng)的IP取一個(gè)對(duì)應(yīng)的名字,比如我們給172.20.122.108的root用戶(hù)取名5s(假設(shè)我的越獄手機(jī)就是5s),那么我們下次就可以直接使用以下命令來(lái)連接:

$ssh 5s

方法:
在上面提到的known_hosts同級(jí)目錄下新建一個(gè)名為config的文件(建議使用Vim命令創(chuàng)建,因?yàn)橛袡?quán)限問(wèn)題)。

config

其中加入如下內(nèi)容:

Host 5s
    HostName 172.20.122.108       
    User root                      
    Port 22                      

假設(shè)有另外一臺(tái)手機(jī)連了另外一個(gè)IP,則需要多個(gè)Host,依次類(lèi)推:

Host 5s
    HostName 172.20.122.108       
    User root                      
    Port 22                      

Host 6s  
    Hostname 172.20.122.163 
    User root
    Port  22
別名登錄

3、USB連接

上文已經(jīng)了解到,如何用wifi登錄手機(jī),要了解USB連接之前要知道一個(gè)前提:
本機(jī)的回環(huán)地址默認(rèn)為127.0.0.1。 本機(jī)地址也可以用localhost表示。而USB默認(rèn)的端口號(hào)為22
所以在USB端口號(hào)開(kāi)放的前提下,我們只要連接端口22即可。

點(diǎn)擊sukimashita官網(wǎng)或者我的Github下載usbmuxd

我們只需要用到其中的python-client文件夾下的tcprelay.pyusbmux.py兩個(gè)文件。

usbmuxd

終端cd進(jìn)入該目錄,開(kāi)放22端口并且映射到12345端口上(可以是任意端口,前提是此端口沒(méi)有被占用),使用如下命令:

python tcprelay.py -t 22:12345  
端口映射

然后新建一個(gè)終端窗口
連接此本地IP下的12345端口即可:

ssh root@127.0.0.1 -p 12345

區(qū)別于上面的wifi地址,127.0.0.1 又是一個(gè)新的ip所有又會(huì)出現(xiàn)一次新的公鑰保存提示,同樣的yes,再輸入密碼:

USB連接成功

4、USB腳本連接

命令雖然簡(jiǎn)單,但是每次都要進(jìn)入tcprelay.py對(duì)應(yīng)的目錄會(huì)很麻煩,所以還是老規(guī)矩,先設(shè)置環(huán)境變量,再寫(xiě)對(duì)應(yīng)腳本,即可實(shí)現(xiàn)在任意目錄使用USB連接了。

1、設(shè)置環(huán)境變量

如果之前有跟筆者之前的文章做過(guò),這一步可跳過(guò)。
在用戶(hù)的根目錄下新建文件夾FYSHELL,專(zhuān)門(mén)存放所有的自定義腳本文件。FYSHELL也可以隨意存放,只是該目錄的位置在下面要使用到。
在用戶(hù)的根目錄下找到文件.bash_profile,新增加FYSHELL的環(huán)境變量(找不到.bash_profile文件?那就新建一個(gè),推薦使用vim新建,避免權(quán)限問(wèn)題)。
如下圖,筆者此時(shí)擁有兩個(gè)環(huán)境變量FYSHELLCY

環(huán)境變量.png

2、USB端口腳本

先將之前的python-client文件夾拷貝到FYSHELL中。
新建usbConnect.sh文件,輸入內(nèi)容:

python /Users/用戶(hù)名/FYShell/python-client/tcprelay.py -t 22:12345
usbConnect.sh
3、登錄手機(jī)腳本

新建loginUsb_5s.sh文件,輸入內(nèi)容:

ssh root@127.0.0.1 -p 12345 
loginUsb_5s.sh

之后直接使用這兩個(gè)腳本就能完成USB登錄手機(jī)的任務(wù)了!

sh usbConnect.sh
usbConnect.sh
// 新建端口后在執(zhí)行以下命令
sh loginUsb_5s.sh
loginUsb_5s.sh

五、SSH登錄原理

以下內(nèi)容由于筆者的5s不在身旁,所以換了臺(tái)iPhone6的手機(jī)繼續(xù)。。。

SSH登錄本職上還是調(diào)RSA加密的運(yùn)用:

  • 遠(yuǎn)程服務(wù)器(iPhone)上生成一堆公私鑰
  • 將公鑰發(fā)給客戶(hù)(Mac)
  • Mac每次登錄iPhone的時(shí)候使用本地保存的公鑰加密密碼,發(fā)送給iPhone,iPhone使用私鑰解密,密碼一直則登錄成功。

1、公鑰保存

在上文中的公鑰保存其實(shí)就是這里所說(shuō)的第一步。


iPhone公鑰保存

2、驗(yàn)證

使用終端查看驗(yàn)證

  • 查看iPhone本身的公鑰
cat ssh_host_rsa_key.pub
iPhone本身的公鑰
  • 查看Mac上保存的公鑰
cat known_hosts
Mac上保存的公鑰

兩個(gè)地方的公鑰是相同的,得以驗(yàn)證。

3、中間人攻擊

中間人攻擊其實(shí)就是在SSH登錄的時(shí)候,驗(yàn)證失敗的結(jié)果。
將本地保存的RSA公鑰隨意改一個(gè)字母筆者將最后一個(gè)字母f改成了e
再次嘗試登錄手機(jī),即可出現(xiàn)中間人攻擊提示。

竄改公鑰

中間人攻擊

驗(yàn)證完之后還是將其改回來(lái)吧。

六、免密登錄

免密碼登錄也稱(chēng)“公鑰登錄”,原理就是用戶(hù)將自己的公鑰儲(chǔ)存在遠(yuǎn)程主機(jī)上。登錄的時(shí)候,遠(yuǎn)程主機(jī)會(huì)向用戶(hù)發(fā)送一段隨機(jī)字符串,用戶(hù)用自己的私鑰加密后,再發(fā)回來(lái)。遠(yuǎn)程主機(jī)用事先儲(chǔ)存的公鑰進(jìn)行解密,如果成功,就證明用戶(hù)是可信的,直接允許登錄 不再要求密碼。

1、本地(MAC)生成RSA公私鑰

先查看本地(MAC)之前是否已經(jīng)生成過(guò)RSA公私鑰,直接進(jìn)入目錄.ssh下查看,如果其中有id_rsaid_rsa.pub即代表已有,無(wú)需重新生成。如果強(qiáng)行生成新的,則會(huì)導(dǎo)致之前使用這對(duì)秘鑰的地方失效。

.ssh

如果沒(méi)有,直接使用如下命令生成新的

ssh-keygen

接著會(huì)出現(xiàn)一些問(wèn)題,全部留空,直接回車(chē)即可。之后就可以發(fā)現(xiàn)目錄.ssh下有了id_rsaid_rsa.pub了。

2、將本地(MAC)的公鑰發(fā)送給服務(wù)器(iPhone)

ssh-copy-id root@localhost -p 12345

期間會(huì)需要輸入一次iPhone用戶(hù)的密碼(默認(rèn)alpine)。

ssh-copy-id

接著,再次嘗試登錄,就會(huì)發(fā)現(xiàn)不用在輸入密碼就可以登錄了。

免密登錄成功

類(lèi)似上一步的驗(yàn)證SSH原理,查看兩個(gè)端的用公鑰。

手機(jī)上的公鑰

Mac上的公鑰

同樣得以驗(yàn)證。

七、總結(jié)

如果說(shuō)越獄是逆向的開(kāi)始,那么Mac遠(yuǎn)程登錄手機(jī)就是逆向的大門(mén),只有進(jìn)入其中,才能一探究竟。后續(xù)的所有操作,比如:砸殼,動(dòng)態(tài)分析,動(dòng)態(tài)調(diào)試,動(dòng)態(tài)庫(kù)注入都離不開(kāi)這個(gè)步驟,所有如果可以,希望大家能夠跟著這片文章做一遍。有可能會(huì)有坑,但是這樣才記憶深刻!

下一篇文章將會(huì)講述,在登錄手機(jī)后如何對(duì)APP進(jìn)行砸殼。

引用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,034評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,327評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,554評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,337評(píng)論 6 404
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,883評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評(píng)論 3 439
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,114評(píng)論 0 286
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,625評(píng)論 1 332
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,555評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,737評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評(píng)論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,973評(píng)論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,362評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,615評(píng)論 1 280
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,343評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,699評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容