Android 滲透測試學(xué)習(xí)手冊 第四章 對 Android 設(shè)備進行流量分析

第四章 對 Android 設(shè)備進行流量分析

作者:Aditya Gupta

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

在本章中厌蔽,我們將研究 Android 設(shè)備的網(wǎng)絡(luò)流量奴饮,并分析平臺和應(yīng)用程序的流量數(shù)據(jù)戴卜。 通常應(yīng)用程序會在其網(wǎng)絡(luò)數(shù)據(jù)中泄漏敏感信息投剥,因此發(fā)現(xiàn)它是滲透測試程序最重要的任務(wù)之一。 此外吃警,你經(jīng)常會遇到通過不安全的網(wǎng)絡(luò)協(xié)議執(zhí)行身份驗證和會話管理的應(yīng)用程序酌心。 因此谒府,在本章中完疫,我們將學(xué)習(xí)如何攔截和分析 Android 設(shè)備中壳鹤,各種應(yīng)用程序的流量芳誓。

4.1 Android 流量攔截

根據(jù) OWASP 移動 Top10(https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Risks),不完善的傳輸層保護是第三大威脅匿值。實際上挟憔,假設(shè)一個應(yīng)用程序通過 HTTP 將用戶的登錄憑據(jù)提交到服務(wù)器绊谭。 如果用戶位于咖啡店或機場达传,并在有人嗅探網(wǎng)絡(luò)時登錄到他的應(yīng)用程序宪赶,會怎么樣逊朽? 攻擊者能夠獲得特定用戶的整個登錄憑據(jù)叽讳,它以后可能用于惡意目的岛蚤。 假設(shè)應(yīng)用程序正在通過 HTTPS 進行身份驗證涤妒,通過 HTTP 的會話管理她紫,并且在請求中傳遞身份驗證 Cookie贿讹。 在這種情況下,攻擊者也能夠通過在執(zhí)行中間人攻擊時攔截網(wǎng)絡(luò)來獲取身份驗證 Cookie茄菊。 使用這些認證 cookie面殖,他可以直接作為受害用戶登錄到應(yīng)用程序脊僚。

4.2 流量分析方式

在任何情況下都有兩種不同的流量捕獲和分析方法吃挑。 我們將研究 Android 環(huán)境中可能的兩種不同類型,以及如何在真實場景中執(zhí)行它們赎离。 被動和主動分析如下:

  • 被動分析:這是一種流量分析的方法梁剔,其中應(yīng)用程序發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)不會被攔截荣病。 相反个盆,我們將嘗試捕獲所有網(wǎng)絡(luò)數(shù)據(jù)包颊亮,然后在網(wǎng)絡(luò)分析器(如Wireshark)中打開它终惑,然后嘗試找出應(yīng)用程序中的漏洞或安全問題雹有。
  • 主動分析:在主動分析中霸奕,滲透測試者將主動攔截所有正在進行的網(wǎng)絡(luò)通信铅祸,并可以即時分析临梗,評估和修改數(shù)據(jù)盟庞。 這里什猖,他需要設(shè)置代理不狮,并且由應(yīng)用/設(shè)備生成和接收的所有網(wǎng)絡(luò)流量會通過該代理摇零。

被動分析

