Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Gepetto — 리버스 엔지니어링 속도를 높이기 위해 언어 모델에 질의하는 IDA 플러그인 | Kitploit
도구/GitHubGitHub/justicerage/gepetto
Code AnalysisReverse EngineeringBinary AnalysisMachine LearningAI-Assisted Reversing
GitHubjusticerage/gepetto

Gepetto

리버스 엔지니어링 속도를 높이기 위해 언어 모델에 질의하는 IDA 플러그인

저장소 보기
3.5k332522개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Gepetto

Gepetto는 다양한 대규모 언어 모델을 사용하여 IDA Pro(≥ 7.6)로 디컴파일된 함수에 의미를 부여하는 Python 플러그인입니다. 이를 활용하여 함수가 수행하는 작업을 설명하고 변수 이름을 자동으로 바꿀 수 있습니다. 다음은 단 몇 초 만에 얻을 수 있는 결과의 간단한 예시입니다:

설정

hcli 사용 (권장)

Gepetto를 설치하는 가장 쉬운 방법은 Hex-Rays CLI 도구(hcli)를 사용하는 것입니다:

pip install ida-hcli
hcli plugin install gepetto

이렇게 하면 플러그인이 IDA 사용자 디렉터리에 자동으로 설치됩니다.

수동 설치

또는 플러그인을 수동으로 설치할 수 있습니다:

  1. 이 스크립트(gepetto.py와 gepetto/ 폴더)를 IDA 플러그인 폴더($IDAUSR/plugins)에 넣습니다.
  2. 플러그인 디렉터리 위치는 시스템에 따라 다릅니다:
    • Windows: %APPDATA%\Hex-Rays\IDA Pro\plugins\
    • macOS: ~/.idapro/plugins/
    • Linux: ~/.idapro/plugins/
  3. 필요한 패키지를 IDA의 Python 설치 환경에 설치합니다. IDA가 사용하는 인터프리터를 확인하려면 다음 레지스트리 키를 확인하십시오: Computer\HKEY_CURRENT_USER\Software\Hex-Rays\IDA (Windows 기본값: %LOCALAPPDATA%\Programs\Python\Python39).
  4. 해당 인터프리터로 다음을 실행하기만 하면 됩니다:
    [/path/to/python] -m pip install -r requirements.txt
    

구성

Gepetto는 IDA 사용자 디렉터리에 구성을 보관하므로 플러그인을 업그레이드해도 구성이 유지됩니다:

  • Windows: %APPDATA%\Hex-Rays\IDA Pro\cfg\gepetto\config.ini
  • macOS / Linux: ~/.idapro/cfg/gepetto/config.ini

플러그인이 처음 실행될 때 gepetto/config.ini를 해당 위치에 복사하고 콘솔에 경로를 알려줍니다. 그 이후에는 플러그인과 함께 배포되는 복사본은 템플릿일 뿐이므로, 사용자 디렉터리에 있는 파일을 편집하십시오. 위치를 완전히 재정의하려면 GEPETTO_CONFIG_DIR을 설정하십시오.

해당 파일에 API 키를 추가하거나, 파일에 명시된 환경 변수를 통해 키를 제공하십시오. OpenAI의 경우 이 페이지에서 키를 생성할 수 있습니다. API 쿼리는 일반적으로 무료가 아니며(그다지 비싸지는 않지만), 해당 제공업체에 결제 수단을 설정해야 합니다.

지원 모델

  • Anthropic
    • claude-opus-4-7
    • claude-sonnet-4-6
    • claude-haiku-4-5
  • OpenAI
    • gpt-5
    • gpt-5-mini
    • gpt-5-nano
    • gpt-4-turbo
    • gpt-4o
    • o4-mini
    • gpt-4.1
    • o3
    • o3-pro
  • Google Gemini
    • gemini-2.0-flash
    • gemini-2.5-pro
    • gemini-2.5-flash
    • gemini-2.5-flash-lite-preview-06-17
  • Azure OpenAI
    • gpt-35-turbo
    • gpt-35-turbo-1106
    • gpt-35-turbo-16k
    • gpt-4-turbo
    • gpt-4-turbo-2024-0409-gs
  • Ollama
    • Ollama를 통해 노출된 모든 로컬 모델 (Ollama가 실행 중이 아니면 표시되지 않음)
  • Groq
    • llama-3.1-70b-versatile
    • llama-3.2-90b-text-preview
    • mixtral-8x7b-32768
  • Together
    • mistralai/Mixtral-8x22B-Instruct-v0.1 (변수 이름 변경 미지원)
  • Novita AI
    • deepseek/deepseek-r1
    • deepseek/deepseek-v3
    • meta-llama/llama-3.3-70b-instruct
    • meta-llama/llama-3.1-70b-instruct
    • meta-llama/llama-3.1-405b-instruct
  • Kluster.ai
    • deepseek-ai/DeepSeek-R1
    • deepseek-ai/DeepSeek-V3-0324
    • google/gemma-3-27b-it
    • klusterai/Meta-Llama-3.1-8B-Instruct-Turbo
    • klusterai/Meta-Llama-3.1-405B-Instruct-Turbo
    • klusterai/Meta-Llama-3.3-70B-Instruct-Turbo
    • meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8
    • meta-llama/Llama-4-Scout-17B-16E-Instruct
    • Qwen/Qwen2.5-VL-7B-Instruct
  • LM Studio
    • LM Studio를 통해 노출된 모든 로컬 모델 (LM Studio Developer 서버가 실행 중이 아니면 표시되지 않음)

