
Ghidra के लिए कोड कवरेज अन्वेषण प्लगइन
Austin Peavy द्वारा विकसित - https://github.com/aus10pv
NCC Group Plc द्वारा ओपन सोर्स के रूप में जारी - https://www.nccgroup.com/
Apache 2.0 लाइसेंस के अंतर्गत जारी (अधिक जानकारी के लिए LICENSE देखें)

Cartographer, Ghidra के लिए एक कोड कवरेज मैपिंग प्लगइन है, जो शोधकर्ताओं को सोर्स कोड की आवश्यकता के बिना यह देखने में सक्षम बनाता है कि प्रोग्राम के कौन से हिस्से निष्पादित किए गए हैं।
Cartographer का नवीनतम स्थिर संस्करण Releases पृष्ठ से डाउनलोड किया जा सकता है।
File -> Install Extensions...प्लगइन लोड होने के बाद, कोड कवरेज डेटा के साथ काम करने के लिए CodeBrowser विंडो में अतिरिक्त नियंत्रण होंगे।
कोड कवरेज फ़ाइलें टूल्स मेनू के माध्यम से लोड की जा सकती हैं: Tools -> Code Coverage -> Load Code Coverage File(s)...
जब कोई कोड कवरेज फ़ाइल लोड की जाती है, तो सभी कवरेज डेटा तुरंत Listing दृश्य और Decompiler दृश्य में हाइलाइट हो जाता है।

प्रत्येक फ़ंक्शन के कवरेज डेटा के बारे में विस्तृत जानकारी Code Coverage विंडो में पाई जा सकती है।
Code Coverage विंडो को Window -> Code Coverage पर नेविगेट करके, या Windows पर Ctrl-Shift-C दबाकर (Mac पर Cmd-Shift-C) खोला जा सकता है।
यह विंडो प्रोग्राम में प्रत्येक फ़ंक्शन के बारे में विभिन्न विवरण दिखाती है:
किसी भी फ़ंक्शन पर क्लिक करने से Listing दृश्य और Decompiler दृश्य में उस विशिष्ट फ़ंक्शन पर नेविगेट किया जाएगा।

Filter इनपुट बॉक्स का उपयोग नाम से फ़ंक्शन खोजने के लिए किया जा सकता है।
कवरेज तालिका में प्रदर्शित किसी भी डेटा को कॉलम फ़िल्टर के रूप में उपयोग किया जा सकता है।

Code Coverage विंडो के निचले-दाएँ कोने में स्थित ड्रॉपडाउन का उपयोग लोड की गई कोड कवरेज फ़ाइलों के बीच जल्दी और आसानी से स्विच करने के लिए किया जा सकता है।

Code Coverage विंडो के नीचे स्थित टेक्स्ट बॉक्स का उपयोग लोड की गई कोड कवरेज फ़ाइलों पर तार्किक संचालन करने के लिए किया जा सकता है।
यह एक प्रोग्राम के विभिन्न रनों के बीच अंतर और समानताओं की जाँच करने के लिए अत्यंत उपयोगी हो सकता है।

नीचे तार्किक ऑपरेटर दिए गए हैं जिनका उपयोग एक्सप्रेशन पार्सर के भीतर किया जा सकता है।
&: दोनों कवरेज द्वारा निष्पादित केवल कोड प्राप्त करता है|: किसी भी कवरेज द्वारा निष्पादित कोई भी कोड प्राप्त करता है^: कवरेज के बीच भिन्न निष्पादित कोड केवल प्राप्त करता है-: बाएँ-हाथ वाले कवरेज के लिए अद्वितीय केवल निष्पादित कोड प्राप्त करता हैकवरेज को ड्रॉपडाउन मेनू में उनके वर्णानुक्रमिक आईडी द्वारा संदर्भित किया जाता है, जैसे A, B, XY, आदि।
प्रत्येक तार्किक ऑपरेशन को कोष्ठकों का उपयोग करके समूहीकृत किया जाता है, और एक्सप्रेशन किसी भी लंबाई या जटिलता के हो सकते हैं।
दोनों कवरेज A और B में निष्पादित कोड दिखाएँ:
A & B
कवरेज A और B के बीच भिन्न निष्पादित कोड दिखाएँ:
A ^ B
वह कोड दिखाएँ जो केवल B में निष्पादित किया गया था:
B - A
A और B में पाया गया सभी कवरेज डेटा संयोजित करें, फिर C से कोई भी अंतर खोजें:
(A | B) ^ C
स्रोत कोड से Cartographer बनाने के लिए Gradle का उपयोग किया जा सकता है।
Cartographer GitHub रिपॉजिटरी को क्लोन करें।
$ git clone https://github.com/nccgroup/Cartographer.git
रिपॉजिटरी में प्रवेश करें और gradle के साथ बनाएँ।
$ cd Cartographer
$ gradle -PGHIDRA_INSTALL_DIR=<ghidra_install_dir>
<ghidra_install_dir> को अपने स्थानीय Ghidra इंस्टॉलेशन पथ के साथ बदलें।निर्माण के बाद, प्लगइन ZIP फ़ाइल dist/ फ़ोल्डर में स्थित होगी।
यदि आपको Cartographer में कोई बग मिला है, तो कृपया GitHub के माध्यम से एक issue खोलें।
मूल रूप से Lighthouse से प्रेरित - https://github.com/gaasedelen/lighthouse