Tor源碼閱讀與改造(一)

0x00 前言

    因爲公司需求,須要掌握洋蔥網絡的總體架構和部分詳細實現細節,並對Tor進行鍼對性的改造。在查詢Tor官方相關文檔和google各類網站後,獲得的信息仍沒法達到目的,因此便開始了閱讀Tor源碼的旅程。html

    Tor的源碼能夠在官網直接進行下載,URL地址爲:linux

https://www.torproject.org/download/download.html.engit

    雖然Tor源代碼代碼量較大,可是其代碼風格很是的嚴謹和規範,包括代碼結構、函數變量命令方式以及註釋等。因此在熟悉Tor代碼的套路以後,閱讀起來雖然會花一些時間,不過閱讀起來很是的舒服。web

0x01 利器

    所謂 "工欲善其事必先利其器",雖然Tor代碼很規範,可是畢竟代碼量較大(估算幾十萬行),而且都是用C語言進行實現的。閱讀源碼的IDE可不能直接用普通的代碼編輯器好比sublime,筆者選擇了Source Insight 做爲閱讀工具:windows

該工具除了常見的語法高亮顯示,有一個很是棒的功能:自動查找函數調用關係,如上圖紅框,這對於梳理清楚代碼邏輯頗有用。網絡

另外靜態閱讀代碼時,會趕上一個函數被衆多的函數所調用,擁有衆多的函數調用鏈,此時仍然須要藉助於動態調試。由於Tor源碼在windows下編譯較爲繁瑣,筆者並無去折騰這條路,而是選擇了linux平臺,用gdb做爲動態調試工具。架構

此外,官方的日誌永遠是最重要的,這能幫助理解Tor的運行流程。可是Tor默認的日誌級別並不高,內容不夠詳細,能夠參考這裏將日誌級別提升:編輯器

https://www.torproject.org/docs/faq.html.en#Logs函數

 

最後,雖然Tor官方文檔並無知足筆者需求,可是對理解代碼邏輯仍然具備很是重要的參考意義,這裏列出一些有用的:工具

這裏面有Tor一些公開數據,好比節點總數,各種節點的具體信息等。

Tor官方對各種模塊實現的技術文檔

Tor命令行和配置文件的參考手冊

0x02 後續

接下來的幾篇文章,筆者會將Tor的總體架構和部分功能模塊(加解密、鏈路複用、長鏈接、hidden service等),以及Tor改造方法實現細節都分享一下。

by:會飛的貓

轉載請註明:http://www.cnblogs.com/flycat-2016

相關文章
相關標籤/搜索