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>