unidbg 補環境

Unidbg 補環境
Unidbg 中的補環境,大體上可以分成兩類,運行環境缺失和上下文缺失,

上下文缺失則是由於樣本在運行目標函數前對SO或目標函數做了一些初始化工作,Unidbg中對目標函數單獨運行,自然就導致了上下文缺失。上下文缺失相較於運行環境缺失,是一種更加隱蔽的環境缺失。
運行環境缺失。最簡單的例子就是目標函數中通過 JNI 調用到了某個自己的 JAVA 方法,Unidbg 會及時報錯,給出堆棧以及這個 JAVA 方法的簽名,需要我們補上對應的 JAVA 方法,
補 JAVA 環境是補運行環境中主要的一部分,但是,補 JAVA 環境並不是工作的全部。還有哪些環境需要補呢?

文件讀寫——對linux虛擬文件的讀寫,對ASSETS資源文件的讀寫、對app目錄下文件的讀取,對 Sharedpreference 的讀取等等
系統調用具體實現——比如popen函數所涉及的系統調用等
系統庫SO,Unidbg並沒有,實際上也不可能模擬完整的 Android 系統 SO 環境,有的 SO 所依賴的 SO 比較多,很難調起來,所以 Unidbg 設計了 VirtualModule(虛擬SO模塊),有時候我們需要和它打交道。
補不了,打 patch
Unidbg 在大多數情況下是好的方案

在補環境的過程中,對算法細節有了一定的理解,而且用 Unidbg 跑出結果後,分析和還原算法會更快,因爲 Unidbg 的 code trace / hook / console debugger 相比較 IDA trace,Frida hook 更快、更穩定、更方便復現。而且環境完全是我們的,有絕對的掌控。

Unidbg 並不是過往某個工具的替代品,而是 IDA、Frida 以及其工具套件的互補品。它和過去的工具結合在一起 1+1>2

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