
इंस्ट्रक्शन इंजेक्शन, जंक कोड, कॉन्स्टेंट ऑबफस्केशन और रनटाइम डिक्रिप्शन का उपयोग करके x86-64 असेंबली को ऑबफस्केट करता है, ताकि रिवर्स इंजीनियरिंग और एंटी-विश्लेषण में बाधा उत्पन्न हो सके।
उन्नत x86-64 असेंबली ऑबफस्केटर।
असेंबली कोड ऑबफस्केटर एक शक्तिशाली और बहुमुखी उपकरण है जिसे आपके x86-64 असेंबली कोड की सुरक्षा बढ़ाने के लिए डिज़ाइन किया गया है। यह ऑबफस्केशन तकनीकों और एंटी-विश्लेषण उपायों की एक विस्तृत श्रृंखला का उपयोग करके आपके प्रोजेक्ट्स को रिवर्स इंजीनियरिंग और विश्लेषण से बचाता है।
इंस्ट्रक्शन इंजेक्शन: डिसअसेंबलर को भ्रमित करने के लिए प्रत्येक असेंबली इंस्ट्रक्शन से पहले कस्टम बाइट अनुक्रम इंजेक्ट करता है।
रैंडमाइज़ेशन: कोड संरचना में यादृच्छिकता लाता है, जिससे यह कम पूर्वानुमान योग्य बनता है।
डीबगर डिटेक्शन: कोड निष्पादन के दौरान डीबगर की उपस्थिति का पता लगाता है और एंटी-डीबगिंग उपायों का उपयोग करता है।
एंटी-विश्लेषण तकनीकें: सशर्त शाखाकरण और टाइमिंग जाँच के साथ गतिशील विश्लेषण उपकरणों को भ्रमित करती है।
डायनामिक डिक्रिप्शन: रनटाइम पर कोड अनुभागों को एन्क्रिप्ट और गतिशील रूप से डिक्रिप्ट करता है, जिससे जटिलता बढ़ती है।
डायनामिक डीकंप्रेसन: कोड अनुभागों को संपीड़ित और गतिशील रूप से डीकंप्रेस करता है, जिससे कोड के वास्तविक स्वरूप को छुपाया जाता है।
कॉन्स्टेंट ऑबफस्केशन: XOR-ing और बिट मैनिपुलेशन जैसी तकनीकों का उपयोग करके कॉन्स्टेंट और डेटा मानों को ऑबफस्केट करता है।
वेरिएबल रीनामिंग: वेरिएबल्स और रजिस्टरों का नाम बदलता है, जिससे कोड कम मानव-पठनीय बनता है।
जंक कोड इंसर्शन: कोडबेस को और अधिक अस्पष्ट करने के लिए जंक कोड विभाजन सम्मिलित करता है।
ऑबफस्केशन प्रक्रिया के मूल में कोड फ़ाइल में प्रत्येक असेंबली इंस्ट्रक्शन से पहले कस्टम बाइट अनुक्रम इंजेक्ट करना शामिल है। ये रणनीतिक रूप से डिज़ाइन किए गए बाइट अनुक्रम डिसअसेंबलर और विश्लेषकों दोनों को भ्रमित करने के लिए होते हैं। आइए इस प्रक्रिया का विस्तार से परीक्षण करें:
4005d2: 55 push rbp
मेमोरी में (हेक्स):
0x55
400665: eb 01 jmp 400668 <main+0x3>
400667: b0 55 mov al,0x55
400669: eb 01 jmp 40066c <main+0x7>
मेमोरी में (हेक्स):
0xEB, 0x01, 0xB0, 0x55
यहाँ परिवर्तन का विवरण दिया गया है:
मूल इंस्ट्रक्शन PUSH RBP असेंबल होकर 0x55 बनता है। ऑबफस्केटर इसके पहले बाइट्स 0xEB, 0x01, 0xB0 सम्मिलित करता है।
परिणाम इंस्ट्रक्शनों का एक अनुक्रम होता है, जो डिसअसेंबल करने पर मूल कोड से पूरी तरह से भिन्न प्रतीत हो सकता है। यह रिवर्स इंजीनियर (RE) के लिए कोड के वास्तविक उद्देश्य को समझना चुनौतीपूर्ण बना देता है।
यह कोड में रैंडमाइज़ेशन तत्वों को शामिल करता है। इसमें इंस्ट्रक्शन क्रमचय, ऑपरेंड अदला-बदली और ओपकोड प्रतिस्थापन जैसी तकनीकें शामिल हैं।
कोड निष्पादन के दौरान डीबगर की उपस्थिति का पता लगाने के लिए तंत्र शामिल करता है। डीबगर से संबंधित आर्टिफैक्ट्स की पहचान करने और एंटी-विश्लेषण उपायों को ट्रिगर करने के लिए रनटाइम जाँच होती है।
सशर्त शाखाकरण और टाइमिंग जाँच जैसे कई एंटी-विश्लेषण उपायों को एकीकृत करता है। उदाहरण के लिए, यह विश्लेषण प्रक्रिया को धीमा करने के लिए सशर्त जंप और विलंब लूप सम्मिलित कर सकता है।
यह डायनामिक डिक्रिप्शन तकनीकों का उपयोग करता है। यह कुछ कोड अनुभागों को एन्क्रिप्ट करता है और गुप्त कुंजी का उपयोग करके उन्हें रनटाइम पर डिक्रिप्ट करता है। यह डिक्रिप्शन प्रक्रिया कोड निष्पादन के दौरान गतिशील रूप से होती है।
यह विशिष्ट कोड अनुभागों को संपीड़ित करता है और निष्पादित होने पर उन्हें तुरंत डीकंप्रेस करता है।
कॉन्स्टेंट को ऑबफस्केट करने के लिए XOR-ing, बिट मैनिपुलेशन और अंकगणितीय संचालन जैसी तकनीकों का उपयोग करता है। यह सुनिश्चित करता है कि कॉन्स्टेंट मान आसानी से पहचाने न जा सकें।
उपकरण वेरिएबल्स और रजिस्टरों का नाम बदलता है, जिससे कोड कम पठनीय बनता है। इस प्रक्रिया में वेरिएबल नामों को यादृच्छिक रूप से उत्पन्न स्ट्रिंग्स या संख्यात्मक पहचानकर्ताओं से बदलना शामिल है।
कोड को और अधिक अस्पष्ट करने के लिए, ऑबफस्केटर रणनीतिक स्थानों पर जंक कोड विभाजन सम्मिलित करता है। यह जंक कोड अप्रासंगिक इंस्ट्रक्शनों से बना होता है जो प्रोग्राम लॉजिक को प्रभावित नहीं करते बल्कि कोडबेस को अव्यवस्थित करने का काम करते हैं।
; Original Code
mov eax, 1
; After Junk Code Insertion
mov ebx, 2
sub ecx, ecx
add edx, edx
मेमोरी में (हेक्स):
0x89, 0xD8, 0x31, 0xC9, 0x01, 0xD2
सम्मिलित जंक कोड ध्यान भटकाने और कोड को अधिक पेचीदा दिखाने के लिए डिज़ाइन किया गया है।
फेक UPX हेडर का पता लगाने के लिए एक सुविधा भी शामिल करता है। यह UPX हेडर के साथ छेड़छाड़ के संकेतों के लिए कोड को स्कैन करता है, जिससे एक्ज़ीक्यूटेबल की अखंडता सुनिश्चित होती है।
परिवर्तन से पहले (मूल कोड):
section .text
global _start
_start:
; Calculate the sum of the first 10 natural numbers
mov ecx, 10 ; Initialize loop counter
mov eax, 0 ; Initialize sum to 0
loop_start:
add eax, ecx ; Add current value of ECX to EAX (sum)
loop loop_start ; Decrement ECX and loop if not zero
; Exit program
mov eax, 1 ; SYS_exit
int 0x80 ; Invoke syscall
हेक्साडेसिमल प्रस्तुति (मूल कोड):
31 C9 xor ecx,ecx
B8 00 00 00 00 mov eax,0x0
EB 0E jmp 0x1c
01 C8 add eax,ecx
E2 FB loop 0x11
B8 01 00 00 00 mov eax,0x1
CD 80 int 0x80
परिवर्तन के बाद (ऑबफस्केटेड कोड):
section .text
global _start
_start:
; Calculate the sum of the first 10 natural numbers
mov eax, 0x1
add eax, 0x2
add eax, 0x3
add eax, 0x4
add eax, 0x5
add eax, 0x6
add eax, 0x7
add eax, 0x8
add eax, 0x9
add eax, 0xa
; Exit program
mov eax, 0x1
int 0x80
हेक्साडेसिमल प्रस्तुति (ऑबफस्केटेड कोड):
B8 01 00 00 00 mov eax,0x1
83 C0 02 add eax,0x2
83 C0 03 add eax,0x3
83 C0 04 add eax,0x4
83 C0 05 add eax,0x5
83 C0 06 add eax,0x6
83 C0 07 add eax,0x7
83 C0 08 add eax,0x8
83 C0 09 add eax,0x9
83 C0 0A add eax,0xa
B8 01 00 00 00 mov eax,0x1
CD 80 int 0x80
ऑबफस्केटेड कोड में, हमने अनावश्यक ADD इंस्ट्रक्शन जोड़कर और इमीडिएट ऑपरेंड के रूप में हेक्साडेसिमल मानों का उपयोग करके मूल प्रोग्राम लॉजिक को कम स्पष्ट बना दिया है।
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।
योगदान का स्वागत है!।
समस्याओं, फ़ीचर अनुरोधों या सामान्य पूछताछ के लिए, कृपया एक इश्यू बनाएँ।
यह उपकरण शैक्षिक और नैतिक उद्देश्यों के लिए है।