
Binary Ninja용 플러그인으로, 로컬 Ollama 모델을 통합하여 디컴파일된 HLIL 코드에서 함수와 변수의 이름을 바꿉니다. 분석을 완전히 로컬 및 오프라인으로 유지하여 개인정보를 보호합니다.
작성자: Austin Haggard
Binary Ninja Ollama는 자체 호스팅 ollama 서버와 통합하여 AI로 함수와 변수의 이름을 바꿔줍니다.
Ollama는 오픈 소스 AI 모델을 내려받아 로컬에서 실행할 수 있게 해주는 도구입니다. 일부 모델은 막대한 컴퓨팅 성능을 요구하지만, 다른 모델은 개인 노트북에서도 실행할 수 있습니다. 선택하는 모델에 따라 결과는 크게 달라질 수 있습니다 :).
사이드킥(sidekick)/openai 대신 이 플러그인을 사용하는 이유는 무엇일까요?
이 플러그인은 Ollama를 Binary Ninja와 통합하며 아래 나열된 작업을 지원합니다:
이 플러그인을 독립형 플러그인으로 설치하려면 Binary Ninja의 플러그인 경로에 배치(또는 심볼릭 링크)하면 됩니다. 기본 경로는 Vector 35의 문서에 자세히 설명되어 있습니다.
pip3 install ollama로 설치된 ollama이 플러그인을 사용하려면 자신만의 ollama 서버에 접근하거나 호스팅하고, 사용하고 싶은 모델을 다운로드해야 합니다.
https://ollama.com의 지침에 따라 서버를 설정하고 시도해 볼 모델을 내려받으세요. 완료되면 서버가 자동으로 시작되며 localhost:11434로 접근할 수 있습니다.
"모든 함수 변수 이름 바꾸기" 옵션은 함수 내 모든 변수를 파싱하고 다음 프롬프트를 기반으로 이름을 바꾸려고 시도합니다:
prompt = (
f"In one word, what should the variable '{variable}' be named in the below Function? "
f"The name must meet the following criteria: all lowercase letters, usable in Python code"
)

"모든 함수 이름 바꾸기" 옵션은 binaryview 내의 모든 함수를 크기순(작은 것부터 큰 것까지)으로 순회하며 다음 프롬프트를 기반으로 이름을 바꿉니다:
prompt = (
f"Given the following HLIL decompiled code snippet, provide a Python-style function name that describes what the code is doing. "
f"The name must meet the following criteria: all lowercase letters, usable in Python code, with underscores between words. "
f"Only return the function name and no other explanation or text data included."
)

대상 함수의 이름을 바꾸는 것은 모든 함수 이름 바꾸기와 동일한 프롬프트를 사용하지만, 플러그인을 실행할 때 선택한 함수로 제한됩니다.
대상 변수의 이름을 바꾸는 것은 모든 변수 이름 바꾸기와 동일한 프롬프트를 사용하지만, 플러그인을 실행할 때 선택한 함수로 제한됩니다.
설정은 Binary Ninja를 처음 시작한 후 첫 번째 이름 바꾸기 작업을 호출할 때, 또는 수동으로 트리거할 때 실행됩니다. 적용된 설정은 Binary Ninja 세션 내에서 유지됩니다.
설정 창에서는 ollama에서 사용할 IP, 포트 및 모델을 설정할 수 있습니다. 다운로드된 모델만 선택할 수 있습니다.

포함되지 않았지만 관심 있는 기능이 있나요?
아이디어:
이 플러그인은 MIT 라이선스로 배포됩니다.