BinAbsInspector
v0.1
Binabsinspector(二進制抽象檢查員)是二進制中自動反向工程和掃描漏洞的靜態分析儀,這是在Keenlab孵化的長期研究項目。它基於吉德拉(Ghidra)支持的抽象解釋。它可以在Ghidra的PCODE而不是組裝上使用。目前,它支持X86,X64,ARMV7和AARCH64上的二進製文件。
z3-${version}-win/bin路徑環境變量z3-${version}-glibc-${version}/bin/*.so /usr/local/lib/自己構建擴展名,如果您想開發新功能,請參閱開髮指南。
gradle buildExtensiondist/${GhidraVersion}_${date}_BinAbsInspector.zip生成您可以以無頭模式,GUI模式或使用Docker運行binabsinspector。
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> - Ghidra Project Path。
<projectName> - Ghidra項目名稱。
<scriptParams> - 我們的分析儀的參數提供以下選項:
| 範圍 | 描述 |
|---|---|
[-K <kElement>] | KSET尺寸限制k |
[-callStringK <callStringMaxLen>] | 呼叫字符串最大長度k |
[-Z3Timeout <timeout>] | Z3超時 |
[-timeout <timeout>] | 分析超時 |
[-entry <address>] | 條目地址 |
[-externalMap <file>] | 外部功能模型配置 |
[-json] | 以JSON格式輸出 |
[-disableZ3] | 禁用Z3 |
[-all] | 啟用所有檢查器 |
[-debug] | 啟用調試日誌輸出 |
[-check "<cweNo1>[;<cweNo2>...]"] | 啟用特定的跳棋 |
與Ghidra Gui
Window -> Script Manager並查找BinAbsInspector.javaBinAbsInspector.java條目,在配置窗口中設置參數,然後單擊OK與Docker
git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $( pwd ) :/data/workspace bai " @@<script parameters> " -import < file >到目前為止,Binabsinspector支持以下檢查器:
該項目的結構如下,有關更多詳細信息,請參閱技術細節或中文版本文章。
├── main
│ ├── java
│ │ └── com
│ │ └── bai
│ │ ├── checkers checker implementatiom
│ │ ├── env
│ │ │ ├── funcs function modeling
│ │ │ │ ├── externalfuncs external function modeling
│ │ │ │ └── stdfuncs cpp std modeling
│ │ │ └── region memory modeling
│ │ ├── solver analyze core and grpah module
│ │ └── util utilities
│ └── resources
└── test
您也可以使用gradle javadoc構建Javadoc,將在./build/docs/javadoc中生成API文檔。
我們利用Ghidra作為我們的基礎,並經常利用Jimmutable的收藏來提高性能。
在這裡,我們要感謝他們的巨大幫助!