被動分析的概念是驻仅。將所有網(wǎng)絡(luò)信息保存到特定文件中噪服,之后使用數(shù)據(jù)包分析器查看粘优。 這就是我們將在 Android 設(shè)備中進行被動分析。 我們將使用tcpdump來將所有的信息保存到設(shè)備中一個位置芬位。 此后昧碉,我們將該文件拉取到我們的系統(tǒng),然后使用 Wireshark 或 Cocoa 包分析器查看它狭握。 請參閱以下步驟:

  1. 我們從 Timur Alperovich 的網(wǎng)站http://www.eecs.umich.edu/~timuralp/tcpdump-arm下載為 ARM 編譯的tcpdump二進制文件论颅。 如果我們需要恃疯,我們還可以下載tcpdump的原始二進制文件并交叉編譯(為 Android 交叉編譯你的二進制文件今妄,請按照鏈接http://machi021.blogspot.jp/2011/03/compile-busybox-for-android.html盾鳞。鏈接展示了交叉編譯 BusyBox腾仅,但相同的步驟可以應(yīng)用于tcpdump)攒砖。

    一旦我們下載了tcpdump惰蜜,我們可以通過在我們剛剛下載的二進制上執(zhí)行一個文件抛猖,來確認它是否為 ARM 編譯。對于 Windows 用戶撑碴,你可以使用 Cygwin 來執(zhí)行命令醉拓。 輸出類似于以下屏幕截圖中所示:

  2. 這里的下一步是將tcpdump二進制文件推送到設(shè)備中的一個位置。 我們還必須記住排吴,我們需要繼續(xù)執(zhí)行這個文件钻哩。 因此街氢,我們將它推送到一個位置阳仔,我們可以從中更改權(quán)限近范,以及執(zhí)行二進制來捕獲流量评矩。

  3. 現(xiàn)在,繼續(xù)并使用adbpush命令推送二進制來將二進制推送到設(shè)備蔗喂。 同樣缰儿,在我們需要從設(shè)備中拉取內(nèi)容的情況下乖阵,我們可以使用pull而不是push宣赔。

  4. 這里,我們將使用adb push將其推送到 Android 中的/data/local/tmp

    adb push tcpdump-arm /data/local/tmp/tcpdum
    
  5. 一旦我們將tcpdump二進制推送到設(shè)備瞪浸,然后需要使用adb在 shell 中訪問設(shè)備儒将,并更改二進制的權(quán)限。 如果我們試圖運行tcpdump对蒲,它會給我們一個權(quán)限錯誤钩蚊,因為我們沒有執(zhí)行權(quán)限齐蔽。

    為了更改權(quán)限两疚,我們需要訪問/data/local/tmp,使用chmod命令含滴,并授予其權(quán)限777诱渤,這意味著應(yīng)用程序?qū)⒕哂兴袡?quán)限。 以下屏幕截圖顯示了上述命令的結(jié)果輸出:

  6. 這里的最后一步是啟動tcpdump并將輸出寫入.pcap文件谈况。 使用-s勺美,-v-w標(biāo)志啟動tcpdump。 參考以下描述:

    • -s:這表示從每個封包抽取給定(在我們的例子中為 0)字節(jié)的數(shù)據(jù)碑韵,而不是默認的 65535 字節(jié)赡茸。
    • -v:這表明詳細輸出。
    • -w:這表明寫入原始數(shù)據(jù)包的文件名祝闻。 例如占卧,我們可以使用./tcpdump -v -s 0 -w output.pcap,以便將所有文件寫入output.pcap联喘,并輸出詳細信息华蜒。
  7. 在流量捕獲執(zhí)行期間,打開手機瀏覽器并訪問位于http://attify.com/data/login.html的漏洞登錄表單豁遭,該表單通過 HTTP 發(fā)送所有數(shù)據(jù)并使用 GET 請求:

  8. 這里使用用戶名android和密碼mysecretpassword登錄應(yīng)用程序叭喜。

  9. 我們現(xiàn)在可以在任何時候通過adb shell服務(wù)終止進程(使用Ctrl + C)。 下一步是將捕獲的信息從設(shè)備拉取到我們的系統(tǒng)蓖谢。 為此捂蕴,我們將簡單地使用adb pull如下:

    adb pull /data/local/tmp/output.pcap output.pcap 
    
  10. 你可能還需要更改output.pcap的權(quán)限才能拉取它。 在這種情況下闪幽,只需執(zhí)行以下命令:

    chmod 666 output.pcap
    
  11. 一旦我們下載了捕獲的網(wǎng)絡(luò)數(shù)據(jù)的.pcap文件啥辨,我們可以在 Wireshark 中打開它并分析流量。 在這里盯腌,我們將嘗試查找捕獲的登錄請求溉知。 我們可以從網(wǎng)站http://www.wireshark.org/download.html下載 Wireshark。 一旦下載并安裝完畢,打開 Wireshark 并在里面打開我們新拉取的文件output.pcap着倾,通過訪問File | Open

    一旦我們在 Wireshark 中打開.pcap文件燕少,我們會注意到一個類似下面截圖所示的屏幕:

    Wireshark 是一個開源封包分析器卡者,它幫助我們發(fā)現(xiàn)敏感信息,并分析來自所有網(wǎng)絡(luò)連接的流量數(shù)據(jù)客们。 在這里崇决,我們正在搜索我們對http://attify.com所做的請求,并輸入了我們的登錄憑據(jù)底挫。

  12. 現(xiàn)在恒傻,訪問Edit并單擊Find Packets。 在這里建邓,我們需要查找我們提交登錄憑據(jù)的網(wǎng)站盈厘,并檢查String

  13. 在這里官边,我們可以看到與http://attify.com/data/login.html的連接沸手。 如果我們在底部窗格中查找有關(guān)此數(shù)據(jù)包的更多信息,我們可以看到包含我們輸入的用戶名和密碼的請求網(wǎng)址注簿。

