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

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

想成為優秀開發者,大量閱讀開源專案程式碼是必要的。本演講將分享講者閱讀開源專案時所發展與實踐之方法及技巧。內容包含降低專案複雜度、修改 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

KunYu Chen

Security researcher, working at InfoSec Division, Telecom Technology Center.

Have fun through challenging difficulties.
Recently get heavily involved in cpython work-flow.

http://kunyu-chens-notes.rtfd.io/