Python 開源軟體考古 - 以 Viper 為例

  • R2
  • Day 1, 10:50‑11:20
  • Chinese talk w. Chinese slides
  • Education
  • Novice

想成為優秀開發者,大量閱讀開源專案程式碼是必要的。本演講將分享講者閱讀開源專案時所發展與實踐之方法及技巧。內容包含降低專案複雜度、修改 module dependency 追 code 工具、專案統計數據分析、深度與廣度走訪專案程式碼。

Talk Detail

### 演講簡報 * [簡報連結](https://docs.google.com/presentation/d/1HwBrETgmEz6-igEVaPAtQPWyuBljyFyvXtKzHLSVaMk/edit?usp=sharing) ### 為何挑選 Viper 專案與好處 * Viper 主要開發者 Claudio Guarnieri 所撰寫的程式碼以品質精良、可讀性高著稱。該作者另一知名資安專案 Cuckoo Sandbox 也亦為高品質專案。希望藉由高品質、可讀性高程式碼之導讀,使初學者提高讀 code 的意願,進而從中享受讀 code 的樂趣。 * 講者本身職業為資安工程師,平日需分析惡意程式。Viper 為分析惡意程式的 framework,開發與整合許多實用分析工具。因想了解自己每天使用之工具是如何撰寫而成,進而開始鑽研專案程式碼。 ### 講者研究 Viper 的筆記 (簡報上也可找到) * [以 module dependency 所建構之專案架構](https://github.com/18z/viper-research/blob/master/materials/2-46a2a/viper-statistics-v2.pdf) - 簡報上會呈現如何建構 * [專案深度走訪筆記 part1](https://github.com/18z/viper-research/blob/master/materials/2-46a2a/dive-in.md) - 將每隻程式逐行解讀 * [專案深度走訪筆記 part2](https://github.com/18z/viper-research/blob/master/materials/2-46a2a/lego.md) - 以摘要方式描述該隻程式功能與特色,同時將每隻程式視為一塊樂高積木,尋找積木組合出現比例高的部分,並將組合後的功能做描述 * [廣度走訪筆記](https://github.com/18z/viper-research/blob/master/materials/2-46a2a/viper-tour.md) - 搭配先前以 module dependency 所建構之專案架構,定義專案每個邏輯的起點與終點,並完整走訪所有路徑之筆記。 ### 使用的第三方工具: * [snakefood](https://pypi.python.org/pypi/snakefood/1.4) - 視覺化 python module dependency 工具。另,在簡報中第 14 頁呈現 snakefood 修改版,使得梳理 module dependency 之效率提升。 * [modulegraph](https://pythonhosted.org/modulegraph/) - 視覺化 python module dependency 工具 * [pydegraph](http://www.tarind.com/depgraph.html) - 視覺化 python module dependency 工具

Slides Link

Speaker Information

Jun-Wei Song / Kun-Yu Chen

We're Software Archaeologist. Love to dig into the history of software.