因此契吉,我們使用tcpdump成功捕獲了網(wǎng)絡(luò)數(shù)據(jù),并將其存儲在.pcap文件中诡渴,然后使用 Wireshark 進行分析捐晶。 然而,被動流量捕獲也可以通過adb shell直接完成妄辩。

adb shell /data/local/tmp/tcpdump -i any -p -s 0 -w /mnt/sdcard/output.pcap

這里惑灵,-i代表接口。 在這種情況下恩袱,它從所有可用接口捕獲數(shù)據(jù)泣棋。 -p指定tcpdump不將設(shè)備置于混雜模式(這是在執(zhí)行嗅探攻擊時經(jīng)常使用的模式,并且不適合我們目前使用的模式)畔塔。 在使用-tcpdump標(biāo)志啟動模擬器時潭辈,我們還可以指定使用tcpdump。 我們還需要使用-avd標(biāo)志澈吨,指定要捕獲流量的 AVD 名稱把敢。

emulator -avd Android_Pentesting --tcpdump trafficcapture.pcap

主動分析

主動分析的基本規(guī)則是,使每個請求和響應(yīng)通過我們定義的中間設(shè)備谅辣。 在這種情況下修赞,我們將設(shè)置一個代理,并使所有請求和響應(yīng)通過該特定代理。 此外柏副,我們可以選擇操縱和修改請求和響應(yīng)中的數(shù)據(jù)包勾邦,從而評估應(yīng)用程序的安全性:

  1. 為了為 HTTP 創(chuàng)建代理,請使用指定代理 IP 和端口以及-http-proxy標(biāo)志啟動模擬器割择。 由于我們在同一個系統(tǒng)上運行模擬器眷篇,我們使用IP 127.0.0.1和任何可用的端口。 在這種情況下荔泳,我們使用端口 8080蕉饼。

    emulator -avd Android_Pentesting –http-proxy 127.0.0.1:8080
    
  2. 在設(shè)備上,我們還可以訪問Settings | Wi-Fi玛歌,然后長按我們連接的網(wǎng)絡(luò) Wi-Fi昧港。 此外如果我們使用一個實際的設(shè)備,我們用于攔截的系統(tǒng)應(yīng)該在同一個網(wǎng)絡(luò)上支子。

  3. 一旦我們長按 Wi-Fi 連接创肥,我們將會得到一個類似于下面的截圖所示的屏幕。 此外译荞,如果你使用真實設(shè)備執(zhí)行此練習(xí)瓤的,設(shè)備需要與代理位于同一個網(wǎng)絡(luò)。

  4. 一旦進入連接修改屏幕吞歼,請注意圈膏,代理配置會詢問網(wǎng)絡(luò)上的設(shè)備的 IP 地址和代理系統(tǒng)的端口。

    但是篙骡,這些設(shè)置僅存于從 4.0 開始的最新版本的 Android 中稽坤。 如果我們要在小于 4.0 的設(shè)備上實現(xiàn)代理,我們將必須安裝第三方應(yīng)用程序糯俗,例如 Play Store 上可用的 ProxyDroid尿褪。

