इस प्रोजेक्ट के बारे में

dearxan एक लाइब्रेरी है जो Arxan (अब GuardIT) द्वारा बाइनरी में डाले गए चेकों के स्थिर और रनटाइम विश्लेषण तथा पैचिंग के लिए है। README के अनुसार, यह FromSoftware गेम्स में Arxan को पूरी तरह से निष्क्रिय कर सकता है: एक बार पैच लागू होने पर, कोई भी Arxan कोड (जैसे एंटी-डीबग और अखंडता जांच) नहीं चलता और एन्क्रिप्टेड फ़ंक्शन डिक्रिप्टेड रहते हैं। README एक चेतावनी नोट करता है: Arxan एंट्री पॉइंट स्टब्स को अभी भी चलना होता है। ये स्टब्स एंटी-डीबग जांच नहीं करते, लेकिन कुछ गेम्स में (जैसे Dark Souls Remastered) वे अखंडता जांच करते हैं और संशोधन पाए जाने पर गेम को क्रैश कर सकते हैं। इसे neuter_arxan को दिए गए कॉलबैक में हुक लगाकर कम किया जा सकता है। लेखक कहता है कि एक बार एंट्री पॉइंट स्टब्स का पूरी तरह से रिवर्स इंजीनियरिंग हो जाने पर यह आवश्यक नहीं रहेगा। README में सूचीबद्ध परीक्षित गेम्स: - Dark Souls Remastered - Dark Souls II SOTFS - Dark Souls III - Elden Ring - Armored Core VI - Elden Ring: Nightreign क्रेट केवल इन FromSoftware गेम्स के नवीनतम संस्करणों में Arxan वेरिएंट के खिलाफ परीक्षित है और अन्य डेवलपर्स द्वारा उपयोग किए गए Arxan कॉन्फ़िगरेशन के साथ काम नहीं कर सकता। योगदान स्वागत योग्य हैं। वर्णित उपयोग विकल्प: - Rust से disabler फीचर के साथ: Cargo.toml में dearxan जोड़ें और dearxan::disabler::neuter_arxan को एक बार कॉल करें, आदर्श रूप से गेम के एंट्री पॉइंट के निष्पादन से पहले। एक कॉलबैक परिणाम प्राप्त करता है और हुक स्थापित करने के लिए सुझाया गया स्थान है। - C++ से: Releases से स्थिर लाइब्रेरी डाउनलोड करें, शामिल Windows इम्पोर्ट लाइब्रेरीज़ के साथ लिंक करें, include/dearxan.h शामिल करें और dearxan::neuter_arxan कॉल करें। न्यूनतम समर्थित मानक C++14 है, C++17+ अनुशंसित है। - C से: समान लाइब्रेरी और हेडर, कॉलबैक के साथ dearxan_neuter_arxan कॉल करें। - अन्य भाषाओं से: include/dearxan.h से C बाइंडिंग उत्पन्न करें और dearxan_neuter_arxan कॉल करें। README चेतावनी देता है कि कई DLL इंजेक्टर या मॉड लॉन्चर प्रक्रिया को निर्माण पर सस्पेंड नहीं करते या गेम के एंट्री पॉइंट से पहले कोड चलने नहीं देते। क्रेट ऐसे लोडर्स का सर्वोत्तम प्रयास के आधार पर समर्थन करता है, लेकिन एंट्री पॉइंट से पहले मॉड लोड करने वाले का उपयोग दृढ़ता से अनुशंसित है। me3 के साथ संगत Souls गेम्स के लिए, क्रेट पहले से ही disable_arxan प्रोफ़ाइल विकल्प के माध्यम से उस मॉड लोडर में एकीकृत है, और यदि मॉड पहले से me3 पर निर्भर है तो उसका उपयोग अनुशंसित है। कस्टम पैचर लिखने के लिए (उदाहरण के लिए डिस्क पर एक निष्पादन योग्य पैच करने के लिए), README कहता है कि आपको dearxan::analysis::analyze_all_stubs या समकक्ष API के साथ Arxan स्टब्स का विश्लेषण करना होगा, परिणामी StubInfo मानों को dearxan::patch::ArxanPatch::build_from_stubs को पास करना होगा, और पैच मैन्युअल रूप से लागू करने होंगे। इसे तब तक दोहराया जाना चाहिए जब तक कोई नया स्टब न मिले, क्योंकि कुछ गेम्स में एन्क्रिप्टेड स्टब्स होते हैं जो पहले विश्लेषण पास में नहीं मिलते। लाइव निष्पादन योग्य छवि के लिए, यह महत्वपूर्ण है कि Arxan एंट्री पॉइंट स्टब को बुलाया गया हो; FromSoftware बाइनरीज़ SteamStub में भी लिपटी हो सकती हैं। README Arxan सुविधाओं का वर्णन करता है जिसमें निर्देश उत्परिवर्तन और नियंत्रण प्रवाह अस्पष्टता, संवेदनशील फ़ंक्शनों का आराम पर एन्क्रिप्शन और निष्पादन समय पर डिक्रिप्शन, एंटी-डीबग जांच, और अखंडता जांच शामिल हैं जो बफर में फ्लैग लिख सकते हैं, स्टैक या नियंत्रण प्रवाह भ्रष्टाचार के माध्यम से गेम को क्रैश कर सकते हैं, या फ़ंक्शन कोड की मरम्मत कर सकते हैं। Arxan तर्क मनमाने गेम फ़ंक्शनों में डाले गए स्टब्स में निहित है; ये संदर्भ सहेजते हैं, Arxan तर्क चलाते हैं, संदर्भ बहाल करते हैं और वापस कूदते हैं। क्रेट इन स्टब्स को ढूंढकर और उनके नियंत्रण प्रवाह ग्राफ़ का दौरा करके Arxan को अक्षम करता है। यह नियंत्रण प्रवाह अस्पष्टता से निपटने के लिए आंशिक निर्देश अनुकरण और शाखाओं पर प्रोग्राम स्थिति को फोर्क करता है, फिर पैच निकालने के लिए स्टब संरचना का विश्लेषण करता है। ये आमतौर पर एक ट्रैम्पोलिन के लिए जंप हुक होते हैं जो स्टब के स्टैक को ठीक करता है, और कभी-कभी डिक्रिप्टेड कोड क्षेत्रों को निकालकर उनकी सामग्री सीधे लिखना शामिल होता है। फीचर फ्लैग: - disabler (डिफ़ॉल्ट): एक पैचर प्रदान करता है जो neuter_arxan के माध्यम से Arxan को पूरी तरह से अक्षम करता है। - rayon (डिफ़ॉल्ट): rayon का उपयोग करके स्टब विश्लेषण को समानांतर करता है। - ffi: C फ़ंक्शन dearxan_neuter_arxan को निर्यात करता है। - instrument_stubs: प्रत्येक स्टब को पहली बार बुलाए जाने पर संदेश लॉग करने के लिए इंस्ट्रूमेंट करके disabler पर निर्माण करता है; README चेतावनी देता है कि यह रजिस्टर क्लोबरिंग के कारण Dark Souls Remastered के अलावा अन्य गेम्स के लिए वर्तमान में क्रैश करता है। - internal_api: dearxan::analysis::internal के माध्यम से अधिकांश आंतरिक बाइनरी विश्लेषण API उजागर करता है; ये स्थिर नहीं हैं और मामूली संस्करणों के बीच टूट सकते हैं। क्रेडिट में dasaav का उल्लेख है neuter_arxan के लिए वैश्विक सिंक्रनाइज़ेशन, Arxan द्वारा डिक्रिप्ट करने के लिए मेमोरी क्षेत्रों को संग्रहीत करने के तरीके को रिवर्स इंजीनियरिंग करने में मदद, और एन्क्रिप्शन एल्गोरिदम (32-राउंड TEA) खोजने के लिए।