उलटा। नेट अनुप्रयोग। भाग ०

यहाँ श्रृंखला में पहला लेख है "रिवर्सिंग। नेट एप्लीकेशन" जिसमें हम MSIL के साथ काम नहीं करेंगे, हम पैकर्स और प्रोटेक्टर्स को नहीं हटाएंगे, और हम obfuscated कोड का सामना नहीं करेंगे। हम भविष्य के लेखों में इस सब से निपटेंगे, लेकिन अब हम कई बुनियादी साधनों पर ध्यान देंगे और, परंपरा के अनुसार, हम साधारण दरारें हल करेंगे।





.Net मंच अपनी वर्तमान स्थिति में अत्यंत असुरक्षित है:



1. .Net के लिए लिखे गए कार्यक्रमों को मूल में संकलित नहीं किया जाता है, लेकिन .net मंच के बाइट-कोड में, MSIL (माइक्रो सॉफ्ट इंटरमीडिएट भाषा) कहा जाता है।



लॉन्च से ठीक पहले IL कोड संकलित किया गया है। इस तकनीक को जस्ट-इन-टाइम संकलन (JIT, ऑन-द-फ्लाई संकलन) कहा जाता है।



2. सभी कार्यक्रमों में मेटाडेटा होता है।

“मेटाडेटा मेटाडेटा अन्य डेटा का वर्णन है। हमारे संदर्भ में, यह .exe फ़ाइल के प्रोग्राम तत्वों का एक सेट है, जैसे कि विधियों के प्रकार और कार्यान्वयन। "



यह मेटाडेटा, या बल्कि .Net पर्यावरण में उनके विशेष गुणों के लिए धन्यवाद है, कि हम आसानी से कार्यक्रमों के लिए स्रोत कोड प्राप्त कर सकते हैं।



2.1 मेटाडेटा .Net अनिवार्य और सार्वभौमिक है।

"एमएसआईएल भाषा में कोड के अलावा। नेट वातावरण में प्रत्येक कार्यक्रम, आवश्यक रूप से मेटाडेटा शामिल है जो इसे संपूर्ण (प्रकट) और प्रत्येक प्रकार के रूप में वर्णित करता है।"



2.2 मेटाडाटा .Net सार्वजनिक रूप से उपलब्ध है।

"कोई भी सॉफ्टवेयर घटक और कोई भी प्रोग्रामिंग टूल मेटाडेटा तक पहुँच सकता है।"



२.३ मेटाडाटा। नेट थकाऊ है।

"मेटाडेटा में प्रत्येक प्रकार के बारे में विस्तृत जानकारी शामिल है: इसका नाम, प्रकार और इसके क्षेत्रों के नाम, गुणों का विवरण और उनके सभी मापदंडों और वापसी मूल्यों के साथ तरीके। कक्षा के सभी सदस्यों की पहुँच क्षमता (दृश्यता) और उनकी विशेषताओं के बारे में जानकारी भी यहाँ संग्रहीत है। मेटाडेटा निर्यात की गई कक्षाओं की न केवल इंटरफ़ेस जानकारी को संग्रहीत करता है। कार्यान्वयन विवरण जैसे संरक्षित क्षेत्रों की संरचना, संरक्षित विधियों का विवरण और अन्य घटकों को मेटाडेटा से भी निकाला जा सकता है। ”



आप यहां .Net में मेटाडेटा की संरचना के बारे में अधिक पढ़ सकते हैं, और इस बीच हम सीधे अभ्यास करना शुरू करेंगे। काम के लिए, हमें चाहिए:



फिलहाल, .Net रिफ्लेक्टर के अलावा, कई और अधिक लोकप्रिय हैं। असेंबली और एप्लिकेशन के .Net डिकंपाइलर:



हम "ReWrit's Crackme # 9 .Net Noob Challenge" को तड़पाएंगे। यह काफी सरल है, इसलिए इसके साथ कोई समस्या नहीं होगी।



