LLM 지원 리버스 엔지니어링을 위한 Ollama API 상호 작용 Ghidra 스크립트.
이게 뭔가요?
이 스크립트는 Ollama의 API와 상호 작용하여 LLM(대형 언어 모델)과 상호 작용합니다. Ollama API를 활용하여 Ghidra를 떠나지 않고도 다양한 리버스 엔지니어링 작업을 수행합니다. Ollama의 로컬 및 원격 인스턴스를 모두 지원합니다. 이 스크립트는 GptHidra에서 영감을 받았습니다.
지원되는 모델
이 스크립트는 Ollama가 지원하는 모든 모델을 지원합니다.
Ollama는 최근 HuggingFace에서 GGUF 형식으로 사용 가능한 모든 모델에 대한 지원을 추가했습니다. 예:
ollama run hf.co/arcee-ai/SuperNova-Medius-GGUF
전제 조건
올라마 설정
llama3.1:8b
Ollama 호환 모델로 자유롭게 교체하세요.
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b
이제 준비가 끝났습니다. localhost:11434
요청을 처리할 준비가 되었습니다.
참고: 이 스크립트는 원격 인스턴스도 지원하며 첫 번째 구성 중에 IP 주소와 포트를 설정합니다.
그것은 무엇을 할 수 있습니까?
- 현재 디컴파일러 창에 있는 함수를 설명해보세요
- 현재 기능의 이름을 제안합니다. 이 기능이 활성화된 경우 자동으로 기능 이름이 지정됩니다.
- 권장 설명으로 현재 함수를 다시 작성합니다.
- 함수/매개변수/변수 이름을 개선하고 주석을 추가하여 현재 함수를 완전히 다시 작성합니다.
- 사용자는 기능에 대해 질문할 수 있습니다.
- 버그 찾기/현재 기능의 잠재적인 취약점 제안(모든 것을 다뤘는지 확인하기 위한 것보다 더 나아가 일부 제안은 컨텍스트가 없기 때문에 멍청합니다)
- 이 LeafBlowerLeafFunctions.py Ghidra 스크립트의 수정된 버전을 사용하여 제거된 기호가 있는 바이너리에서 strcpy , memcpy , strlen 등과 같은 잠재적인 '리프' 함수 분석을 자동화하고, 활성화된 경우 자동 이름 변경
- 목록 창에서 현재 선택된 단일 조립 지침을 설명하십시오.
- 목록 창에서 현재 선택된 여러 조립 지침을 설명합니다.
- 질문을 위한 일반적인 프롬프트 입력(Google을 사용하지 않고 간단한 작업에 좋음)
구성 옵션
다음 구성 옵션을 사용할 수 있으며 처음 실행 시 구성할 수 있습니다.
- 서버 IP : 원격 인스턴스를 사용하는 경우 원격 인스턴스의 IP로 설정하고, 그렇지 않으면
localhost
입력합니다. - 포트 : 인스턴스가 다른 포트에 있는 경우 여기에서 변경하세요. 기본값은
11434
입니다. - 구성표 : 인스턴스 구성 방식에 따라
http
또는 https
선택합니다. - 모델 : 분석에 사용하려는 모델을 선택하세요. 언제든지 변경할 수 있습니다.
- 프로젝트별 프롬프트 : 필요한 경우 모델에 추가 컨텍스트를 제공하는 데 사용됩니다.
- 응답 설명 : 일부 옵션은 응답을 기능 상단에 설명으로 저장합니다. 여기에서 활성화/비활성화할 수 있습니다.
- 자동 이름 바꾸기 : 일부 옵션은 응답을 기반으로 기능 이름을 자동으로 바꾸려고 시도합니다. 여기에서 활성화/비활성화할 수 있습니다.
옵션 11 및 12를 사용하여 처음 실행 후 설정을 조정할 수 있습니다.
용법
- GhidrOllama.py 스크립트와 ghidrollama_utils 디렉토리를 Ghidra 스크립트 디렉토리(보통
~/ghidra_scripts
)에 배치합니다. - LLM에 제공할 함수/명령어를 찾으세요.
- 스크립트 관리자 창에서 스크립트 실행
- 스크립트를 처음 실행하는 경우 초기 구성을 완료합니다(나중에 변경될 수 있음).
- 기능/명령을 분석할 방법을 선택하세요.
- 출력이 콘솔에 인쇄될 때까지 기다립니다. (대기 시간은 호스트의 모델 및 사양에 따라 다릅니다.)
달리는 방법
매번 이 스크립트를 실행하기 위해 스크립트 창에 들어가는 것이 불편한데, 다음과 같은 방법으로 쉽게 스크립트를 실행할 수 있습니다.
- 키 바인딩 : 이 스크립트의 기본 키 바인딩은 Q 입니다.
- 도구 모음 : 도구 모음의 작은 아이콘을 클릭하여 스크립트를 실행할 수 있습니다.
키바인딩
활성화하려면 Ghidra 스크립트 디렉터리 목록에 스크립트를 추가한 후 목록에서 스크립트를 찾으세요. 결과를 마우스 오른쪽 버튼으로 클릭하고 "키 바인딩 할당"을 선택합니다. 키를 묻는 메시지가 나타나면 q 를 입력합니다.
툴바
도구 모음 아이콘을 활성화하려면 스크립트 관리자에서 스크립트를 찾은 다음 첫 번째 열( 도구 모음 열)에 있는 확인란을 클릭하세요. 도구 모음에 GhidrOllama 아이콘이 나타납니다.
메모
- 분석은 모델만큼만 우수하다는 점은 주목할 가치가 있습니다. 이 스크립트는 기본적으로 모델과 Ghidra를 연결합니다.
- 모델이 좋을수록(매개변수가 많을수록, 속도가 느려질수록) 분석이 더 포괄적이고 정확해집니다(대부분의 경우!).
- 기능에 대한 빠른 개요를 원한다면 llama3.1:8b 가 빠르고 적절한 분석을 제공합니다.
- 큰 함수와 낮은 컨텍스트 모델에 주의하세요. 함수가 컨텍스트 창에 비해 너무 크면 모델이 완전한 횡설수설로 응답합니다(전혀 응답하는 경우).
기능 분석 예
다음은 제거된 기호가 있는 Ghidra 디컴파일 창에서 볼 수 있는 strchr() 의 구현입니다.