Tor源碼分析一 -- 使用工具集

  Tor系統是用於匿名通信的一個系統,源代碼的維護到今天已經快10年。筆者從今年3月份開始陸陸續續研究Tor系統的源碼,由於源碼量大,也有很多需要總結的地方,所以特地在這裏開闢個Tor源碼分析的系列文章,供自己總結,也供大家共同探討。


1. 源碼查看工具 -- SourceInsight

  本來Tor源碼在Linux下分析和調試都可以比在Windows下更專業些,但是因爲筆者本身大部分時間需要在Windows下工作,所以選擇了Windows下的源碼分析軟件。SourceInsight是個非常好的源碼分析軟件,用於查看各種開源代碼工程都非常方便。這裏選用SourceInsight作爲Tor源碼的基本瀏覽和修改工具。


2. 文檔生成工具 -- Doxygen

  關於Doxygen的基本介紹大家可以在網上找到很多。簡單的說,Doxygen就是將源碼內的信息進行總結,生成包括函數調用關係,函數介紹等信息。這對於宏觀查看代碼非常重要。Tor源碼內很多函數都連續嵌套非常多層,靠人爲記住是非常困難的。利用Doxygen的函數調用圖,能幫助我們更好的查看函數之間的調用關係。這裏不介紹Doxygen如何使用,百度上有許多。注:使用Doxygen時定要打開函數調用圖的生成功能。


3. 編譯工具 -- MinGW MSYS msyDTK

  爲了在Windows上完成對Tor的編譯,需要使用到下面一些列套件。好在這些部分在Tor的FAQ中已經很詳細地說明如何使用,這裏就僅僅將Tor中關於如何在WIndows下編譯Tor源碼的部分複製於此,請大家自行查看。

##
## Instructions for building Tor with MinGW (http://www.mingw.org/)
##

Stage One:  Download and Install MinGW.
---------------------------------------

Download mingw:
http://prdownloads.sf.net/mingw/MinGW-5.1.6.exe?download

Download msys:
http://prdownloads.sf.net/ming/MSYS-1.0.11.exe?download

Download msysDTK:
http://sourceforge.net/projects/mingw/files/MSYS%20Supplementary%20Tools/msysDTK-1.0.1/msysDTK-1.0.1.exe/download

Install MinGW, msysDTK, and MSYS in that order.  

Make sure your PATH includes C:\MinGW\bin.  You can verify this by right
clicking on "My Computer", choose "Properties", choose "Advanced",
choose "Environment Variables", select PATH.

Start MSYS(rxvt).

Create a directory called "tor-mingw".

Stage Two:  Download, extract, compile openssl
----------------------------------------------

Download openssl:
http://www.openssl.org/source/openssl-0.9.8l.tar.gz

Extract openssl:
Copy the openssl tarball into the "tor-mingw" directory.
Type "cd tor-mingw/"
Type "tar zxf openssl-0.9.8l.tar.gz"
(Note:  There are many symlink errors because Windows doesn't support
symlinks.  You can ignore these errors.)

Make openssl libraries:
Type "cd tor-mingw/openssl-0.9.8l/"
Type "./Configure -no-idea -no-rc5 -no-mdc2 mingw"
Edit Makefile and remove the "test:" and "tests:" sections.
Type "rm -rf ./test"
Type "cd crypto/"
Type "find ./ -name "*.h" -exec cp {} ../include/openssl/ \;"
Type "cd ../ssl/"
Type "find ./ -name "*.h" -exec cp {} ../include/openssl/ \;"
Type "cd .."
Type "cp *.h include/openssl/"
Type "find ./fips -type f -name "*.h" -exec cp {} include/openssl/ \;"
# The next steps can take up to 30 minutes to complete.
Type "make"
Type "make install"


Stage Three:  Download, extract, compile zlib
---------------------------------------------

Download zlib source:
http://www.zlib.net/zlib-1.2.3.tar.gz

Extract zlib:
Copy the zlib tarball into the "tor-mingw" directory
Type "cd tor-mingw/"
Type "tar zxf zlib-1.2.3.tar.gz"

CHOICE:

Make zlib.a:
Type "cd tor-mingw/zlib-1.2.3/"
Type "./configure"
Type "make"
Type "make install"

Done.


Stage Four: Download, extract, and compile libevent
------------------------------------------------------

Download the latest libevent release:
http://www.monkey.org/~provos/libevent/

Copy the libevent tarball into the "tor-mingw" directory.
Type "cd tor-mingw"

Extract libevent.

Type "./configure --enable-static --disable-shared"
Type "make"
Type "make install"

Stage Five:  Build Tor
----------------------

Download the current Tor alpha release source code from https://torproject.org/download.html.
Copy the Tor tarball into the "tor-mingw" directory.
Extract Tor:
Type "tar zxf latest-tor-alpha.tar.gz"

cd tor-<version>
Type "./configure"
Type "make"

You now have a tor.exe in src/or/.  This is Tor.
You now have a tor-resolve.exe in src/tools/.

Stage Six:  Build the installer
-------------------------------

Install the latest NSIS:
http://nsis.sourceforge.net/Download

Run the package script in contrib:
From the Tor build directory above, run:
"./contrib/package_nsis-mingw.sh"

The resulting Tor installer executable is in ./win_tmp/.


  上述所有的工具及源碼都下載,安裝完畢之後,就可以進入Tor源碼的細節分析階段。不過,在此之前,如果可能,還需要通讀Tor源碼的設計文檔:

  https://www.torproject.org/docs/documentation.html.en

  上述網址需要翻牆纔可以閱讀,所以,或許還需要使用VPN或者GoAgent的方式事先翻牆。

  重點必讀的設計文檔包括:<Tor: the second-generation onion router>, <Tor main specification>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章