क्रैकमे से संग्रह डाउनलोड करें। अंदर, हमें जिस फ़ाइल की आवश्यकता होती है, उसके अलावा एक "ब्रीफिंग" के साथ readme.txt निहित है। हम .net परावर्तक शुरू करते हैं, फिर फ़ाइल -> ओपन -> रिवर्ट का क्रैक # 9 नोब चैलेंज।, जिसके बाद हमने जो फाइल खोली है, वह प्रोग्राम फील्ड में दिखाई देगी।



छवि






अगला आरएमबी -> जुदा, और हम लगभग वहाँ हैं।



छवि






जैसा कि डेवलपर ने कहा है, परावर्तक अलग-अलग भाषाओं में समान रूप से अपघर्षक .net अनुप्रयोग कर सकता है। इसे सत्यापित करने के लिए, किसी भी विधि का चयन करें, और ड्रॉप-डाउन सूची में परिवर्तन करें C #, उदाहरण के लिए, डेल्फी के लिए। C # और VB.Net के बीच कोड को कुशलतापूर्वक रूपांतरित करने के लिए परावर्तक का भी उपयोग किया जा सकता है।

हमारे क्रैकम पर वापस, लक्ष्य को प्राप्त करने के लिए केवल एक कदम बचा है। ReWrits cm9 Noob चैलेंज पर RMB -> निर्यात ...



छवि






परियोजना को त्रुटियों के बिना निर्यात किया गया था, लेकिन यह हमेशा ऐसा नहीं होता है, कुछ मामलों में परावर्तक को लापता फ़ाइलों या पुस्तकालयों की आवश्यकता हो सकती है। इस स्थिति में, आपको उन्हें स्वयं पथ निर्दिष्ट करना होगा। अब हम आईडीई लॉन्च करते हैं, मेरे मामले में यह विज़ुअल सी # एक्सप्रेस 2010 है, हम रिफ्लेक्टर से निर्यात की गई परियोजना को खोलते हैं, स्टूडियो पर्यावरण के वर्तमान संस्करण में परियोजना को परिवर्तित करने का सुझाव देता है, हम सहमत हैं। तुरंत F5 और वॉइला दबाएं, कार्यक्रम काम करता है। "मुकाबला" स्थितियों में, यह हमेशा नहीं होता है, या तो परावर्तक गलत तरीके से निर्यात किया जाता है, परियोजना कुटिल रूप से एक स्टूडियो में बदल जाती है, या घटक पूरी तरह से सिस्टम में गायब है। लेकिन यह सब मायने नहीं रखता अगर हमें स्रोत कोड के शेर का हिस्सा मिलता है।

तो, इस पर लेख का मुख्य भाग समाप्त हो जाएगा। हमने सीखा है कि .Net प्लेटफ़ॉर्म इतना असुरक्षित क्यों है, .Net के लिए लिखे गए कार्यक्रमों के स्रोत कोड को प्राप्त करने के कई तरीकों में से एक से परिचित हो गया, और बहुत शक्तिशाली .नेट रिफ्लेक्टर उपयोगिता के साथ काम करने का कौशल भी प्राप्त किया। अगला वैकल्पिक भाग है, जिसमें क्रैकमे के तीन स्तरों का समाधान होगा, और शेष दो को आपको स्वयं हल करना होगा।



अब हम स्टूडियो से लॉन्च किए गए cremmas को बंद कर सकते हैं और प्रोग्राम कोड पर लौट सकते हैं। Form1.cs पर डबल क्लिक करें और अप्रत्याशित रूप से एक त्रुटि देखें:



छवि






लेकिन यह हमें डराता नहीं है, हम "कोड पर जाएं" पर क्लिक करते हैं। हम बटन क्लिक हैंडलर पर ध्यान केंद्रित करते हैं, उनमें से सबसे दिलचस्प होता है। बता दें कि बटन को बटन कहा जाएगा, टेक्स्टबॉक्स टीबी होंगे, और संदेश बॉक्स अकेले छोड़ दिए जाएंगे। हम मूल क्रैकमे लॉन्च करते हैं, इसमें हम प्राप्त किए गए समाधानों की जांच करेंगे, जब तक कि हम इसे ध्वस्त नहीं करते और प्रोग्राम कोड पर वापस नहीं आते। पहला बटन क्लिक हैंडलर इस तरह दिखता है:



