
CUDA-आधारित GPU के वर्चुअल इंस्ट्रक्शन सेट आर्किटेक्चर PTX को रिवर्स इंजीनियर करने के लिए Binary Ninja प्लगइन।
लेखक: Nicolò Altamura
Binary Ninja के माध्यम से PTX कोड का अन्वेषण करें
ptxNinja Binary Ninja के लिए एक आर्किटेक्चर प्लगइन है जो PTX को लक्षित करता है, जो CUDA-आधारित GPU की वर्चुअल आर्किटेक्चर की भाषा है। यह आपको निम्नलिखित की अनुमति देता है:
प्लगइन को Binary Ninja के प्लगइन मैनेजर का उपयोग करके इंस्टॉल किया जा सकता है।
मैन्युअल इंस्टॉलेशन के लिए, Binary Ninja के प्लगइन फ़ोल्डर में इन चरणों का पालन करें:
git clone https://github.com/seekbytes/ptxninja.git
cd ptxninja
# optionally: use a virtual environment
python -m venv ptxninja-env
source ptxninja-env/bin/activate
# install requirements
pip install ptx-parser
यदि आप वर्चुअल एनवायरनमेंट का उपयोग करते हैं, तो आपको Binary Ninja सेटिंग्स में site-packages पथ को मैन्युअल रूप से सेट करना होगा।
यदि आप सुनिश्चित नहीं हैं कि कहाँ से शुरू करें, या आपने कभी PTX फ़ाइल नहीं देखी है, तो आप examples/ डायरेक्टरी के अंतर्गत कुछ टॉय कर्नेल देखना चाह सकते हैं। इनमें शामिल हैं:
PTX एक टेक्स्ट फ़ॉर्मेट भाषा पर आधारित है और nvdisasm/cuobjdump के आउटपुट में पहले से ही बहुत सारी जानकारी होती है जो बाइनरीज़ में डाली जाती है। टेक्स्ट से निपटने के लिए पार्सर का परीक्षण करने हेतु एक सटीक व्याकरण बनाना आवश्यक है, हालाँकि कुछ सीमाएँ हैं:
atom) पूरी तरह से समर्थित नहीं हैंcuobjdump/cufilt beautification अभी तक लागू नहीं हैअधिक जानकारी के लिए, Nicolò Altamura (@nicolodev) से संपर्क करें।