자체 제공업체 추가

Gepetto는 세 곳에서 제공업체를 로드하며, 메뉴 이름이 충돌할 경우 각각이 이전 것을 재정의합니다: gepetto/models/에 포함된 모듈, 그다음 $IDAUSR/cfg/gepetto/providers/의 모든 .py 파일, 그다음 gepetto.providers 엔트리 포인트를 광고하는 설치된 배포판입니다. 재정의는 콘솔에 알려지므로, 플러그인을 포크하지 않고도 내장 제공업체를 교체할 수 있습니다.

드롭인 제공업체는 내장 제공업체와 정확히 동일한 계약을 사용합니다. OpenAI 호환 엔드포인트의 경우 파일 전체는 다음과 같습니다:

import openai
import gepetto.config
import gepetto.models.model_manager
from gepetto.models.openai import GPT


class MyProvider(GPT):
    @staticmethod
    def get_menu_name() -> str:
        return "MyProvider"

    @staticmethod
    def supported_models():
        return ["my-model-v1"]

    @staticmethod
    def is_configured_properly() -> bool:
        return bool(gepetto.config.get_config("MyProvider", "API_KEY", "MYPROVIDER_API_KEY"))

    def __init__(self, model):
        try:
            super().__init__(model)
        except ValueError:
            pass  # No OpenAI key needed for this provider.
        self.model = model
        self.client = openai.OpenAI(
            api_key=gepetto.config.get_config("MyProvider", "API_KEY", "MYPROVIDER_API_KEY"),
            base_url="https://api.example.com/v1",
        )


gepetto.models.model_manager.register_model(MyProvider)

config.ini에 일치하는 [MyProvider] 섹션을 추가하고 IDA를 재시작하세요. 프로바이더는 로드 시점에 등록되므로, 새 키나 새 파일이 메뉴에 나타나려면 재시작이 필요합니다.

대신 패키지로 배포하려면 클래스나 register(register_model) 콜러블을 노출하세요:

[project.entry-points."gepetto.providers"]
myprovider = "myprovider:MyProvider"

providers/에 있는 파일들은 IDA가 시작될 때 임의의 Python을 실행합니다. 이는 다른 IDA 플러그인과 동일한 신뢰 수준이지만, 신뢰하는 provider만 설치하십시오.

사용법

플러그인이 올바르게 설치되면, 아래 스크린샷과 같이 IDA의 의사코드 창 컨텍스트 메뉴에서 플러그인을 호출할 수 있습니다:

Edit > Gepetto 메뉴에서 Gepetto가 지원하는 모델 간에 전환할 수 있습니다:

Gepetto는 또한 IDA에서 직접 LLM에 질문할 수 있는 CLI 인터페이스를 제공합니다. 입력 바에서 Gepetto를 선택해야 합니다:

단축키

다음 단축키를 사용할 수 있습니다:

  • 모델에게 함수 설명 요청: Ctrl + Alt + G
  • 모델에게 코드에 주석 추가 요청: Ctrl + Alt + K
  • 함수 변수에 대한 더 나은 이름 요청: Ctrl + Alt + R

초기 테스트 결과, 더 나은 이름을 요청하는 것은 먼저 함수 설명을 요청할 때 더 잘 작동합니다 – 이는 아마도 모델이 자신의 주석을 사용하여 더 정확한 제안을 하기 때문인 것으로 보입니다. AI의 응답에는 무작위성 요소가 있습니다. 어떤 이유로든 처음 받은 응답이 마음에 들지 않으면, 언제든지 명령을 다시 실행할 수 있습니다.

제한 사항

  • 이 플러그인은 작동하기 위해 HexRays 디컴파일러에 대한 접근이 필요합니다.
  • 지원되는 모든 LLM은 범용이므로 잘못된 결과를 낼 수 있습니다! 항상 반환된 결과에 비판적으로 접근하십시오!

번역

구성에서 로케일을 편집하여 Gepetto의 언어를 변경할 수 있습니다. 예를 들어, 플러그인을 프랑스어로 사용하려면 다음을 추가하기만 하면 됩니다:

[Gepetto]
LANGUAGE = "fr_FR"

선택한 로케일은 gepetto/locales의 폴더 이름과 일치해야 합니다. 원하는 언어를 사용할 수 없는 경우, 직접 추가하여 프로젝트에 기여할 수 있습니다! 원하는 로케일에 대한 새 폴더를 생성하고 (예: gepetto/locales/de_DE/LC_MESSAGES/), 업데이트된 .po 파일로 새 풀 리퀘스트를 열면 됩니다. 이 파일은 gepetto/locales/gepetto.pot를 복사하고 편집하여 생성할 수 있습니다(msgstr로 시작하는 모든 줄을 현지화된 버전으로 교체).

감사의 말

  • OpenAI, 말할 것도 없이 이 놀라운 모델들을 만들어 주셔서
  • Hex Rays, IDA 제작사로서 번개처럼 빠른 지원을 제공해 주셔서
  • Kaspersky, 초기에 이 프로젝트에 자금을 지원해 주셔서
  • HarfangLab, 현재 이 작업을 가능하게 해 주는 후원자로서
  • @vanhauser-thc, 자신의 포크를 통해 지원할 추가 모델과 제공자에 대한 아이디어를 기여해 주셔서
  • 번역에 기여해 주신 모든 분들: @seifreed, @kot-igor, @ruzgarkanar, @orangetw
도구 다운로드