private void button1_Click(object sender, EventArgs e)

{

string str = "486752416871754464";

string str2 = "";

while (str.Length > 0)

{

str2 = str2 + Convert.ToChar(Convert.ToUInt32(str.Substring(0, 2), 0x10)).ToString();

str = str.Substring(2, str.Length - 2);

}

if (this.textBox1.Text == str2)

{

this.Nag_Timer1.Start();

this.textBox2.ReadOnly = false;

}

else

{

MessageBox.Show("Wrong Password!", "Error");

}

}







यहां, रूपांतरण के बाद हमने जो लाइन डाली है और कुछ संचालन की तुलना मूल रूप से निर्दिष्ट लाइन के साथ की जाती है, जो रूपांतरण से भी ग्रस्त है। यदि वे समान हैं, तो नागा टाइमर शुरू होता है और अगले टीबी से रीडोनॉली विशेषता को हटा दिया जाता है, अन्य सभी में मैसेजबॉक्स गलत पासवर्ड के बारे में अधिसूचना के साथ पॉप अप होता है। MessageBox.Show ("गलत पासवर्ड!", "त्रुटि") को बदलें; MessageBox.Show (str2, "त्रुटि") पर; F5 दबाएं, पहले टीबी में कुछ दर्ज करें, ठीक पर क्लिक करें और सही पासवर्ड के साथ एक संदेश बॉक्स प्राप्त करें। हम इसे परिवर्तित कार्यक्रम के टीबी में दर्ज करते हैं, ठीक पर क्लिक करते हैं, जिसके बाद दूसरा टीबी उपलब्ध हो जाएगा। लेकिन अभी के लिए, हम ढह गए मूल क्रैकमे में पासवर्ड दर्ज करने की जल्दी में नहीं हैं। संशोधित कार्यक्रम में, इस बीच, टाइमर शुरू होता है, जिससे नाग होता है।



नाग - एक कष्टप्रद खिड़की जो एक निश्चित अवधि के बाद (या स्टार्टअप पर) पॉप अप करती है, कार्यक्रम को पंजीकृत करने के लिए बुला रही है। यह मुख्य रूप से परीक्षण कार्यक्रमों और "ट्राउजर" में होता है।



हम पहले ही कुछ नगाड़े निकाल चुके हैं और उन्हें हटाने का समय आ गया है। कार्यक्रम को बंद किए बिना, हम दूसरे बटन के हैंडलर को देखते हैं और "0x7fffffff" वाले चर के साथ दर्ज किए गए पाठ की प्रत्यक्ष तुलना देखते हैं। चर में संख्या को हेक्साडेसिमल रूप में इंगित किया गया है, लेकिन हमें इस संख्या के दशमलव अंकन की आवश्यकता है। आप मानक कैलकुलेटर का उपयोग कर सकते हैं। सबसे पहले, "प्रोग्रामर" मोड पर स्विच करें (Win7 में इसे कहा जाता है), "हेक्स" दबाएं, "0x7fffffff" दर्ज करें, "Dec" को दबाएं। 2147483647 और एक पासवर्ड है जो नाग को निष्क्रिय करता है और तीसरे टीबी तक पहुंच प्रदान करता है। तीसरा कार्य, मेरा सुझाव है कि आप इसे स्वयं हल करें।



मुझे उम्मीद है कि आपने पहले ही तीसरा काम पूरा कर लिया है, इसलिए हम इसे जारी रख सकते हैं। रीडमी का कहना है कि चौथे स्तर पर हमें फ़ाइल को पैच करना होगा, और हम इसे करेंगे। हम चौथे बटन हैंडलर को देखते हैं, दो बार सोचने के बिना, "if (te.textBox6.Text == str2)" को (यदि यह .textBox6.Text == "क्रैक") में बदलते हैं, तो चौथे स्तर का पासवर्ड क्रैक है। पांचवां आपको अपने लिए तय करना होगा।



यह लेख समाप्त होता है, आपके ध्यान के लिए धन्यवाद।



All Articles