7.6 周遊列國實例 (11-20)

(11) viper.py -> console.py -> plugins.py -> modules/pe.py -> out.py -> colors.py

若 console 接到內建模組 pe 指令,則會透過 plugins.py 載入 pe 模組。
用 dict 與 inspect 實作。 inspect 取得 module object。
plugins[member_object.cmd] = dict(obj=member_object, description=member_object.description)
將相對應指令塞入 dict 的 key 值,並透過建立巢狀字典,將 obj=member_object。
開發者就可透過 module = __modules__[root]['obj']() 初始化模組的 instance。

(12) viper.py -> console.py -> plugins.py -> modules/pe.py -> objects.py

此處 objects.py 中 File 沒被用到。

(13) viper.py -> console.py -> plugins.py -> modules/pe.py -> abstracts.py -> colors.py

pe.py 模組需要繼承 abstracts.py 中的基因。

(14) viper.py -> console.py -> plugins.py -> modules/pe.py -> session.py -> out.py -> colors.py

pe.py 用 session.py 來檢查三件事。
1. __session__.is.set() 檢查 session 是否開啟。
2. 用 pefile.PE 打開樣本取得 PE 資訊,其中樣本路徑由 __session__.file.path 取得。
3. 將 PE file 中的 resource dump (圖片等資訊) 出來且指定 dump 到特定資料夾時會用到。

(15) viper.py -> console.py -> plugins.py -> modules/pe.py -> session.py -> objects.py

此處 session.py 中 objects.py 沒被用到。
objects.py 用來負責計算與提供,正被分析檔案的基本資訊,例如:檔案類型,sha256 hash value 等。
而此事,早在 session 一打開時就計算完畢了。

(16) viper.py -> console.py -> plugins.py -> modules/strings.py -> out.py -> colors.py

若 console 接到內建模組 strings 指令,則會透過 plugins.py 載入 strings 模組。
用 dict 與 inspect 實作。 inspect 取得 module object。
plugins[member_object.cmd] = dict(obj=member_object, description=member_object.description)
將相對應指令塞入 dict 的 key 值,並透過建立巢狀字典,將 obj=member_object。
開發者就可透過 module = __modules__[root]['obj']() 初始化模組的 instance。

(17) viper.py -> console.py -> plugins.py -> modules/strings.py -> abstracts.py -> colors.py

strings.py 模組需要繼承 abstracts.py 中的基因。 

(18) viper.py -> console.py -> plugins.py -> modules/strings.py -> session.py -> out.py -> colors.py

strings.py 用 session.py 來檢查三件事。
1. __session__.is.set() 檢查 session 是否開啟。
2. 檢查 __session__.file.path 是否存在。
3. 用 open(__session__.file.path, 'r').read() 讀取檔案,爬字串。

(19) viper.py -> console.py -> plugins.py -> modules/strings.py -> session.py -> objects.py

此處 session.py 中 objects.py 沒被用到。
objects.py 用來負責計算與提供,正被分析檔案的基本資訊,例如:檔案類型,sha256 hash value 等。
而此事,早在 session 一打開時就計算完畢了

(20) viper.py -> console.py -> plugins.py -> modules/virustotal.py -> out.py -> colors.py

若 console 接到內建模組 virustotal 指令,則會透過 plugins.py 載入 virustotal 模組。
用 dict 與 inspect 實作。 inspect 取得 module object。
plugins[member_object.cmd] = dict(obj=member_object, description=member_object.description)
將相對應指令塞入 dict 的 key 值,並透過建立巢狀字典,將 obj=member_object。
開發者就可透過 module = __modules__[root]['obj']() 初始化模組的 instance。

Last updated

Was this helpful?