5, 一旦我們在設(shè)備/模擬器中設(shè)置了代理得湘,請繼續(xù)并啟動 Burp 代理杖玲,來攔截流量。 下面Options選項卡中 Burp 代理的樣子淘正,以便有效攔截瀏覽器和應(yīng)用程序的流量摆马。

6, 我們還需要檢查不可見的代理鸿吆,以確保我們的代理也捕獲 nonproxy 請求囤采。 (讀者可以在 Burp 的網(wǎng)站http://blog.portswigger.net/2008/11/mobp-invisible-proxying.html上詳細了解不可見代理和非代理請求。)

![](http://upload-images.jianshu.io/upload_images/118142-7f870abd10e663a5.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  1. 為了檢查代理是否工作惩淳,打開瀏覽器并啟動網(wǎng)站蕉毯。 然后我們能夠看到它是否在代理中被攔截。

正如我們在上面的屏幕截圖中看到的,我們打開了 URLhttp://attify.com代虾,請求現(xiàn)在顯示在 Burp Proxy 屏幕中进肯。 因此,我們成功地攔截了來自設(shè)備和應(yīng)用程序的所有基于 HTTP 的請求棉磨。

4.3 HTTPS 代理攔截

當(dāng)通過 HTTP 協(xié)議進行通信時坷澡,上述方法可以正常用于應(yīng)用和流量器的流量攔截。 在 HTTPS 中含蓉,由于證書不匹配,我們將收到錯誤项郊,因此我們無法攔截流量馅扣。

然而,為了解決這個挑戰(zhàn)着降,我們需要創(chuàng)建自己的證書或 Burp/PortSwigger 并將其安裝在設(shè)備上差油。 為了創(chuàng)建我們自己的證書,我們需要在 Firefox(或任何其他瀏覽器或全局代理)中設(shè)置代理:

  1. 為了在 Firefox 中設(shè)置代理任洞,請訪問Tools中顯示的Options(Mac上為Firefox | Preferences)蓄喇,然后訪問Advanced選項卡。 在Advanced選項卡下交掏,我們單擊Network選項妆偏。

  2. Network標(biāo)簽中,我們需要點擊Settings來使用 Firefox 配置代理盅弛。

  3. 完成后钱骂,在我們的系統(tǒng)瀏覽器上訪問 HTTPS 網(wǎng)站,我們能跟攔截我們設(shè)備上的流量挪鹏。 這里我們將收到一個The Network is Untrusted消息见秽。 點擊I understand the Risks,并點擊Add Exception讨盒。

  4. 然后解取,單擊Get Certificate,最后單擊View返顺,然后單擊Export來保存證書禀苦。

  5. 一旦證書保存在我們的系統(tǒng)上,我們現(xiàn)在可以使用adb將其推送到我們的設(shè)備创南。

    adb push portswiggerca.crt /mnt/sdcard/portswiggerca.crt
    
  6. 現(xiàn)在伦忠,在我們的設(shè)備中,訪問Settings稿辙,在Personal類別下昆码,我們可以找到Security。 一旦我們進入Security,請注意赋咽,你可以選擇從 SD 卡安裝證書旧噪。 點擊它使我們可以保存具有給定名稱的證書,這適用于所有應(yīng)用程序和瀏覽器脓匿,甚至是 HTTPS 站點淘钟。

  7. 通過返回到我們的瀏覽器,并打開 HTTPS 網(wǎng)站(例如https://gmail.com)來確認陪毡。 正如我們在下面的截圖中可以看到的煌寇,我們在這種情況下也成功地攔截了通信:

其它用于攔截 SSL 流量的方式

還有用于 SSL 流量攔截的其他方法,以及在設(shè)備上安裝證書的不同方法署拟。

其他方法之一是從 Android 設(shè)備的/system/etc/security位置拉取cacerts.bks文件舍杜。 一旦我們拉取了它,我們就可以使用密鑰工具以及 Bouncy Castle(位于 Java 安裝目錄中)來生成證書桅滋。 如果你在 Java 安裝目錄中找不到 Bouncy Castle慧耍,也可以從http://www.bouncycastle.org/latest_releases.html下載并將其放置在已知路徑。 此后丐谋,我們需要掛載/system分區(qū)作為讀/寫分區(qū)芍碧,以便將更新的cacerts.bks證書推送回設(shè)備。 然而号俐,為了使這種更改長期有效泌豆,如果我們使用模擬器,我們將需要使用mks.yaffs2來創(chuàng)建一個新的system.img然后使用它吏饿。

此外践美,還有其他工具可用于攔截 Android 設(shè)備的流量,例如C harles Proxy 和 MITMProxy(http://mitmproxy.org)找岖。 我強烈建議你在 Burp 代理的知識的基礎(chǔ)上嘗試他們陨倡,因為它們在可用性方面是相同的,但是更強大许布。 在使用 Charles Proxy 時兴革,我們可以直接從www.charlesproxy.com/charles.crt下載證書。

在一些滲透測試中蜜唾,應(yīng)用程序可能正在和服務(wù)器通信并獲得響應(yīng)杂曲。 例如,假設(shè)用戶試圖訪問應(yīng)用的受限區(qū)域袁余,該應(yīng)用由用戶從服務(wù)器請求擎勘。 然而,由于用戶沒有被授權(quán)查看該區(qū)域颖榜,服務(wù)器使用403 Forbidden進行響應(yīng)棚饵。 現(xiàn)在煤裙,我們作為滲透測試人員,可以攔截流量噪漾,并將響應(yīng)從403 Forbidden改為200 OK硼砰。 因此,用戶現(xiàn)在甚至能夠訪問應(yīng)用的未授權(quán)區(qū)域欣硼。修改類似響應(yīng)的示例可以在第8章“ARM 利用”中找到题翰,其中我們將討論可通過流量攔截利用的一些其他漏洞。

在應(yīng)用程序中诈胜,保護流量的安全方法是讓所有內(nèi)容通過 HTTPS 傳遞豹障,同時在應(yīng)用程序中包含一個證書。 這樣做使得當(dāng)應(yīng)用程序嘗試與服務(wù)器通信時焦匈,它將驗證服務(wù)器證書是否與應(yīng)用程序中存在的證書相對應(yīng)沼填。 但是,如果有人正在進行滲透測試并攔截流量括授,則由滲透測試程序添加的設(shè)備使用的新證書(如 portswigger 證書)與應(yīng)用程序中存在的證書不匹配。 在這些情況下岩饼,我們必須對應(yīng)用程序進行逆向工程荚虚,并分析應(yīng)用程序如何驗證證書。 我們甚至可能需要修改和重新編譯應(yīng)用程序籍茧。

4.4 使用封包捕獲來提取敏感文件

現(xiàn)在我們來看看如何使用 Wireshark 從流量數(shù)據(jù)中提取敏感文件版述。 為了做到這一點,我們可以捕獲數(shù)據(jù)包寞冯,并加載到 Wireshark 進行分析渴析。

從網(wǎng)絡(luò)捕獲中提取文件的基本概念是,它們含有指定文件類型的頭部(multipart/form-data)吮龄。 以下是從網(wǎng)絡(luò)流量捕獲中提取任何類型文件的步驟:

  1. 在 Wireshark 中俭茧,只需訪問編輯并從包詳細信息中搜索字符串multipart

  2. 一旦我們收到了向服務(wù)器發(fā)送 POST 請求的數(shù)據(jù)包(或者極少數(shù)情況下是 GET)漓帚,右鍵單擊該數(shù)據(jù)包母债,然后點擊Follow TCP Stream

  3. 此后尝抖,根據(jù)文件起始值(如 PDF 的情況下為%PDF)毡们,從以下選項中選擇Raw,然后使用擴展名.pdf保存文件昧辽。 因此衙熔,我們擁有了最終的 PDF,通過 Android 設(shè)備上傳到網(wǎng)站搅荞,而且我們恰巧在我們的滲透中開啟了網(wǎng)絡(luò)捕獲红氯。

  4. 我們還可以使用其他工具框咙,如 Windows 上的 NetworkMiner(可從http://www.netresec.com/?page=NetworkMiner下載),它提供了一個精心構(gòu)建的 GUI 來與之交互脖隶,并顯式指定保存的網(wǎng)絡(luò)流量捕獲文件扁耐。

總結(jié)

在本章中,我們了解了在 Android 設(shè)備上執(zhí)行流量分析的各種方法产阱。 此外婉称,我們會繼續(xù)攔截來自應(yīng)用程序和瀏覽器的 HTTP 和 HTTPS 流量數(shù)據(jù)。 我們還看到如何從網(wǎng)絡(luò)捕獲信息中提取敏感文件构蹬。

在下一章中王暗,我們將介紹 Android 取證,并使用手動方式以及在不同工具的幫助下庄敛,從 Android 設(shè)備中提取一些敏感信息俗壹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市藻烤,隨后出現(xiàn)的幾起案子绷雏,更是在濱河造成了極大的恐慌,老刑警劉巖怖亭,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涎显,死亡現(xiàn)場離奇詭異,居然都是意外死亡兴猩,警方通過查閱死者的電腦和手機期吓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倾芝,“玉大人讨勤,你說我怎么就攤上這事〕苛恚” “怎么了潭千?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長借尿。 經(jīng)常有香客問我脊岳,道長,這世上最難降的妖魔是什么垛玻? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任割捅,我火速辦了婚禮,結(jié)果婚禮上帚桩,老公的妹妹穿的比我還像新娘亿驾。我一直安慰自己,他們只是感情好账嚎,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布莫瞬。 她就那樣靜靜地躺著儡蔓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疼邀。 梳的紋絲不亂的頭發(fā)上喂江,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音旁振,去河邊找鬼获询。 笑死,一個胖子當(dāng)著我的面吹牛拐袜,可吹牛的內(nèi)容都是我干的吉嚣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蹬铺,長吁一口氣:“原來是場噩夢啊……” “哼尝哆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起甜攀,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤秋泄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后规阀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恒序,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年姥敛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞎暑。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡彤敛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出了赌,到底是詐尸還是另有隱情墨榄,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布勿她,位于F島的核電站袄秩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏逢并。R本人自食惡果不足惜之剧,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望砍聊。 院中可真熱鬧背稼,春花似錦、人聲如沸玻蝌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帘腹,卻和暖如春贰盗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阳欲。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工舵盈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胸完。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓书释,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赊窥。 傳聞我的和親對象是個殘疾皇子爆惧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)锨能,斷路器扯再,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,527評論 25 707
  • 第三章 Android 應(yīng)用的逆向和審計 作者:Aditya Gupta 譯者:飛龍 協(xié)議:CC BY-NC-SA...
    布客飛龍閱讀 972評論 0 9
  • 提高成長率的方法論 1、概念產(chǎn)生價值觀址遇。 2熄阻、用自己的錢在二級市場投資 3、應(yīng)用多維競爭力 價值觀決定選擇倔约,而方法...
    馮麗_5015閱讀 155評論 0 0
  • 文/ 叁叁 今天臘月二十三秃殉,在我的老家也就到年關(guān)了。 “二十三浸剩,掃塵土”每年的二十三钾军,是我們掃塵土的日子。 這一天...
    叁一叁閱讀 185評論 3 1