BinAbsInspector
v0.1
Binabsinspector (Binary Abstract Inspector)는 Keenlab에서 인큐베이션 된 장기 연구 프로젝트 인 Binaries의 자동화 된 역 엔지니어링 및 스캐닝 취약점을위한 정적 분석기입니다. 그것은 Ghidra의 지원으로 추상적 해석을 기반으로합니다. 어셈블리 대신 Ghidra의 PCode에서 작동합니다. 현재 X86, X64, ARMV7 및 AARCH64의 바이너리를 지원합니다.
z3-${version}-win/bin 을 가리키는 경로 환경 변수를 추가하십시오.z3-${version}-glibc-${version}/bin/*.so to /usr/local/lib/ 복사 할 수 있습니다.새로운 기능을 개발하려면 직접 확장을 구축하십시오. 개발 안내서를 참조하십시오.
gradle buildExtension 실행하십시오dist/${GhidraVersion}_${date}_BinAbsInspector.zip 에서 생성됩니다헤드리스 모드, GUI 모드 또는 Docker에서 Binabsinspector를 실행할 수 있습니다.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> - Ghidra 프로젝트 경로.
<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.java 찾으십시오.BinAbsInspector.java 항목을 두 번 클릭하고 구성 창에서 매개 변수를 설정하고 확인을 클릭하십시오.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을 구축 할 수 있습니다. API 문서는 ./build/docs/javadoc 에서 생성됩니다.
우리는 Ghidra를 기초로 사용하고 더 나은 성능을 위해 Jimmutable 컬렉션을 자주 활용합니다.
여기서 우리는 그들의 큰 도움에 감사하고 싶습니다!