
डिसअसेंबल किए गए कोड में अंतर और समानताएं जल्दी से खोजें

कॉपीराइट 2011-2026 Google LLC.
इस रिपॉजिटरी में BinDiff स्रोत कोड है। BinDiff एक ओपन-सोर्स तुलना उपकरण है जो बाइनरी फ़ाइलों के लिए है, ताकि डिस्सेम्बल किए गए कोड में अंतर और समानताएँ तुरंत मिल सकें।
BinDiff एक ओपन-सोर्स बाइनरी फ़ाइल तुलना उपकरण है, जो भेद्यता शोधकर्ताओं और इंजीनियरों को डिस्सेम्बल किए गए कोड में अंतर और समानताएँ जल्दी खोजने में सहायता करता है।
BinDiff के साथ, शोधकर्ता विक्रेता-प्रदत्त पैच में भेद्यता के सुधारों की पहचान और अलग कर सकते हैं। इसका उपयोग एक ही बाइनरी के कई संस्करणों के डिस्सेम्बली के बीच प्रतीकों और टिप्पणियों को पोर्ट करने के लिए भी किया जा सकता है। इससे समय के साथ परिवर्तनों को ट्रैक करना आसान हो जाता है और संगठनों को विश्लेषण परिणामों को बनाए रखने और बाइनरी विश्लेषकों के बीच ज्ञान हस्तांतरण को सक्षम बनाता है।
यदि आप BinDiff का उपयोग शुरू करना चाहते हैं, तो रिलीज़ पृष्ठ से पूर्व-निर्मित इंस्टॉलेशन पैकेज डाउनलोड करें।
नोट: BinDiff एक अलग डिस्सेम्बलर पर निर्भर करता है। बॉक्स के बाहर, यह IDA Pro, Binary Ninja और Ghidra के लिए समर्थन के साथ आता है। डिस्सेम्बलर पृष्ठ समर्थित कॉन्फ़िगरेशन को सूचीबद्ध करता है।
मौजूदा मैनुअल का एक उपसमूह docs/ निर्देशिका में उपलब्ध है।
BinDiff में निम्नलिखित घटक शामिल हैं:
cmake - बाहरी निर्भरताएँ घोषित करने वाली CMake बिल्ड फ़ाइलेंfixtures - BinDiff कोर इंजन का परीक्षण करने के लिए परीक्षण फ़ाइलों का संग्रहida - IDA Pro डिस्सेम्बलर के साथ एकीकरणjava - Java स्रोत कोड। इसमें BinDiff दृश्य अंतर उपयोगकर्ता इंटरफ़ेस और इसकी संबंधित उपयोगिता लाइब्रेरी शामिल है।match - BinDiff कोर इंजन के लिए मिलान एल्गोरिदमpackaging - इंस्टॉलेशन पैकेज के लिए पैकेज स्रोतtools - सहायक निष्पादन योग्य जो उत्पाद के साथ शिप किए जाते हैंनीचे दिए गए निर्देश देशी कोड और Java-आधारित घटकों दोनों के निर्माण के लिए पर्याप्त होने चाहिए।
बाद में विस्तृत बिल्ड निर्देश जोड़े जाएंगे। इसमें इंस्टॉलेशन पैकेज बनाने के लिए तैयार Dockerfiles और स्क्रिप्ट शामिल हैं।
BinDiff उन घटकों के लिए अपनी बिल्ड फ़ाइलें उत्पन्न करने के लिए CMake का उपयोग करता है जो देशी C++ कोड से बने होते हैं।
निम्नलिखित बिल्ड निर्भरताएँ आवश्यक हैं:
सामान्य बिल्ड चरण Windows, Linux और macOS पर समान हैं। निम्नलिखित Linux के लिए कमांड दिखाता है।
इसके बाद, बिल्ड निर्देशिका कॉन्फ़िगर करें और बिल्ड फ़ाइलें उत्पन्न करें:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
अंत में, वास्तविक बिल्ड को लागू करें। बाइनरी build/ में रखी जाएंगी:
cmake --build build --config Release
(cd build; ctest --build-config Release --output-on-failure)
cmake --install build --config Release
IDA के बिना निर्माण करने के लिए, ऊपर दिए गए कॉन्फ़िगरेशन चरण को बदलें:
cmake -S . -B build/out -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DBINEXPORT_ENABLE_IDAPRO=OFF
Java-आधारित GUI बनाने के लिए ग्राफ़ प्रदर्शन और लेआउट के लिए वाणिज्यिक तृतीय-पक्ष ग्राफ़ विज़ुअलाइज़ेशन लाइब्रेरी yFiles की आवश्यकता होती है। यह लाइब्रेरी अत्यधिक शक्तिशाली है और आसानी से बदली जाने योग्य नहीं है।
निर्माण के लिए, BinDiff Gradle 6.x और Java 11 LTS का उपयोग करता है। इसे स्थापित करने के तरीके के लिए इसकी स्थापना मार्गदर्शिका देखें।
मान लिया कि आप yFiles लाइसेंस धारक हैं, तो YFILES_DIR पर्यावरण चर को yFiles y.jar और ysvg.jar वाली निर्देशिका पर सेट करें।
नोट: BinDiff अभी भी yFiles की पुरानी 2.x शाखा का उपयोग करता है।
फिर बाहरी निर्भरताएँ डाउनलोड करने और निर्माण करने के लिए Gradle को लागू करें:
Windows:
set YFILES_DIR=<path\to\yfiles_2.17>
cd java
gradle shadowJar
Linux या macOS:
export YFILES_DIR=<path/to/yfiles_2.17>
cd java
gradle shadowJar
इसके बाद java उप-निर्देशिका में ui/build/libs निर्देशिका में स्व-निहित bindiff-ui-all.jar कलाकृति होनी चाहिए, जिसे मानक java -jar कमांड का उपयोग करके चलाया जा सकता है।
BinDiff के पीछे के सामान्य विचारों को रेखांकित करने वाले मूल पेपर:
उसी समस्या स्थान में अन्य उपकरण:
BinDiff का उपयोग करने वाली परियोजनाएँ:
BinDiff Apache लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त है। अधिक जानकारी के लिए LICENSE देखें।
यदि आप योगदान देना चाहते हैं, तो पुल अनुरोध भेजने से पहले CONTRIBUTING.md पढ़ें। आप बग की रिपोर्ट भी कर सकते हैं या सुविधा अनुरोध दर्ज कर सकते हैं।