
बहु-उपकरण रिवर्स इंजीनियरिंग सहयोग समाधान।

CollaRE सहयोगी रिवर्स इंजीनियरिंग के लिए एक उपकरण है जिसका उद्देश्य उन टीमों को, जिन्हें किसी प्रोजेक्ट के दौरान एक से अधिक उपकरण का उपयोग करने की आवश्यकता होती है, फ़ाइलों को किसी अलग स्थान पर साझा किए बिना सहयोग करने में सक्षम बनाना है। इसमें एक बहुत ही सरल उपयोगकर्ता प्रबंधन भी शामिल है और इस प्रकार इसका उपयोग मल्टी-प्रोजेक्ट सर्वर के रूप में किया जा सकता है जहाँ विभिन्न टीमें विभिन्न प्रोजेक्ट्स पर काम करती हैं।
उपकरण का बैक-एंड एक सरल Flask app है जिसके सामने Docker में चलने वाला nginx होता है जो फ़ाइलों और प्रासंगिक डेटा रखने वाले JSON आधारित मैनिफेस्ट के साथ काम करता है। फ्रंट-एंड एक PyQT आधारित GUI उपकरण है जिसका सरल इंटरफ़ेस प्रोजेक्ट्स के प्रबंधन और बाइनरी फ़ाइलों तथा उनके संबंधित रिवर्स इंजीनियरिंग डेटाबेस के साथ काम करने की अनुमति देता है। अभी तक यह उपकरण Binary Ninja, Cutter (Rizin), Ghidra, Hopper Dissassembler, IDA, JEB और Android Studio (Decompiled by JADX) का समर्थन करता है। कार्यान्वयन को इन उपकरणों की आंतरिक कार्यप्रणाली से जितना संभव हो उतना अलग रखा गया है ताकि किसी भी API परिवर्तन से समस्याओं से बचा जा सके और इस प्रकार यह प्लगइन के रूप में सीधे उन उपकरणों में एकीकृत नहीं होता है (नीचे वर्णित डेटा माइग्रेशन प्लगइन्स को छोड़कर)। कार्य पूरी तरह से इन उपकरणों द्वारा उत्पादित फ़ाइलों के प्रबंधन पर आधारित है (शाब्दिक रूप से केवल प्रसिद्ध फ़ाइल एक्सटेंशन पर आधारित) और सरल SVN-शैली check-out और check-in संचालन पर।
इस रिपॉजिटरी से नवीनतम बाइनरी रिलीज़ प्राप्त करें या रिपो को क्लोन करें और Linux पर sudo python3 setup.py install चलाएँ या Windows पर कमांड लाइन का उपयोग करें और python3 setup.py install चलाएँ। Linux पर यह उपकरण को PATH में स्थापित करेगा और आप इसे केवल collare कमांड के साथ चला सकेंगे। Windows पर यह फ़ाइल को C:\Users\<USERNAME>\AppData\Local\Programs\Python\<PYTHON_VERSION>\Scripts\collare.exe में रखेगा (यह इस बात पर निर्भर करता है कि आपने Python कैसे स्थापित किया है)।
Gnome आधारित डेस्कटॉप UI के लिए आप निम्न desktop फ़ाइल का उपयोग कर सकते हैं (फ़ाइलों के पथ CollaRE और Python के संस्करण के आधार पर भिन्न हो सकते हैं):
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=CollaRE
Exec=/usr/local/bin/collare
Icon=/usr/local/lib/python3.8/dist-packages/collare-1.2-py3.8.egg/collare/icons/collare.png
Terminal=false
Cutter के लिए समर्थन सक्षम करने के लिए अपने पथ में एक फ़ाइल Cutter जोड़ें (जब आप cmd/terminal खोलते हैं तो Cutter लिखने से एप्लिकेशन प्रारंभ होना चाहिए)।
Cutter (rizin) प्रोजेक्ट्स को सहेजते समय आपको मैन्युअल रूप से .rzdb जोड़ना होगा। उस एक्सटेंशन को न हटाएँ जो फ़ाइल में पहले से है (उदाहरण के लिए exe या so)।
Binary Ninja के लिए समर्थन सक्षम करने के लिए अपने पथ में एक फ़ाइल binaryninja जोड़ें (जब आप cmd/terminal खोलते हैं तो binaryninja लिखने से एप्लिकेशन प्रारंभ होना चाहिए)।
Binary Ninja डिफ़ॉल्ट रूप से फ़ाइल एक्सटेंशन हटा देता है, हालाँकि उपकरण इसका ध्यान रखता है इसलिए मूल फ़ाइल एक्सटेंशन को मैन्युअल रूप से वापस जोड़ने की आवश्यकता नहीं है। प्रोजेक्ट्स को डिफ़ॉल्ट पथ में वैसे ही सहेजना स्थानीय bndb डेटाबेस को सफलतापूर्वक पुश करने के लिए पर्याप्त है।
Hopper Disassembler के लिए समर्थन सक्षम करने के लिए अपने पथ में एक फ़ाइल Hopper जोड़ें (जब आप cmd/terminal खोलते हैं तो Hopper लिखने से एप्लिकेशन प्रारंभ होना चाहिए)।
Hopper डिफ़ॉल्ट रूप से फ़ाइल एक्सटेंशन हटा देता है, हालाँकि उपकरण इसका ध्यान रखता है इसलिए मूल फ़ाइल एक्सटेंशन को मैन्युअल रूप से वापस जोड़ने की आवश्यकता नहीं है। प्रोजेक्ट्स को केवल Ctrl+S के साथ सहेजना स्थानीय hop डेटाबेस को सफलतापूर्वक पुश करने के लिए पर्याप्त है।
JEB के लिए समर्थन सक्षम करने के लिए अपने पथ में एक फ़ाइल jeb जोड़ें (जब आप cmd/terminal खोलते हैं तो jeb लिखने से एप्लिकेशन प्रारंभ होना चाहिए)। यह आपके OS के लिए डिफ़ॉल्ट रनर स्क्रिप्ट फ़ाइल का नाम बदलकर jeb करके किया जा सकता है (Windows के लिए यह वास्तव में jeb.bat होगा)।
IDA उपकरण के लिए समर्थन सक्षम करने के लिए अपने पथ में फ़ाइलें ida64 और ida जोड़ें (जब आप cmd/terminal खोलते हैं तो ida64/ida लिखने से एप्लिकेशन प्रारंभ होना चाहिए)।
इस उपकरण के लिए समर्थन सक्षम करने के लिए अपने पथ में एक फ़ाइल ghidraRun और analyzeHeadless (Windows के लिए .bat) जोड़ें (जब आप cmd/terminal खोलते हैं तो ghidraRun लिखने से एप्लिकेशन प्रारंभ होना चाहिए)। ध्यान दें कि analyzeHeadless Ghidra रूट निर्देशिका के support फ़ोल्डर में है इसलिए दोनों फ़ाइलों को समायोजित करने के लिए PATH को समायोजित करना सुनिश्चित करें।
Ghidra के साथ डेटाबेस को आरंभ करने की प्रक्रिया थोड़ी अधिक जटिल है क्योंकि कोई तरीका नहीं है जिससे Ghidra बिना प्रोजेक्ट बनाए) फ़ाइल को संसाधित कर सके। इसलिए Ghidra डेटाबेस (जिसे ghdb कहा जाता है) को पुश करने में सक्षम होने के लिए, जब भी स्वचालित प्रसंस्करण विफल होता है (मूल रूप से जब भी आपके द्वारा संसाधित की जाने वाली फ़ाइल ELF/PE नहीं होती है) तो आपको मैन्युअल रूप से एक प्रोजेक्ट बनाने के लिए संकेत दिया जाएगा और फिर gpr फ़ाइल का पथ निर्दिष्ट करें (उसके लिए खेद है)।
चूँकि रिवर्स इंजीनियरिंग प्रयासों के दौरान APK और JAR फ़ाइलों का अक्सर सामना होता है, CollaRE उपकरण इस प्रकार की फ़ाइलों के साथ काम करने का भी समर्थन करता है। इन उपकरणों के लिए समर्थन सक्षम करने के लिए यह सुनिश्चित करना आवश्यक है कि फ़ाइलें android-studio और jadx दोनों पथ में हों (जब आप cmd/terminal खोलते हैं तो android-studio/jadx लिखने से एप्लिकेशन प्रारंभ होना चाहिए)। JADX उपकरण का उपयोग JAR/APK फ़ाइल का डीकंपिलेशन करने के लिए किया जाता है और Android Studio का उपयोग परिणामी फ़ाइलों को खोलने के लिए किया जाता है। ध्यान दें कि Android Studio का उपयोग वैकल्पिक है क्योंकि आप Gradle प्रोजेक्ट्स को संभालने वाले किसी भी अन्य उपकरण को android-studio कमांड के अंतर्गत उपनाम (alias) कर सकते हैं (जैसे IntelliJ IDEA)।
सर्वर पक्ष को उसकी अपनी readme फ़ाइल में बताए अनुसार तैनात करने के बाद, उपयोग किए गए प्रमाणपत्र फ़ाइल को एप्लिकेशन के सभी उपयोगकर्ताओं को वितरित करना आवश्यक है साथ ही Admin टैब के माध्यम से अन्य उपयोगकर्ता खाते बनाने के लिए डिफ़ॉल्ट admin खाते का admin पासवर्ड के साथ उपयोग करें (admin उपयोगकर्ता का पासवर्ड बदलना न भूलें)। जब उपयोगकर्ता कॉन्फ़िगर हो जाते हैं तो कोई भी अपने स्वयं के प्रोजेक्ट बना सकता है और उपकरण के साथ काम करना शुरू कर सकता है।
प्रोजेक्ट बनाने के लिए उपयोगकर्ता को पहले URL, क्रेडेंशियल दर्ज करके और सर्वर की पहचान सत्यापित करने के लिए एक प्रमाणपत्र प्रदान करके दूरस्थ सर्वर पर प्रमाणित करना होगा। उसके बाद, स्थिति Connected में बदल जाएगी और मौजूदा प्रोजेक्ट्स का चयन या विलोपन करना या केवल नाम दर्ज करके (केवल अल्फ़ान्यूमेरिक वर्ण और _) और प्रोजेक्ट में भाग लेने वाले उपयोगकर्ताओं का चयन करके एक नया प्रोजेक्ट बनाना संभव है (बाद में Admin टैब में बदला जा सकता है)। ध्यान दें कि प्रोजेक्ट बनाने वाला उपयोगकर्ता स्वचालित रूप से उपयोगकर्ता सूची में जोड़ दिया जाता है इसलिए आपको स्वयं का चयन करने की आवश्यकता नहीं है।

एक बार जब आप Project View टैब पर हों तो आप नए फ़ोल्डर बना सकते हैं (केवल अल्फ़ान्यूमेरिक वर्ण और _, क्षमा करें) और फ़ाइलों (या फ़ोल्डरों) को अपलोड करने के लिए ड्रैग और ड्रॉप का उपयोग कर सकते हैं।
