
IDA प्लगइन जो रिवर्स-इंजीनियरिंग को गति देने के लिए भाषा मॉडल से पूछताछ करता है
Gepetto एक Python प्लगइन है जो IDA Pro (≥ 7.6) द्वारा डीकंपाइल किए गए फ़ंक्शंस को अर्थ प्रदान करने के लिए विभिन्न बड़े भाषा मॉडल का उपयोग करता है। यह उनका उपयोग यह समझाने के लिए कर सकता है कि कोई फ़ंक्शन क्या करता है, और उसके वेरिएबल्स का स्वचालित रूप से नाम बदलने के लिए भी। यहाँ एक सरल उदाहरण दिया गया है कि यह कुछ ही सेकंड में क्या परिणाम प्रदान कर सकता है:

Gepetto को इंस्टॉल करने का सबसे आसान तरीका Hex-Rays CLI टूल (hcli) का उपयोग करना है:
pip install ida-hcli
hcli plugin install gepetto
यह स्वचालित रूप से प्लगइन को आपकी IDA उपयोगकर्ता निर्देशिका में इंस्टॉल कर देगा।
वैकल्पिक रूप से, आप प्लगइन को मैन्युअल रूप से इंस्टॉल कर सकते हैं:
gepetto.py, साथ ही gepetto/ फ़ोल्डर) को अपने IDA प्लगइन्स फ़ोल्डर ($IDAUSR/plugins) में डालें।%APPDATA%\Hex-Rays\IDA Pro\plugins\~/.idapro/plugins/~/.idapro/plugins/Computer\HKEY_CURRENT_USER\Software\Hex-Rays\IDA (Windows पर डिफ़ॉल्ट: %LOCALAPPDATA%\Programs\Python\Python39)।[/path/to/python] -m pip install -r requirements.txt
Gepetto अपना कॉन्फ़िगरेशन आपकी IDA उपयोगकर्ता निर्देशिका में रखता है, ताकि यह प्लगइन अपग्रेड के बाद भी बना रहे:
%APPDATA%\Hex-Rays\IDA Pro\cfg\gepetto\config.ini~/.idapro/cfg/gepetto/config.iniप्लगइन पहली बार चलने पर gepetto/config.ini को वहाँ कॉपी करता है और कंसोल पर
आपको पथ बताता है। उसके बाद, प्लगइन के साथ भेजी गई प्रति केवल एक टेम्पलेट है —
अपनी उपयोगकर्ता निर्देशिका में मौजूद प्रति को संपादित करें। स्थान को पूरी तरह
ओवरराइड करने के लिए GEPETTO_CONFIG_DIR सेट करें।
उस फ़ाइल में अपनी API कुंजियाँ जोड़ें, या उन्हें उसमें नामित पर्यावरण चरों के माध्यम से प्रदान करें। OpenAI के लिए, कुंजी इस पृष्ठ पर बनाई जा सकती है। कृपया ध्यान दें कि API क्वेरी आमतौर पर मुफ़्त नहीं होती हैं (हालाँकि बहुत महँगी भी नहीं) और आपको संबंधित प्रदाता के साथ भुगतान विधि सेट अप करनी होगी।
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) कॉल करने योग्य (callable) को उजागर करें:
[project.entry-points."gepetto.providers"]
myprovider = "myprovider:MyProvider"
providers/ में मौजूद फ़ाइलें IDA शुरू होने पर मनमाना Python निष्पादित करती हैं। यह विश्वास का स्तर किसी भी IDA प्लगइन के समान ही है, लेकिन केवल उन्हीं providers को इंस्टॉल करें जिन पर आप भरोसा करते हैं।
एक बार प्लगइन ठीक से इंस्टॉल हो जाने के बाद, आप इसे IDA की pseudocode विंडो के context menu से लॉन्च कर सकते हैं, जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है:

Edit > Gepetto मेनू से Gepetto द्वारा समर्थित मॉडलों के बीच स्विच करें:

Gepetto एक CLI इंटरफ़ेस भी प्रदान करता है जिसका उपयोग आप सीधे IDA से LLM से प्रश्न पूछने के लिए कर सकते हैं। सुनिश्चित करें कि
input bar में Gepetto चयनित हो:

निम्नलिखित हॉटकी उपलब्ध हैं:
Ctrl + Alt + GCtrl + Alt + KCtrl + Alt + Rप्रारंभिक परीक्षण से पता चलता है कि बेहतर नामों का अनुरोध करना तब बेहतर काम करता है जब आप पहले फ़ंक्शन की व्याख्या मांगते हैं – मेरा अनुमान है कि ऐसा इसलिए है क्योंकि तब मॉडल अधिक सटीक सुझाव देने के लिए अपनी ही टिप्पणी का उपयोग करता है। AI के उत्तरों में यादृच्छिकता का एक तत्व होता है। यदि किसी कारणवश आपको प्राप्त प्रारंभिक उत्तर उपयुक्त न लगे, तो आप हमेशा कमांड को फिर से चला सकते हैं।