The strings utility can extract both ASCII and Unicode strings from a binary file.

स्ट्रिंग्स यूटिलिटी एक बाइनरी फ़ाइल से ASCII और यूनिकोड स्ट्रिंग्स दोनों को निकाल सकती है।


Malware authors often use string obfuscation to avoid detection.

मैल्वेयर लेखक अक्सर पहचान से बचने के लिए स्ट्रिंग अस्पष्टता का उपयोग करते हैं।


FLOSS is a tool designed to automatically extract obfuscated strings from malware.

FLOSS एक उपकरण है जो मैलवेयर से अस्पष्टीकृत स्ट्रिंग्स को स्वचालित रूप से निकालने के लिए डिज़ाइन किया गया है।


You can download FLOSS for Windows or Linux.

आप विंडोज या लिनक्स के लिए FLOSS डाउनलोड कर सकते हैं।


Running FLOSS on a malware specimen can decode obfuscated strings.

एक मैलवेयर नमूने पर FLOSS चलाने से अस्पष्टीकृत स्ट्रिंग्स को डिकोड किया जा सकता है।


Packers and Cryptors are used to obfuscate files.

पैकर और क्रिप्टर फ़ाइलों को अस्पष्ट करने के लिए उपयोग किए जाते हैं।


Obfuscation makes it difficult to detect and analyze the binary.

अस्पष्टता बाइनरी का पता लगाना और विश्लेषण करना मुश्किल बना देती है।


A Packer uses compression to obfuscate the executable's content.

एक पैकर निष्पादन योग्य की सामग्री को अस्पष्ट करने के लिए संपीड़न का उपयोग करता है।


A Cryptor uses encryption to obfuscate the executable's content.

एक क्रिप्टर निष्पादन योग्य की सामग्री को अस्पष्ट करने के लिए एन्क्रिप्शन का उपयोग करता है।


Extracting strings from a packed binary reveals fewer strings.

एक पैक किए गए बाइनरी से स्ट्रिंग्स निकालने पर कम स्ट्रिंग्स का पता चलता है।


UPX is a common packer used to compress executables.

UPX एक सामान्य पैकर है जिसका उपयोग निष्पादन योग्य को संपीड़ित करने के लिए किया जाता है।


Exeinfo PE can detect packers on Windows.

Exeinfo PE विंडोज पर पैकर्स का पता लगा सकता है।


Windows executables conform to the PE/COFF format.

विंडोज निष्पादन योग्य PE/COFF प्रारूप का पालन करते हैं।


The PE header describes the structure of the executable.

PE हेडर निष्पादन योग्य की संरचना का वर्णन करता है।


Examining the PE header yields a wealth of information.

PE हेडर की जांच से बहुत सारी जानकारी मिलती है।


Malware often interacts with files, registry, and network.

मैलवेयर अक्सर फ़ाइलों, रजिस्ट्री और नेटवर्क के साथ इंटरैक्ट करता है।


Inspect the DLLs and API functions to understand malware functionality.

मैलवेयर कार्यक्षमता को समझने के लिए DLL और API कार्यों का निरीक्षण करें।


Pestudio displays the DLL files an executable depends on.

Pestudio उन DLL फ़ाइलों को प्रदर्शित करता है जिन पर एक निष्पादन योग्य निर्भर करता है।


Imports can help you detect if a malware sample is obfuscated.

इम्पोर्ट्स आपको यह पता लगाने में मदद कर सकते हैं कि क्या कोई मैलवेयर नमूना अस्पष्ट है।


Exported functions can give you a quick idea of a DLL's capabilities.

निर्यातित कार्य आपको एक DLL की क्षमताओं का त्वरित विचार दे सकते हैं।


Learning Malware Analysis explores the concepts, tools, and techniques to analyze and investigate Windows malware.

मालवेयर विश्लेषण सीखना विंडोज मालवेयर का विश्लेषण और जांच करने के लिए अवधारणाओं, उपकरणों और तकनीकों की पड़ताल करता है।


This book teaches the concepts, tools, and techniques to understand the behavior and characteristics of Windows malware.

यह पुस्तक विंडोज मालवेयर के व्यवहार और विशेषताओं को समझने के लिए अवधारणाओं, उपकरणों और तकनीकों को सिखाती है।


If you are new to the field of malware analysis, this book should help you get started.

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


Malware analysis has become a must-have skill for fighting advanced malware and targeted attacks.

उन्नत मालवेयर और लक्षित हमलों से लड़ने के लिए मालवेयर विश्लेषण एक आवश्यक कौशल बन गया है।


The growing threat of cyberattacks on critical infrastructure poses a unique challenge.

महत्वपूर्ण बुनियादी ढांचे पर साइबर हमलों का बढ़ता खतरा एक अनूठी चुनौती पेश करता है।


With adversaries becoming sophisticated, detecting intrusions is critical.

प्रतिद्वंद्वियों के परिष्कृत होने के साथ, घुसपैठ का पता लगाना महत्वपूर्ण है।


This book starts by introducing you to basic concepts of malware analysis.

यह पुस्तक आपको मालवेयर विश्लेषण की बुनियादी अवधारणाओं से परिचित कराकर शुरू होती है।


Knowledge of programming languages such as C and Python would be helpful.

सी और पायथन जैसी प्रोग्रामिंग भाषाओं का ज्ञान सहायक होगा।


You may need to do some additional reading to fully understand the concepts.

अवधारणाओं को पूरी तरह से समझने के लिए आपको कुछ अतिरिक्त पढ़ने की आवश्यकता हो सकती है।


The advancement of technology has changed our lives.

प्रौद्योगिकी के विकास ने हमारे जीवन को बदल दिया है।


Cyberattacks make use of malicious software for financial theft.

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


Whether you are learning malware analysis for fun, this book enables you to accomplish your goals.

चाहे आप मनोरंजन के लिए मालवेयर विश्लेषण सीख रहे हों, यह पुस्तक आपको अपने लक्ष्यों को प्राप्त करने में सक्षम बनाती है।


If you're an incident responder, this book is for you.

यदि आप एक घटना प्रतिक्रियाकर्ता हैं, तो यह पुस्तक आपके लिए है।


Chapter 2 teaches the tools and techniques to extract metadata information.

अध्याय 2 मेटाडेटा जानकारी निकालने के लिए उपकरणों और तकनीकों को सिखाता है।


You'll learn how to determine various aspects of the binary without executing it.

आप सीखेंगे कि इसे निष्पादित किए बिना बाइनरी के विभिन्न पहलुओं को कैसे निर्धारित किया जाए।


Chapter 3 teaches the tools and techniques to determine the behavior of the malware.

अध्याय 3 मालवेयर के व्यवहार को निर्धारित करने के लिए उपकरणों और तकनीकों को सिखाता है।


It also covers various persistence methods used by the malicious programs.

यह दुर्भावनापूर्ण कार्यक्रमों द्वारा उपयोग किए जाने वाले विभिन्न दृढ़ता तरीकों को भी शामिल करता है।


This book covers encoding, encryption, and packing techniques.

यह पुस्तक एन्कोडिंग, एन्क्रिप्शन और पैकिंग तकनीकों को शामिल करती है।


You will learn various Volatility plugins to detect forensic artifacts in memory.

आप स्मृति में फॉरेंसिक कलाकृतियों का पता लगाने के लिए विभिन्न अस्थिरता प्लगइन्स सीखेंगे।


You will learn to investigate and detect user mode and kernel mode rootkit components.

आप उपयोगकर्ता मोड और कर्नेल मोड रूटकिट घटकों की जांच करना और उनका पता लगाना सीखेंगे।


The fuzzy hashing technique identified the similarity between the samples.

फज़ी हैशिंग तकनीक ने नमूनों के बीच समानता की पहचान की।


You might have a directory containing many malware samples.

आपके पास एक ऐसी निर्देशिका हो सकती है जिसमें कई मैलवेयर नमूने हों।


You can also match a suspect binary with a list of file hashes.

आप संदिग्ध बाइनरी को फ़ाइल हैश की सूची से भी मिला सकते हैं।


In Python, the fuzzy hash can be computed using python-ssdeep.

पाइथन में, फ़ज़ी हैश को python-ssdeep का उपयोग करके संगणित किया जा सकता है।


Import Hashing is another technique that can be used to identify related samples.

इम्पोर्ट हैशिंग एक और तकनीक है जिसका उपयोग संबंधित नमूनों की पहचान करने के लिए किया जा सकता है।


If the files were compiled from the same source and in the same manner, those files would tend to have the same imphash value.

यदि फ़ाइलों को एक ही स्रोत से और एक ही तरीके से संकलित किया गया था, तो उन फ़ाइलों में समान इम्पाश मान होने की संभावना होगी।


Files having the same imphash does not necessarily mean they are from the same threat group.

समान इम्पाश वाली फ़ाइलों का मतलब यह ज़रूरी नहीं है कि वे एक ही खतरे वाले समूह से हैं।


Section hashing can also help in identifying related samples.

सेक्शन हैशिंग भी संबंधित नमूनों की पहचान करने में मदद कर सकता है।


A malware sample can contain many strings or binary indicators.

एक मैलवेयर नमूने में कई स्ट्रिंग या बाइनरी संकेतक हो सकते हैं।


YARA is a powerful malware identification and classification tool.

YARA एक शक्तिशाली मैलवेयर पहचान और वर्गीकरण उपकरण है।


Malware researchers can create YARA rules based on textual or binary information.

मैलवेयर शोधकर्ता पाठ या बाइनरी जानकारी के आधार पर YARA नियम बना सकते हैं।


The YARA rule consists of the following components: Rule identifier, String Definition, Condition Section.

YARA नियम में निम्नलिखित घटक शामिल हैं: नियम पहचानकर्ता, स्ट्रिंग परिभाषा, स्थिति अनुभाग।


Once you have the rule ready, the next step is to use the yara utility to scan the files.

एक बार जब आपके पास नियम तैयार हो जाता है, तो अगला कदम फ़ाइलों को स्कैन करने के लिए yara उपयोगिता का उपयोग करना है।


The modified rule to implement case-insensitive match and to look for ASCII and Unicode strings is shown here.

केस-इन्सेंसिटिव मैच को लागू करने और ASCII और यूनिकोड स्ट्रिंग की तलाश करने के लिए संशोधित नियम यहां दिखाया गया है।


If your intention is to look for strings in an executable file, you can create a rule as shown below.

यदि आपका इरादा एक निष्पादन योग्य फ़ाइल में स्ट्रिंग की तलाश करना है, तो आप नीचे दिखाए गए अनुसार एक नियम बना सकते हैं।


YARA rule can also be used to detect packers.

YARA नियम का उपयोग पैकर्स का पता लगाने के लिए भी किया जा सकता है।


PEiD is another tool that detects packers.

PEiD एक और उपकरण है जो पैकर्स का पता लगाता है।


YARA can be used to detect patterns in any file.

YARA का उपयोग किसी भी फ़ाइल में पैटर्न का पता लगाने के लिए किया जा सकता है।


After you analyze the malware, you can create signatures to identify its components.

मैलवेयर का विश्लेषण करने के बाद, आप इसके घटकों की पहचान करने के लिए हस्ताक्षर बना सकते हैं।


Static analysis is the first step in malware analysis.

स्थिर विश्लेषण मैलवेयर विश्लेषण का पहला चरण है।


If you have found a mistake in this book, we would be grateful if you would report this to us.

यदि आपको इस पुस्तक में कोई गलती मिली है, तो हम आभारी होंगे यदि आप हमें इसकी रिपोर्ट करेंगे।


Please visit www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details.

कृपया www.packtpub.com/submit-errata पर जाएं, अपनी पुस्तक का चयन करें, एर्रेटा सबमिशन फॉर्म लिंक पर क्लिक करें और विवरण दर्ज करें।


If you come across any illegal copies of our works in any form on the Internet, we would be grateful if you would provide us with the location address or website name.

यदि आपको इंटरनेट पर किसी भी रूप में हमारी कृतियों की कोई अवैध प्रतियां मिलती हैं, तो हम आभारी होंगे यदि आप हमें स्थान का पता या वेबसाइट का नाम प्रदान करेंगे।


If you are interested in becoming an author: If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, please visit authors.packtpub.com.

यदि आप लेखक बनने में रुचि रखते हैं: यदि कोई ऐसा विषय है जिसमें आपकी विशेषज्ञता है और आप या तो लिखने या किसी पुस्तक में योगदान करने में रुचि रखते हैं, तो कृपया authors.packtpub.com पर जाएं।


Potential readers can then see and use your unbiased opinion to make purchase decisions, we at Packt can understand what you think about our products, and our authors can see your feedback on their book.

संभावित पाठक तब खरीद निर्णय लेने के लिए आपकी निष्पक्ष राय देख और उपयोग कर सकते हैं, हम पैक में यह समझ सकते हैं कि आप हमारे उत्पादों के बारे में क्या सोचते हैं, और हमारे लेखक आपकी प्रतिक्रिया को अपनी पुस्तक पर देख सकते हैं।


The number of cyber attacks is undoubtedly on the rise, targeting government, military, public and private sectors.

साइबर हमलों की संख्या निस्संदेह बढ़ रही है, जो सरकार, सेना, सार्वजनिक और निजी क्षेत्रों को लक्षित कर रही है।


These cyber attacks focus on targeting individuals or organizations with an effort to extract valuable information.

ये साइबर हमले मूल्यवान जानकारी निकालने के प्रयास के साथ व्यक्तियों या संगठनों को लक्षित करने पर केंद्रित हैं।


Sometimes, these cyber attacks are allegedly linked to cybercrime or state-sponsored groups, but may also be carried out by individual groups to achieve their goals.

कभी-कभी, इन साइबर हमलों को कथित तौर पर साइबर अपराध या राज्य प्रायोजित समूहों से जोड़ा जाता है, लेकिन इन्हें व्यक्तिगत समूहों द्वारा अपने लक्ष्यों को प्राप्त करने के लिए भी अंजाम दिया जा सकता है।


Most of these cyber attacks use malicious software (also called malware) to infect their targets.

इनमें से अधिकांश साइबर हमले अपने लक्ष्यों को संक्रमित करने के लिए दुर्भावनापूर्ण सॉफ़्टवेयर (जिसे मैलवेयर भी कहा जाता है) का उपयोग करते हैं।


Knowledge, skills, and tools required to analyze malicious software are essential to detect, investigate and defend against such attacks.

दुर्भावनापूर्ण सॉफ़्टवेयर का विश्लेषण करने के लिए आवश्यक ज्ञान, कौशल और उपकरण ऐसे हमलों का पता लगाने, जांच करने और उनसे बचाव के लिए आवश्यक हैं।


Malware is a code that performs malicious actions; it can take the form of an executable, script, code, or any other software.

मैलवेयर एक कोड है जो दुर्भावनापूर्ण क्रियाएं करता है; यह एक निष्पादन योग्य, स्क्रिप्ट, कोड, या किसी अन्य सॉफ़्टवेयर का रूप ले सकता है।


Attackers use malware to steal sensitive information, spy on the infected system, or take control of the system.

हमलावर संवेदनशील जानकारी चुराने, संक्रमित सिस्टम पर जासूसी करने या सिस्टम का नियंत्रण लेने के लिए मैलवेयर का उपयोग करते हैं।


It typically gets into your system without your consent and can be delivered via various communication channels such as email, web, or USB drives.

यह आमतौर पर आपकी सहमति के बिना आपके सिस्टम में प्रवेश करता है और इसे विभिन्न संचार चैनलों जैसे ईमेल, वेब या यूएसबी ड्राइव के माध्यम से वितरित किया जा सकता है।


कंप्यूटर संचालन में बाधा डालना


Stealing sensitive information, including personal, business, and financial data

व्यक्तिगत, व्यावसायिक और वित्तीय डेटा सहित संवेदनशील जानकारी चुराना


Unauthorized access to the victim's system

पीड़ित के सिस्टम तक अनधिकृत पहुंच


पीड़ितों पर जासूसी करना


स्पैम ईमेल भेजना


Engaging in distributed-denial-of-service attacks (DDOS)

वितरित-सेवा-अस्वीकार हमलों (डीडीओएस) में शामिल होना


Locking up the files on the computer and holding them for ransom

कंप्यूटर पर फ़ाइलों को लॉक करना और उन्हें फिरौती के लिए रखना


Drop are set to Bidirectional. Click on OK.

ड्रॉप को द्विदिशीय पर सेट करें। ओके पर क्लिक करें।


At this point, the Linux VM is configured to use Host-only mode, and INetSim is set up to simulate all the services.

इस बिंदु पर, लिनक्स वीएम को होस्ट-ओनली मोड का उपयोग करने के लिए कॉन्फ़िगर किया गया है, और INetSim सभी सेवाओं का अनुकरण करने के लिए स्थापित है।


The last step is to take a snapshot (clean snapshot) and give it a name of your choice so that you can revert it back to the clean state when required.

अंतिम चरण एक स्नैपशॉट (स्वच्छ स्नैपशॉट) लेना और इसे अपनी पसंद का नाम देना है ताकि आप आवश्यकता पड़ने पर इसे वापस स्वच्छ स्थिति में लौटा सकें।


To take a snapshot on VMware workstation, click on VM | Snapshot | Take Snapshot.

VMware वर्कस्टेशन पर स्नैपशॉट लेने के लिए, VM | स्नैपशॉट | टेक स्नैपशॉट पर क्लिक करें।


On Virtualbox, the same can be done by clicking on Machine | Take Snapshot.

Virtualbox पर, यही काम मशीन | टेक स्नैपशॉट पर क्लिक करके किया जा सकता है।


Apart from the drag and drop feature, it is also possible to transfer files from the host machine to the virtual machine using shared folders.

ड्रैग एंड ड्रॉप सुविधा के अलावा, साझा फ़ोल्डरों का उपयोग करके होस्ट मशीन से वर्चुअल मशीन में फ़ाइलें स्थानांतरित करना भी संभव है।


Before setting up the Windows VM, you first need to install a Windows operating system (Windows 7, Window 8, and so on) of your choice in the virtualization software.

विंडोज वीएम स्थापित करने से पहले, आपको पहले वर्चुअलाइजेशन सॉफ़्टवेयर में अपनी पसंद का विंडोज ऑपरेटिंग सिस्टम (विंडोज 7, विंडोज 8, आदि) स्थापित करने की आवश्यकता है।


Download Python from https://www.python.org/downloads/.

https://www.python.org/downloads/ से पायथन डाउनलोड करें।


Be sure to download Python 2.7.x (such as 2.7.13); most of the scripts used in this book are written to run on the Python 2.7 version and may not run correctly on Python 3.

पायथन 2.7.x (जैसे 2.7.13) डाउनलोड करना सुनिश्चित करें; इस पुस्तक में उपयोग की जाने वाली अधिकांश स्क्रिप्ट पायथन 2.7 संस्करण पर चलाने के लिए लिखी गई हैं और पायथन 3 पर सही ढंग से नहीं चल सकती हैं।


Make sure you check the option to install pip and Add python.exe to Path, as shown in the following screenshot.

सुनिश्चित करें कि आप pip स्थापित करने और पथ में python.exe जोड़ने के विकल्प की जांच करते हैं, जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है।


Configure your Windows VM to run in Host-only network configuration mode.

अपने विंडोज वीएम को होस्ट-ओनली नेटवर्क कॉन्फ़िगरेशन मोड में चलाने के लिए कॉन्फ़िगर करें।


To do that in VMware or VirtualBox, bring up the Network Settings and choose the Host-only mode; save the settings and reboot.

VMware या VirtualBox में ऐसा करने के लिए, नेटवर्क सेटिंग्स लाएँ और होस्ट-ओनली मोड चुनें; सेटिंग्स सहेजें और पुनरारंभ करें।


Configure the IP address of the Windows VM to 192.168.1.x and set up your Default gateway and the DNS server to the IP address of Linux VM.

विंडोज वीएम का आईपी पता 192.168.1.x पर कॉन्फ़िगर करें और अपना डिफ़ॉल्ट गेटवे और डीएनएस सर्वर लिनक्स वीएम के आईपी पते पर सेट करें।


Power on both the Linux VM and the Window VM, and make sure they can communicate with each other.

लिनक्स वीएम और विंडोज वीएम दोनों को चालू करें, और सुनिश्चित करें कि वे एक दूसरे के साथ संवाद कर सकते हैं।


You can check for the connectivity by running the ping command.

आप पिंग कमांड चलाकर कनेक्टिविटी की जांच कर सकते हैं।


Windows Defender Service needs to be disabled on your Windows VM as it may interfere when you are executing the malware sample.

आपके विंडोज वीएम पर विंडोज डिफेंडर सेवा को अक्षम करने की आवश्यकता है क्योंकि यह हस्तक्षेप कर सकता है जब आप मैलवेयर नमूना निष्पादित कर रहे हों।


To do that, press the Windows key + R to open the Run menu, enter gpedit.msc, and hit Enter to launch the Local Group Policy Editor.

ऐसा करने के लिए, रन मेनू खोलने के लिए विंडोज कुंजी + आर दबाएं, gpedit.msc दर्ज करें, और लोकल ग्रुप पॉलिसी एडिटर लॉन्च करने के लिए एंटर दबाएं।


Take a clean snapshot so that you can revert to the pristine/clean state after every analysis.

एक स्वच्छ स्नैपशॉट लें ताकि आप प्रत्येक विश्लेषण के बाद मूल/स्वच्छ स्थिति में वापस आ सकें।


At this point, your lab environment should be ready.

इस बिंदु पर, आपका लैब वातावरण तैयार होना चाहिए।


Throughout this book, I will be covering various malware analysis tools; if you wish to use those tools, you can copy them to the clean snapshot on the virtual machines.

इस पुस्तक में, मैं विभिन्न मैलवेयर विश्लेषण उपकरणों को कवर करूँगा; यदि आप उन उपकरणों का उपयोग करना चाहते हैं, तो आप उन्हें वर्चुअल मशीनों पर स्वच्छ स्नैपशॉट में कॉपी कर सकते हैं।


The DLL entry point function was called, which in turn called DLLMain, containing the malicious code.

DLL एंट्री पॉइंट फ़ंक्शन को बुलाया गया, जिसने बदले में DLLMain को बुलाया, जिसमें दुर्भावनापूर्ण कोड शामिल था।


Then rundll32.exe tries to find the address of the export function test.

फिर rundll32.exe निर्यात फ़ंक्शन टेस्ट का पता लगाने की कोशिश करता है।


Since it cannot find the address of test, the following error was displayed.

चूंकि यह टेस्ट का पता नहीं लगा सकता है, इसलिए निम्नलिखित त्रुटि प्रदर्शित की गई।


Even though the error message was displayed, the DLL was successfully loaded.

भले ही त्रुटि संदेश प्रदर्शित किया गया था, DLL सफलतापूर्वक लोड हो गया था।


Upon execution, the malware establishes an HTTP connection with the C2 domain.

निष्पादन पर, मैलवेयर C2 डोमेन के साथ एक HTTP कनेक्शन स्थापित करता है।


In this example, we will look at another malicious DLL (obe.dll).

इस उदाहरण में, हम एक अन्य दुर्भावनापूर्ण DLL (obe.dll) को देखेंगे।


The DLL sample was run with the following command.

DLL नमूना निम्नलिखित कमांड के साथ चलाया गया था।


Even though obe.dll was loaded into the memory of rundll32.exe, it did not trigger any behavior.

भले ही obe.dll को rundll32.exe की मेमोरी में लोड किया गया था, लेकिन इसने कोई व्यवहार ट्रिगर नहीं किया।


This is because DLL's entry point function does not implement any functionality.

ऐसा इसलिए है क्योंकि DLL का एंट्री पॉइंट फ़ंक्शन कोई भी कार्यक्षमता लागू नहीं करता है।


On the other hand, running the sample with the DllRegisterServer function triggered an HTTPS communication.

दूसरी ओर, DllRegisterServer फ़ंक्शन के साथ नमूना चलाने से HTTPS संचार शुरू हो गया।


From this, it can be deduced that DLLRegisterServer implements the network functionality.

इससे, यह अनुमान लगाया जा सकता है कि DLLRegisterServer नेटवर्क कार्यक्षमता को लागू करता है।


You can write a script to determine all the exported functions in a DLL.

आप DLL में सभी निर्यातित कार्यों को निर्धारित करने के लिए एक स्क्रिप्ट लिख सकते हैं।


This technique can help in understanding the functionality of each exported function.

यह तकनीक प्रत्येक निर्यातित फ़ंक्शन की कार्यक्षमता को समझने में मदद कर सकती है।


The following example shows how you can analyze a DLL that accepts export arguments.

निम्नलिखित उदाहरण दिखाता है कि आप एक DLL का विश्लेषण कैसे कर सकते हैं जो निर्यात तर्क स्वीकार करता है।


The DLL used in this example was delivered via powerpoint.

इस उदाहरण में उपयोग किया गया DLL पावरपॉइंट के माध्यम से दिया गया था।


To demonstrate the delete functionality, a test file was created.

डिलीट कार्यक्षमता को प्रदर्शित करने के लिए, एक टेस्ट फ़ाइल बनाई गई थी।


After running the following command, the test file was deleted from the disk.

निम्नलिखित कमांड चलाने के बाद, टेस्ट फ़ाइल को डिस्क से हटा दिया गया।


To determine the parameters and the type of parameters accepted by an export function, you will need to perform code analysis.

किसी निर्यात फ़ंक्शन द्वारा स्वीकार किए गए मापदंडों और मापदंडों के प्रकार को निर्धारित करने के लिए, आपको कोड विश्लेषण करने की आवश्यकता होगी।


Most of the time, launching a DLL with rundll32.exe will work fine.

ज्यादातर समय, rundll32.exe के साथ DLL लॉन्च करना ठीक काम करेगा।


In such cases, you will have to inject the DLL into the specific process to trigger the behavior.

ऐसे मामलों में, आपको व्यवहार को ट्रिगर करने के लिए DLL को विशिष्ट प्रक्रिया में इंजेक्ट करना होगा।


The memory address 0x403000 is where the value 100 is stored.

मेमोरी एड्रेस 0x403000 पर 100 का मान संग्रहीत है।


Assembly language uses addresses to move values into registers.

असेंबली भाषा रजिस्टरों में मानों को स्थानांतरित करने के लिए पतों का उपयोग करती है।


The instruction 'mov eax, [0x403000]' moves the value at memory address 0x403000 into the eax register.

'mov eax, [0x403000]' निर्देश मेमोरी एड्रेस 0x403000 पर मौजूद मान को eax रजिस्टर में ले जाता है।


Square brackets in assembly indicate the value stored at a memory location.

असेंबली में वर्ग कोष्ठक एक मेमोरी लोकेशन पर संग्रहीत मान को दर्शाते हैं।


During reverse engineering, you'll often encounter instructions using square brackets.

रिवर्स इंजीनियरिंग के दौरान, आपको अक्सर वर्ग कोष्ठकों का उपयोग करने वाले निर्देश मिलेंगे।


The 'lea' instruction loads the effective address, not the value.

'lea' निर्देश प्रभावी पते को लोड करता है, मान को नहीं।


The instruction 'mov [0x403000], eax' moves the value from the eax register to memory address 0x403000.

'mov [0x403000], eax' निर्देश eax रजिस्टर से मान को मेमोरी एड्रेस 0x403000 पर ले जाता है।


The 'dword ptr' specifies a 4-byte value.

'dword ptr' एक 4-बाइट मान निर्दिष्ट करता है।


Moving values between registers and memory is a fundamental operation in assembly.

रजिस्टर और मेमोरी के बीच मानों को स्थानांतरित करना असेंबली में एक मूलभूत संचालन है।


Let's analyze a simple disassembly challenge to understand the code's function.

आइए कोड के कार्य को समझने के लिए एक सरल डिसअसेंबली चुनौती का विश्लेषण करें।


The disassembled code copies a value from one memory location to another.

डिसअसेंबल किया गया कोड एक मेमोरी लोकेशन से दूसरे में एक मान की प्रतिलिपि बनाता है।


In high-level languages, variables are symbolic names for memory addresses.

उच्च-स्तरीय भाषाओं में, चर मेमोरी पतों के लिए प्रतीकात्मक नाम हैं।


The eax register is used for temporary storage by the CPU.

CPU द्वारा अस्थायी भंडारण के लिए eax रजिस्टर का उपयोग किया जाता है।


We can determine variable types by how they are accessed and used.

हम इस बात से चर प्रकार निर्धारित कर सकते हैं कि उन्हें कैसे एक्सेस और उपयोग किया जाता है।


Arithmetic operations like addition and subtraction are common in assembly.

जोड़ और घटाव जैसे अंकगणितीय संचालन असेंबली में आम हैं।


The 'add' instruction adds the source and destination operands.

'add' निर्देश स्रोत और गंतव्य ऑपरेंड को जोड़ता है।


The 'sub' instruction subtracts the source from the destination.

'sub' निर्देश गंतव्य से स्रोत को घटाता है।


Multiplication is performed using the 'mul' instruction.

गुणा 'mul' निर्देश का उपयोग करके किया जाता है।


Division is performed using the 'div' instruction.

भाग 'div' निर्देश का उपयोग करके किया जाता है।


Bitwise operations manipulate individual bits within a value.

बिटवाइज़ ऑपरेशन एक मान के भीतर व्यक्तिगत बिट्स में हेरफेर करते हैं।


The code will execute after the 'else' block.

कोड 'एल्स' ब्लॉक के बाद निष्पादित होगा।


The conditional jump will be taken if x is not equal to 0.

यदि x 0 के बराबर नहीं है तो सशर्त जंप लिया जाएगा।


Before the 'else' block, there is an unconditional jump to 'end'.

'एल्स' ब्लॉक से पहले, 'एंड' के लिए एक बिना शर्त जंप है।


If x is equal to 0, the 'else' block is skipped.

यदि x 0 के बराबर है, तो 'एल्स' ब्लॉक को छोड़ दिया जाता है।


The code contains 'if-else if-else' statements.

कोड में 'इफ-एल्स इफ-एल्स' स्टेटमेंट शामिल हैं।


यहाँ दो सशर्त जंप बिंदु हैं।


The jump is taken to the 'else_if' block.

जंप 'एल्स_इफ' ब्लॉक पर लिया जाता है।


Both unconditional jumps skip the 'else' statement.

दोनों बिना शर्त जंप 'एल्स' स्टेटमेंट को छोड़ देते हैं।


Let's translate the code to its high-level equivalent.

आइए कोड का अनुवाद इसके उच्च-स्तरीय समकक्ष में करें।


The condition in the 'if' statement was reversed.

'इफ' स्टेटमेंट में स्थिति को उलट दिया गया था।


The jump will not be taken when x is equal to 0.

जब x 0 के बराबर होगा तो जंप नहीं लिया जाएगा।


Loops execute a block of code until a condition is met.

लूप एक कोड ब्लॉक को तब तक निष्पादित करते हैं जब तक कि कोई शर्त पूरी नहीं हो जाती।


The two most common types of loops are 'for' and 'while'.

लूप के दो सबसे आम प्रकार 'फॉर' और 'व्हाइल' हैं।


The initialization statement is executed only once.

प्रारंभिक कथन केवल एक बार निष्पादित किया जाता है।


दोनों ही मामलों में, एक जंप लिया जाएगा।


The code is checking if i is greater than or equal to 5.

कोड यह जाँच रहा है कि i 5 से बड़ा या उसके बराबर है या नहीं।


x का मान 1 तक बढ़ जाता है।


A function is a block of code that performs specific tasks.

एक फ़ंक्शन कोड का एक ब्लॉक है जो विशिष्ट कार्य करता है।


The stack is organized in a Last-In-First-Out (LIFO) structure.

स्टैक को लास्ट-इन-फर्स्ट-आउट (LIFO) संरचना में व्यवस्थित किया गया है।


The parameters are pushed onto the stack.

पैरामीटर स्टैक पर धकेल दिए जाते हैं।


When performing malware analysis, you will only be interested in the activities produced by the malware.

मैलवेयर विश्लेषण करते समय, आप केवल मैलवेयर द्वारा उत्पन्न गतिविधियों में रुचि रखेंगे।


To reduce noise, you can use the filtering features which hides unwanted entries and allows you to filter on specific attributes.

शोर कम करने के लिए, आप फ़िल्टरिंग सुविधाओं का उपयोग कर सकते हैं जो अवांछित प्रविष्टियों को छुपाती हैं और आपको विशिष्ट विशेषताओं पर फ़िल्टर करने की अनुमति देती हैं।


To access this feature, select the Filter menu and then click on Filter (or press Ctrl + L).

इस सुविधा तक पहुंचने के लिए, फ़िल्टर मेनू का चयन करें और फिर फ़िल्टर पर क्लिक करें (या Ctrl + L दबाएं)।


Even though Process Monitor is a great tool to monitor a malware's interaction with the system, it can be very noisy.

हालांकि प्रोसेस मॉनिटर मैलवेयर की सिस्टम के साथ बातचीत की निगरानी के लिए एक बेहतरीन उपकरण है, लेकिन यह बहुत शोरगुल वाला हो सकता है।


Noriben is a Python script that works in conjunction with Process Monitor and helps in collecting, analyzing, and reporting runtime indicators of the malware.

नोरिबेन एक पायथन स्क्रिप्ट है जो प्रोसेस मॉनिटर के साथ मिलकर काम करती है और मैलवेयर के रनटाइम इंडिकेटर्स को इकट्ठा करने, विश्लेषण करने और रिपोर्ट करने में मदद करती है।


The advantage of using Noriben is that it comes with pre-defined filters that assist in reducing noise and allow you to focus on the malware-related events.

नोरिबेन का उपयोग करने का लाभ यह है कि यह पूर्व-निर्धारित फिल्टर के साथ आता है जो शोर को कम करने में सहायता करते हैं और आपको मैलवेयर से संबंधित घटनाओं पर ध्यान केंद्रित करने की अनुमति देते हैं।


To use Noriben, download it to your Windows VM, extract it to a folder, and copy Process Monitor (Procmon.exe) into the same folder before running the Noriben.py Python script.

नोरिबेन का उपयोग करने के लिए, इसे अपने विंडोज वीएम में डाउनलोड करें, इसे एक फ़ोल्डर में निकालें, और नोरिबेन.पीवाई पायथन स्क्रिप्ट चलाने से पहले प्रोसेस मॉनिटर (प्रोकॉन.ईएक्सई) को उसी फ़ोल्डर में कॉपी करें।


When you run Noriben, it launches Process Monitor.

जब आप नोरिबेन चलाते हैं, तो यह प्रोसेस मॉनिटर लॉन्च करता है।


Once you are done with the monitoring, you can stop Noriben by pressing Ctrl + C, which will terminate Process Monitor.

एक बार जब आप निगरानी कर लेते हैं, तो आप Ctrl + C दबाकर नोरिबेन को रोक सकते हैं, जो प्रोसेस मॉनिटर को समाप्त कर देगा।


Once terminated, Noriben stores the results in a text file (.txt) and a CSV file (.csv) in the same directory.

समाप्त होने के बाद, नोरिबेन परिणाम को उसी निर्देशिका में एक टेक्स्ट फ़ाइल (.txt) और एक CSV फ़ाइल (.csv) में संग्रहीत करता है।


The text file contains events segregated based on the categories (like process, file, registry, and network activity) in separate sections.

टेक्स्ट फ़ाइल में अलग-अलग अनुभागों में श्रेणियों (जैसे प्रक्रिया, फ़ाइल, रजिस्ट्री और नेटवर्क गतिविधि) के आधार पर अलग-अलग घटनाएं शामिल हैं।


Also, note that the number of events is much less because it applied predefined filters that reduced most of the unwanted noise.

इसके अतिरिक्त, ध्यान दें कि घटनाओं की संख्या बहुत कम है क्योंकि इसने पूर्वनिर्धारित फिल्टर लागू किए थे जिन्होंने अधिकांश अवांछित शोर को कम किया।


The CSV file contains all the events (process, file, registry, and network activity) sorted by the timeline (the order in which the events occurred).

CSV फ़ाइल में समयरेखा (जिस क्रम में घटनाएं हुईं) के अनुसार क्रमबद्ध सभी घटनाएं (प्रक्रिया, फ़ाइल, रजिस्ट्री और नेटवर्क गतिविधि) शामिल हैं।


The text file and the CSV file can give different perspectives.

टेक्स्ट फ़ाइल और CSV फ़ाइल अलग-अलग दृष्टिकोण दे सकते हैं।


If you are interested in the summary of events based on the category then you can look at the text file; if you are interested in the sequence of events in the order in which it occurred then you can view the CSV file.

यदि आप श्रेणी के आधार पर घटनाओं के सारांश में रुचि रखते हैं तो आप टेक्स्ट फ़ाइल देख सकते हैं; यदि आप उस क्रम में घटनाओं के क्रम में रुचि रखते हैं जिस क्रम में वे हुईं तो आप CSV फ़ाइल देख सकते हैं।


When the malware is executed, you will want to capture the network traffic generated as a result of running the malware.

जब मैलवेयर निष्पादित होता है, तो आप मैलवेयर चलाने के परिणामस्वरूप उत्पन्न नेटवर्क ट्रैफ़िक को कैप्चर करना चाहेंगे।


Wireshark is a packet sniffer that allows you to capture the network traffic.

वायर्सार्क एक पैकेट स्निफर है जो आपको नेटवर्क ट्रैफ़िक को कैप्चर करने की अनुमति देता है।


Most malware, when executed, reach out to the internet (command and control server), and it is not a good idea to allow the malware to connect to its C2 server.

अधिकांश मैलवेयर, जब निष्पादित होते हैं, तो इंटरनेट (कमांड और कंट्रोल सर्वर) तक पहुँचते हैं, और मैलवेयर को अपने C2 सर्वर से कनेक्ट करने की अनुमति देना अच्छा विचार नहीं है।


INetSim is a free Linux-based software suite for simulating standard internet services (such as DNS, HTTP/HTTPS, and so on).

INetSim मानक इंटरनेट सेवाओं (जैसे DNS, HTTP/HTTPS, आदि) का अनुकरण करने के लिए एक मुफ्त लिनक्स-आधारित सॉफ़्टवेयर सूट है।


By simulating the services, it was possible to determine that the malware downloads a file from the C2 server after execution.

सेवाओं का अनुकरण करके, यह निर्धारित करना संभव था कि मैलवेयर निष्पादन के बाद C2 सर्वर से एक फ़ाइल डाउनलोड करता है।


At this point, all of the values on the stack are logically removed, even though they are physically present.

इस बिंदु पर, स्टैक पर मौजूद सभी मान तार्किक रूप से हटा दिए जाते हैं, भले ही वे शारीरिक रूप से मौजूद हों।


The main function called the test function and passed the parameters to the test function by pushing them onto the stack.

मुख्य फ़ंक्शन ने टेस्ट फ़ंक्शन को कॉल किया और उन्हें स्टैक पर धकेलकर टेस्ट फ़ंक्शन को पैरामीटर पास किए।


The calling convention dictates how the parameters should be passed and who is responsible for removing them from the stack.

कॉलिंग कन्वेंशन बताता है कि पैरामीटर कैसे पास किए जाने चाहिए और उन्हें स्टैक से हटाने की जिम्मेदारी किसकी है।


Most of the compiled C programs typically follow the cdecl calling convention.

अधिकांश संकलित सी प्रोग्राम आमतौर पर सीdecl कॉलिंग कन्वेंशन का पालन करते हैं।


In the cdecl convention, the caller pushes the parameters in the right-to-left order on the stack.

cdecl कन्वेंशन में, कॉलर स्टैक पर दाएं से बाएं क्रम में पैरामीटर धकेलता है।


There are other calling conventions such as stdcall and fastcall.

अन्य कॉलिंग कन्वेंशन भी हैं जैसे stdcall और fastcall।


Microsoft Windows utilizes the stdcall convention for the functions exported by the DLL files.

Microsoft Windows DLL फ़ाइलों द्वारा निर्यात किए गए कार्यों के लिए stdcall कन्वेंशन का उपयोग करता है।


An array is a list consisting of the same data types.

एक सरणी समान डेटा प्रकारों की एक सूची है।


The array elements are stored in contiguous locations in the memory.

सरणी तत्व मेमोरी में सन्निहित स्थानों में संग्रहीत होते हैं।


The array name nums is a pointer constant that points to the first element of the array.

सरणी का नाम nums एक पॉइंटर स्थिरांक है जो सरणी के पहले तत्व की ओर इशारा करता है।


In a high-level language, to access the elements of the array, you use the array name along with the index.

उच्च-स्तरीय भाषा में, सरणी के तत्वों तक पहुँचने के लिए, आप इंडेक्स के साथ सरणी नाम का उपयोग करते हैं।


The general form for the nums integer array can be represented as follows: nums[i] = nums+i*4

nums पूर्णांक सरणी के लिए सामान्य रूप को इस प्रकार दर्शाया जा सकता है: nums[i] = nums+i*4


Translate the following code to its high-level equivalent.

निम्नलिखित कोड का इसके उच्च-स्तरीय समकक्ष में अनुवाद करें।


The backward jump at ➊, to loc_401022, indicates the loop.

➊ पर पीछे की ओर कूद, loc_401022 पर, लूप को इंगित करता है।


Let's identify the loop variable, the loop initialization, the condition check, and the update statement.

आइए लूप चर, लूप इनिशियलाइज़ेशन, स्थिति जांच और अपडेट स्टेटमेंट की पहचान करें।


एक स्ट्रिंग अक्षरों की एक सरणी है।


When you define a string, a null terminator is added at the end of every string.

जब आप एक स्ट्रिंग को परिभाषित करते हैं, तो प्रत्येक स्ट्रिंग के अंत में एक शून्य टर्मिनेटर जोड़ा जाता है।


The x86 family of processors provides string instructions, which operate on strings.

प्रोसेसरों का x86 परिवार स्ट्रिंग निर्देश प्रदान करता है, जो स्ट्रिंग पर काम करते हैं।


The movsb instruction is used to move 1 byte from the address specified by the esi register to the address specified by the edi register.

movsb निर्देश का उपयोग esi रजिस्टर द्वारा निर्दिष्ट पते से edi रजिस्टर द्वारा निर्दिष्ट पते पर 1 बाइट ले जाने के लिए किया जाता है।


The rep instruction, when used with the movsx instruction, is equivalent to the memcpy() function in C programming.

movsx निर्देश के साथ उपयोग किए जाने पर rep निर्देश, C प्रोग्रामिंग में memcpy() फ़ंक्शन के बराबर है।


The 64-bit Windows operating system can run a 32-bit executable.

64-बिट विंडोज ऑपरेटिंग सिस्टम 32-बिट निष्पादन योग्य फ़ाइल चला सकता है।


When you are analyzing a 32-bit malware on 64-bit Windows, if you find malware accessing the system32 directory, it is really accessing the syswow64 directory.

जब आप 64-बिट विंडोज पर 32-बिट मैलवेयर का विश्लेषण कर रहे हैं, तो यदि आप मैलवेयर को system32 निर्देशिका तक पहुँचते हुए पाते हैं, तो यह वास्तव में syswow64 निर्देशिका तक पहुँच रहा है।


Code analysis tools can be classified based on their functionalities.

कोड विश्लेषण उपकरणों को उनकी कार्यक्षमताओं के आधार पर वर्गीकृत किया जा सकता है।


A disassembler is a program that translates machine code back to assembly code.

एक डिसअसेम्बलर एक प्रोग्राम है जो मशीन कोड को वापस असेंबली कोड में अनुवादित करता है।


Using debuggers, you can execute either a single instruction or selected functions.

डिबगर्स का उपयोग करके, आप या तो एक ही निर्देश या चयनित कार्यों को निष्पादित कर सकते हैं।


Decompilers can greatly assist you with the reverse engineering process.

डीकम्पाइलर रिवर्स इंजीनियरिंग प्रक्रिया में आपकी बहुत सहायता कर सकते हैं।


आईडीए विभिन्न प्लेटफार्मों पर चल सकता है।


You can download the freeware version of IDA for non- commercial use.

आप गैर-व्यावसायिक उपयोग के लिए आईडीए का फ्रीवेयर संस्करण डाउनलोड कर सकते हैं।


The demo version of IDA can be requested by filling in a form.

आईडीए के डेमो संस्करण का अनुरोध एक फॉर्म भरकर किया जा सकता है।


Both demo and freeware version lacks IDAPython support.

डेमो और फ्रीवेयर दोनों संस्करणों में IDAPython का समर्थन नहीं है।


The commercial version of IDA does not lack any functionality.

आईडीए के वाणिज्यिक संस्करण में किसी भी कार्यक्षमता की कमी नहीं है।


In this section and later sections, we will look at various features of IDA Pro.

इस खंड और बाद के खंडों में, हम आईडीए प्रो की विभिन्न विशेषताओं पर गौर करेंगे।


To get a better understanding of IDA, just load a binary and explore various features.

आईडीए को बेहतर ढंग से समझने के लिए, बस एक बाइनरी लोड करें और विभिन्न विशेषताओं का पता लगाएं।


Remember the restrictions in various versions of IDA.

आईडीए के विभिन्न संस्करणों में प्रतिबंधों को याद रखें।


If you wish to look at an alternate tool for debugging, you can use x64dbg.

यदि आप डिबगिंग के लिए एक वैकल्पिक उपकरण देखना चाहते हैं, तो आप x64dbg का उपयोग कर सकते हैं।


एक निष्पादन योग्य फ़ाइल लोड करने के लिए, आईडीए प्रो लॉन्च करें।


After you select the file, IDA shows the loading dialog.

फ़ाइल का चयन करने के बाद, आईडीए लोडिंग संवाद दिखाता है।


IDA determines the best possible loaders.

आईडीए सबसे अच्छे संभव लोडर्स का निर्धारण करता है।


By default, IDA does not load the PE headers.

डिफ़ॉल्ट रूप से, आईडीए पीई हेडर लोड नहीं करता है।


The IDA desktop integrates the features of many common static analysis tools.

आईडीए डेस्कटॉप कई सामान्य स्थैतिक विश्लेषण उपकरणों की विशेषताओं को एकीकृत करता है।


To add a function comment, highlight the function name and press colon (:).

फ़ंक्शन कमेंट जोड़ने के लिए, फ़ंक्शन के नाम को हाइलाइट करें और कोलन (:) दबाएँ।


The pseudocode can now remind you of the function's behavior.

अब छद्म कोड आपको फ़ंक्शन के व्यवहार की याद दिला सकता है।


Whatever manipulation was done earlier was done to the database, not to the executable.

पहले जो भी हेरफेर किया गया था, वह डेटाबेस पर किया गया था, निष्पादन योग्य पर नहीं।


When an executable is loaded into IDA, it creates a database consisting of five files.

जब एक निष्पादन योग्य को IDA में लोड किया जाता है, तो यह पांच फ़ाइलों से युक्त एक डेटाबेस बनाता है।


Each of these files stores various information and has a base name that matches the selected executable.

इनमें से प्रत्येक फ़ाइल विभिन्न जानकारी संग्रहीत करती है और इसका एक आधार नाम होता है जो चयनित निष्पादन योग्य से मेल खाता है।


Any modifications that you make are reflected in the views and saved in the database.

आपके द्वारा किए गए कोई भी बदलाव दृश्यों में परिलक्षित होते हैं और डेटाबेस में सहेजे जाते हैं।


You can save the database by closing IDA; when you close IDA, you will be presented with a Save database dialog.

आप IDA को बंद करके डेटाबेस को सहेज सकते हैं; जब आप IDA बंद करते हैं, तो आपको एक सहेजें डेटाबेस संवाद प्रस्तुत किया जाएगा।


The Pack database option archives all of the files into a single IDB or i64 file.

पैक डेटाबेस विकल्प सभी फ़ाइलों को एक ही IDB या i64 फ़ाइल में संग्रहीत करता है।


When you reopen the .idb or .i64 file, you should be able to see the renamed variables and comments.

जब आप .idb या .i64 फ़ाइल को फिर से खोलते हैं, तो आपको पुनर्नामित चर और टिप्पणियाँ देखने में सक्षम होना चाहिए।


Let's look at another simple program and explore a few more features of IDA.

आइए एक और सरल प्रोग्राम देखें और IDA की कुछ और विशेषताओं का पता लगाएं।


IDA identified three local variables and propagated this information in the program.

IDA ने तीन स्थानीय चर की पहचान की और इस जानकारी को प्रोग्राम में प्रसारित किया।


IDA also identified the global variables and assigned names such as dword_403374 and byte_403370.

IDA ने वैश्विक चर की भी पहचान की और dword_403374 और byte_403370 जैसे नाम निर्दिष्ट किए।


The dummy global variable names assigned by IDA specify the addresses of the variables and what types of data they contain.

IDA द्वारा निर्दिष्ट डमी वैश्विक चर नाम चर के पते और उनमें किस प्रकार का डेटा है, यह निर्दिष्ट करते हैं।


IDA used the offset keyword to indicate that addresses of variables are used.

IDA ने यह इंगित करने के लिए ऑफ़सेट कीवर्ड का उपयोग किया कि चर के पते का उपयोग किया जाता है।


At ➏, IDA assigned the dummy name aTest to the address containing the string (string variable).

➏ पर, IDA ने स्ट्रिंग (स्ट्रिंग चर) वाले पते को डमी नाम aTest निर्दिष्ट किया।


IDA gives you the ability to reformat constant values as a decimal, octal, or binary values.

IDA आपको स्थिरांक मानों को दशमलव, अष्टक या बाइनरी मानों के रूप में पुन: स्वरूपित करने की क्षमता प्रदान करता है।


When a program is disassembled, IDA labels every location in the program.

जब एक प्रोग्राम को अलग किया जाता है, तो IDA प्रोग्राम में हर स्थान को लेबल करता है।


Double-clicking on the locations will jump the display to the selected location.

स्थानों पर डबल-क्लिक करने से डिस्प्ले चयनित स्थान पर कूद जाएगा।


IDA keeps track of your navigation history.

IDA आपके नेविगेशन इतिहास पर नज़र रखता है।


Another way to navigate is by using cross-references (also referred to as Xrefs).

नेविगेट करने का एक और तरीका क्रॉस-रेफरेंस (जिसे Xrefs भी कहा जाता है) का उपयोग करना है।


Using the cross-references to CreateFile, we can determine that the CreateFile API is referenced in two functions.

CreateFile के क्रॉस-रेफरेंस का उपयोग करके, हम यह निर्धारित कर सकते हैं कि CreateFile API को दो कार्यों में संदर्भित किया गया है।


IDA employs a technology called Fast Library Identification and Recognition Technology (FLIRT).

IDA एक ऐसी तकनीक का उपयोग करता है जिसे फास्ट लाइब्रेरी आइडेंटिफिकेशन एंड रिकॉग्निशन टेक्नोलॉजी (FLIRT) कहा जाता है।


In this case, IDA was able to recognize the disassembled function at ➊ as an imported function, and named it CreateFileA.

इस मामले में, IDA ➊ पर विघटित फ़ंक्शन को एक आयातित फ़ंक्शन के रूप में पहचानने में सक्षम था, और इसका नाम CreateFileA रखा।


IDA's capability to identify libraries and imported functions is extremely useful.

लाइब्रेरी और आयातित कार्यों की पहचान करने की IDA की क्षमता बेहद उपयोगी है।


IDA also added names of parameters as comments to indicate which parameter was being pushed.

IDA ने यह इंगित करने के लिए टिप्पणियों के रूप में पैरामीटर के नाम भी जोड़े कि कौन सा पैरामीटर धकेला जा रहा था।


From the preceding disassembly listing, you can tell that malware either creates or opens a file.

उपरोक्त डिसएसेम्बली लिस्टिंग से, आप बता सकते हैं कि मैलवेयर या तो एक फ़ाइल बनाता है या खोलता है।


Malware authors often use symbolic constants, such as GENERIC_WRITE, in their source code.

मैलवेयर लेखक अक्सर अपने स्रोत कोड में GENERIC_WRITE जैसे प्रतीकात्मक स्थिरांक का उपयोग करते हैं।


In this case, from the Windows API documentation, we know that the value 40000000h at ➌ is a symbolic constant that represents GENERIC_WRITE.

इस मामले में, विंडोज एपीआई दस्तावेज़ से, हम जानते हैं कि ➌ पर मान 40000000h एक प्रतीकात्मक स्थिरांक है जो GENERIC_WRITE का प्रतिनिधित्व करता है।


Another feature of IDA is that it maintains a list of standard symbolic constants for the Windows API.

IDA की एक और विशेषता यह है कि यह विंडोज API के लिए मानक प्रतीकात्मक स्थिरांकों की एक सूची बनाए रखता है।


After replacing the constants with symbolic names, the disassembly listing is translated to the one shown in the following snippet.

स्थिरांकों को प्रतीकात्मक नामों से बदलने के बाद, डिसएसेम्बली लिस्टिंग को निम्नलिखित स्निपेट में दिखाए गए में अनुवादित किया जाता है।


Windows supports two parallel sets of APIs: one for ANSI strings, and the other for Unicode strings.

विंडोज दो समानांतर एपीआई सेट का समर्थन करता है: एक ANSI स्ट्रिंग्स के लिए, और दूसरा यूनिकोड स्ट्रिंग्स के लिए।


You will often encounter function names with an Ex suffix in their names, such as RegCreateKeyEx.

आपको अक्सर अपने नामों में Ex प्रत्यय वाले फ़ंक्शन नाम मिलेंगे, जैसे RegCreateKeyEx।


Let's look at an example of a 32-bit malware to understand how malware uses multiple API functions.

आइए यह समझने के लिए 32-बिट मैलवेयर का एक उदाहरण देखें कि मैलवेयर कई एपीआई कार्यों का उपयोग कैसे करता है।


Since we are dealing with 32-bit malware, all the parameters to the RegOpenKeyEx API are pushed onto the stack.

चूंकि हम 32-बिट मैलवेयर से निपट रहे हैं, इसलिए RegOpenKeyEx API के सभी पैरामीटर स्टैक पर धकेल दिए जाते हैं।


After the malware opens the handle to the Run registry key by calling RegOpenKeyEx, the returned handle is moved into the ecx register.

RegOpenKeyEx को कॉल करके मैलवेयर द्वारा रन रजिस्ट्री कुंजी का हैंडल खोलने के बाद, लौटाए गए हैंडल को ecx रजिस्टर में ले जाया जाता है।


From the MSDN documentation for this API, you can tell that the malware uses the RegSetValueEx API to set a value in the Run registry key.

इस API के लिए MSDN दस्तावेज़ से, आप बता सकते हैं कि मैलवेयर रन रजिस्ट्री कुंजी में एक मान सेट करने के लिए RegSetValueEx API का उपयोग करता है।


After adding the entry to the registry key, the malware closes the handle to the registry key by passing the handle it acquired previously.

रजिस्ट्री कुंजी में प्रविष्टि जोड़ने के बाद, मैलवेयर पहले प्राप्त किए गए हैंडल को पास करके रजिस्ट्री कुंजी के हैंडल को बंद कर देता है।


The preceding example demonstrates how malware makes use of multiple Windows API functions.

उपरोक्त उदाहरण बताता है कि मैलवेयर कई विंडोज एपीआई कार्यों का उपयोग कैसे करता है।


In the previous chapter, while discussing the x64 architecture, you learned that the first four parameters are passed in registers.

पिछले अध्याय में, x64 आर्किटेक्चर पर चर्चा करते समय, आपने सीखा कि पहले चार पैरामीटर रजिस्टरों में पारित किए जाते हैं।


When performing malware analysis, you may want to modify the binary to change its inner workings.

मैलवेयर विश्लेषण करते समय, आप इसकी आंतरिक कार्यप्रणाली को बदलने के लिए बाइनरी को संशोधित करना चाह सकते हैं।


In a 32-bit function, the stack grows as arguments are pushed.

32-बिट फ़ंक्शन में, तर्क धकेलने पर स्टैक बढ़ता है।


The allocated stack space is used to store local variables and function parameters.

आवंटित स्टैक स्थान का उपयोग स्थानीय चर और फ़ंक्शन मापदंडों को संग्रहीत करने के लिए किया जाता है।


The lack of push and pop instructions makes it difficult to determine the number of parameters.

पुश और पॉप निर्देशों की कमी से मापदंडों की संख्या निर्धारित करना मुश्किल हो जाता है।


Debugging a 64-bit binary can be challenging.

64-बिट बाइनरी को डीबग करना चुनौतीपूर्ण हो सकता है।


API documentation tells you the number of function parameters.

एपीआई दस्तावेज़ आपको फ़ंक्शन मापदंडों की संख्या बताता है।


You can set a breakpoint at the API call.

आप एपीआई कॉल पर एक ब्रेकपॉइंट सेट कर सकते हैं।


Malware can open a handle to the registry key.

मालवेयर रजिस्ट्री कुंजी के लिए एक हैंडल खोल सकता है।


मालवेयर रजिस्ट्री कुंजी को संशोधित करता है।


This is another type of persistence mechanism used by the malware.

यह मालवेयर द्वारा उपयोग की जाने वाली एक अन्य प्रकार की दृढ़ता तंत्र है।


You will learn how to debug a malicious DLL.

आप सीखेंगे कि एक दुर्भावनापूर्ण DLL को कैसे डीबग किया जाए।


x64dbg लॉन्च करें और DLL लोड करें।


The debugger may pause at the DLL entry point.

डीबगर DLL एंट्री पॉइंट पर रुक सकता है।


DLL को डीबग करने के लिए rundll32.exe का उपयोग करें।


Specify the command-line arguments to rundll32.exe.

rundll32.exe के लिए कमांड-लाइन तर्क निर्दिष्ट करें।


DLL ब्रेकपॉइंट विकल्प जोड़ें।


Reopen the debugger and load rundll32.exe again.

डीबगर को फिर से खोलें और फिर से rundll32.exe लोड करें।


You can debug the DLL like any other program.

आप किसी भी अन्य प्रोग्राम की तरह DLL को डीबग कर सकते हैं।


You may want to debug a DLL that only runs in a specific process.

आप एक DLL को डीबग करना चाह सकते हैं जो केवल एक विशिष्ट प्रक्रिया में चलती है।


Tracing allows you to log events while the process is executing.

ट्रेसिंग आपको प्रक्रिया के निष्पादन के दौरान घटनाओं को लॉग करने की अनुमति देती है।


You can modify data in the memory or instructions of a program.

आप किसी प्रोग्राम की मेमोरी या निर्देशों में डेटा को संशोधित कर सकते हैं।


A debugger allows you to inspect malicious code at a more granular level.

एक डिबगर आपको दुर्भावनापूर्ण कोड को अधिक विस्तृत स्तर पर जांचने की अनुमति देता है।


It provides full control over the malware's runtime behavior.

यह मैलवेयर के रनटाइम व्यवहार पर पूर्ण नियंत्रण प्रदान करता है।


You will mainly learn the debugging features offered by IDA Pro and x64dbg.

आप मुख्य रूप से IDA Pro और x64dbg द्वारा पेश किए गए डिबगिंग सुविधाओं के बारे में जानेंगे।


Proper care needs to be taken when debugging a malware.

मैलवेयर को डिबग करते समय उचित सावधानी बरतने की आवश्यकता होती है।


It is highly recommended that you perform any malware debugging in an isolated environment.

यह अत्यधिक अनुशंसित है कि आप किसी भी मैलवेयर डिबगिंग को एक अलग वातावरण में करें।


Debugging normally begins by selecting the program to debug.

आमतौर पर डिबगिंग डिबग करने के लिए प्रोग्राम का चयन करके शुरू होती है।


There are two ways to debug a program: attach the debugger to a running process, and launch a new process.

किसी प्रोग्राम को डिबग करने के दो तरीके हैं: डिबगर को चल रही प्रक्रिया से जोड़ना, और एक नई प्रक्रिया शुरू करना।


When you attach the debugger to a running process, you will not be able to control or monitor the process's initial actions.

जब आप डिबगर को चल रही प्रक्रिया से जोड़ते हैं, तो आप प्रक्रिया की प्रारंभिक गतिविधियों को नियंत्रित या मॉनिटर नहीं कर पाएंगे।


Launching a new process allows you to monitor or debug every action the process takes.

एक नई प्रक्रिया शुरू करने से आप प्रक्रिया द्वारा की जाने वाली प्रत्येक कार्रवाई की निगरानी या डिबग कर सकते हैं।


When the process is launched under a debugger, the execution will pause at the program's entry point.

जब प्रक्रिया को डिबगर के तहत लॉन्च किया जाता है, तो निष्पादन प्रोग्राम के प्रवेश बिंदु पर रुक जाएगा।


A program's entry point is the address of the first instruction that will be executed.

एक प्रोग्राम का प्रवेश बिंदु पहले निर्देश का पता है जिसे निष्पादित किया जाएगा।


A debugger gives you the ability to control/modify the behavior of the process while it is executing.

एक डिबगर आपको प्रक्रिया के व्यवहार को नियंत्रित/संशोधित करने की क्षमता देता है, जबकि यह निष्पादित हो रहा है।


The two important capabilities offered by a debugger are: the ability to control execution, and the ability to interrupt execution.

एक डिबगर द्वारा पेश की जाने वाली दो महत्वपूर्ण क्षमताएं हैं: निष्पादन को नियंत्रित करने की क्षमता, और निष्पादन को बाधित करने की क्षमता।


Using a debugger, you can execute one or more instructions before returning control to the debugger.

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


This executes all of the instructions, until a breakpoint is reached or an exception occurs.

यह सभी निर्देशों को तब तक निष्पादित करता है जब तक कि एक ब्रेकपॉइंट तक नहीं पहुंच जाता या कोई अपवाद नहीं होता।


Using step into and step over, you can execute a single instruction.

स्टेप इनटू और स्टेप ओवर का उपयोग करके, आप एक ही निर्देश निष्पादित कर सकते हैं।


This option allows you to execute all of the instructions in the current function, until it returns.

यह विकल्प आपको वर्तमान फ़ंक्शन में सभी निर्देशों को तब तक निष्पादित करने की अनुमति देता है जब तक कि यह वापस नहीं आ जाता।


A breakpoint is a debugger feature that allows you to interrupt program execution at a very specific location.

एक ब्रेकपॉइंट एक डिबगर सुविधा है जो आपको प्रोग्राम निष्पादन को एक बहुत ही विशिष्ट स्थान पर बाधित करने की अनुमति देता है।


You can set multiple breakpoints all over a program, and execution will be interrupted upon reaching any of the breakpoints.

आप एक प्रोग्राम में कई ब्रेकपॉइंट सेट कर सकते हैं, और किसी भी ब्रेकपॉइंट तक पहुंचने पर निष्पादन बाधित हो जाएगा।


Tracing is a debugging feature that allows you to record specific events while the process is executing.

ट्रैकिंग एक डिबगिंग सुविधा है जो आपको प्रक्रिया के निष्पादन के दौरान विशिष्ट घटनाओं को रिकॉर्ड करने की अनुमति देती है।


The malware downloads a component and executes it.

यह मैलवेयर एक घटक डाउनलोड करता है और उसे निष्पादित करता है।


Downloaders are often part of exploit shellcode.

डाउनलोडर अक्सर एक्सप्लॉइट शेलकोड का हिस्सा होते हैं।


The program uses API calls like ShellExecute() to run the downloaded file.

यह प्रोग्राम डाउनलोड की गई फ़ाइल को चलाने के लिए ShellExecute() जैसे API कॉल्स का उपयोग करता है।


A breakpoint was set to determine the URL from where the malware binary is being downloaded.

यह निर्धारित करने के लिए एक ब्रेकपॉइंट सेट किया गया था कि मैलवेयर बाइनरी किस URL से डाउनलोड की जा रही है।


The downloaded executable is saved in the %TEMP% directory.

डाउनलोड की गई निष्पादन योग्य फ़ाइल %TEMP% निर्देशिका में सहेजी जाती है।


Malware may also use WinExec() or CreateProcess() to execute the downloaded file.

मैलवेयर डाउनलोड की गई फ़ाइल को चलाने के लिए WinExec() या CreateProcess() का भी उपयोग कर सकता है।


Monitoring tools like Wireshark can help observe a malware's actions.

Wireshark जैसे निगरानी उपकरण मैलवेयर की गतिविधियों को देखने में मदद कर सकते हैं।


A dropper embeds the malware component within itself.

एक ड्रॉपर अपने भीतर मैलवेयर घटक को एम्बेड करता है।


The dropper extracts the malware component and drops it to disk.

ड्रॉपर मैलवेयर घटक को निकालता है और उसे डिस्क पर छोड़ देता है।


Droppers often use FindResource(), LoadResource(), and other API calls.

ड्रॉपर अक्सर FindResource(), LoadResource(), और अन्य API कॉल्स का उपयोग करते हैं।


The Resource Hacker tool shows the presence of a PE file in the resource section.

रिसोर्स हैकर टूल रिसोर्स सेक्शन में एक PE फ़ाइल की उपस्थिति दिखाता है।


Setting a breakpoint on FindResourceA() can help in analysis.

FindResourceA() पर एक ब्रेकपॉइंट सेट करने से विश्लेषण में मदद मिल सकती है।


The return value of LoadResource() is passed to LockResource().

LoadResource() का रिटर्न वैल्यू LockResource() को पास किया जाता है।


Malware determines the size of the resource using SizeofResource().

मैलवेयर SizeofResource() का उपयोग करके संसाधन का आकार निर्धारित करता है।


The malware drops a DLL on the disk using CreateFileA.

मैलवेयर CreateFileA का उपयोग करके डिस्क पर एक DLL छोड़ता है।


A keylogger intercepts and logs keystrokes.

एक कीलॉगर कीस्ट्रोक्स को इंटरसेप्ट करता है और लॉग करता है।


Attackers use keylogging to steal confidential information.

हमलावर गोपनीय जानकारी चुराने के लिए कीलॉगिंग का उपयोग करते हैं।


Keyloggers often use GetAsyncKeyState() and SetWindowsHookEx().

कीलॉगर अक्सर GetAsyncKeyState() और SetWindowsHookEx() का उपयोग करते हैं।


GetAsyncKeyState() checks the state of each key on the keyboard.

GetAsyncKeyState() कीबोर्ड पर प्रत्येक कुंजी की स्थिति की जांच करता है।


SetWindowsHookEx() installs a function to monitor keyboard events.

SetWindowsHookEx() कीबोर्ड इवेंट की निगरानी के लिए एक फ़ंक्शन स्थापित करता है।


The malware performs actions based on commands from the C2 server.

C2 सर्वर से प्राप्त आदेशों के आधार पर मैलवेयर क्रियाएं करता है।


To understand the malware's functions, see the author's presentation.

मैलवेयर के कार्यों को समझने के लिए, लेखक की प्रस्तुति देखें।


PowerShell is often used by malware authors to hide malicious activities.

मैलवेयर लेखक अक्सर दुर्भावनापूर्ण गतिविधियों को छिपाने के लिए PowerShell का उपयोग करते हैं।


PowerShell allows you to create scripts containing multiple commands.

PowerShell आपको कई कमांड वाले स्क्रिप्ट बनाने की अनुमति देता है।


Attackers use PowerShell to execute their malicious code.

हमलावर अपने दुर्भावनापूर्ण कोड को चलाने के लिए PowerShell का उपयोग करते हैं।


PowerShell provides access to major operating system functions.

PowerShell प्रमुख ऑपरेटिंग सिस्टम कार्यों तक पहुंच प्रदान करता है।


Attackers use PowerShell to download additional components.

हमलावर अतिरिक्त घटक डाउनलोड करने के लिए PowerShell का उपयोग करते हैं।


Malicious code often comes via email attachments.

दुर्भावनापूर्ण कोड अक्सर ईमेल अटैचमेंट के माध्यम से आता है।


PowerShell is used in lateral movement within a network.

PowerShell का उपयोग नेटवर्क के भीतर पार्श्व आंदोलन में किया जाता है।


Attackers can execute code directly from memory using PowerShell.

हमलावर PowerShell का उपयोग करके सीधे मेमोरी से कोड चला सकते हैं।


Obfuscated code makes detection with security tools difficult.

अस्पष्टीकृत कोड सुरक्षा उपकरणों के साथ पता लगाना मुश्किल बना देता है।


You can execute a PowerShell command using the interactive console.

आप इंटरैक्टिव कंसोल का उपयोग करके एक PowerShell कमांड चला सकते हैं।


A cmdlet is a compiled command written in .NET.

एक cmdlet .NET में लिखा गया एक संकलित कमांड है।


Cmdlets follow a Verb-Noun naming convention.

Cmdlets एक क्रिया-संज्ञा नामकरण सम्मेलन का पालन करते हैं।


Variables can store values in PowerShell.

PowerShell में चर मान संग्रहीत कर सकते हैं।


PowerShell scripts have a .ps1 extension.

PowerShell स्क्रिप्ट में .ps1 एक्सटेंशन होता है।


The default execution policy prevents script execution.

डिफ़ॉल्ट निष्पादन नीति स्क्रिप्ट निष्पादन को रोकती है।


Change the execution policy to Bypass for analysis.

विश्लेषण के लिए निष्पादन नीति को बायपास में बदलें।


Malware often uses persistence methods to survive reboots.

मैलवेयर अक्सर रीबूट से बचने के लिए निरंतरता विधियों का उपयोग करता है।


Adding entries to run registry keys is a common persistence method.

रन रजिस्ट्री कुंजियों में प्रविष्टियाँ जोड़ना एक सामान्य निरंतरता विधि है।


You can set hardware and conditional breakpoints by editing the breakpoint that is already set.

आप पहले से सेट किए गए ब्रेकपॉइंट को संपादित करके हार्डवेयर और सशर्त ब्रेकपॉइंट सेट कर सकते हैं।


To set a hardware breakpoint, right-click on an existing breakpoint and select Edit breakpoint.

हार्डवेयर ब्रेकपॉइंट सेट करने के लिए, मौजूदा ब्रेकपॉइंट पर राइट-क्लिक करें और 'ब्रेकपॉइंट संपादित करें' चुनें।


IDA allows you to set more than four hardware breakpoints, but only four of them will work.

आईडीए आपको चार से अधिक हार्डवेयर ब्रेकपॉइंट सेट करने की अनुमति देता है, लेकिन उनमें से केवल चार ही काम करेंगे।


You can use hardware breakpoints to specify whether to break on execute (default), break on write, or break on read/write.

आप यह निर्दिष्ट करने के लिए हार्डवेयर ब्रेकपॉइंट का उपयोग कर सकते हैं कि निष्पादित होने पर (डिफ़ॉल्ट), लिखने पर या पढ़ने/लिखने पर ब्रेक करना है या नहीं।


The break on write and break on read/write options allow you to create memory breakpoints when the specified memory location is accessed.

लिखने पर ब्रेक और पढ़ने/लिखने पर ब्रेक विकल्प आपको मेमोरी ब्रेकपॉइंट बनाने की अनुमति देते हैं जब निर्दिष्ट मेमोरी स्थान तक पहुँचा जाता है।


This breakpoint is useful if you want to know when your program accesses a piece of data from a memory location.

यह ब्रेकपॉइंट तब उपयोगी होता है जब आप यह जानना चाहते हैं कि आपका प्रोग्राम किसी मेमोरी स्थान से डेटा के एक टुकड़े तक कब पहुँचता है।


The break on execute option allows you to set a breakpoint when the specified memory location is executed.

निष्पादित होने पर ब्रेक विकल्प आपको ब्रेकपॉइंट सेट करने की अनुमति देता है जब निर्दिष्ट मेमोरी स्थान निष्पादित होता है।


In addition to specifying a mode, you must also specify a size.

एक मोड निर्दिष्ट करने के अलावा, आपको एक आकार भी निर्दिष्ट करना होगा।


A hardware breakpoint's size is combined with its address to form a range of bytes for which the breakpoint may be triggered.

एक हार्डवेयर ब्रेकपॉइंट का आकार उसके पते के साथ मिलकर बाइट्स की एक श्रेणी बनाता है जिसके लिए ब्रेकपॉइंट ट्रिगर हो सकता है।


You can set a conditional breakpoint by specifying the condition in the condition field.

आप शर्त फ़ील्ड में शर्त निर्दिष्ट करके एक सशर्त ब्रेकपॉइंट सेट कर सकते हैं।


The condition can be an actual condition, or IDC or IDAPython expressions.

शर्त एक वास्तविक शर्त, या आईडीसी या आईडीएपाइथन अभिव्यक्ति हो सकती है।


You can click on the ... button next to the condition field, which will open up the editor.

आप शर्त फ़ील्ड के बगल में ... बटन पर क्लिक कर सकते हैं, जो संपादक को खोलेगा।


You can find some examples of setting conditional breakpoints at https://www.hex-rays.com/products/ida/ support/idadoc/1488.shtml.

आप https://www.hex-rays.com/products/ida/ support/idadoc/1488.shtml पर सशर्त ब्रेकपॉइंट सेट करने के कुछ उदाहरण पा सकते हैं।


You can view all of the active breakpoints by navigating to Debugger | Breakpoints | Breakpoint List.

आप डिबगर | ब्रेकपॉइंट | ब्रेकपॉइंट सूची पर जाकर सभी सक्रिय ब्रेकपॉइंट देख सकते हैं।


You can right-click on the breakpoint entry and disable or delete the breakpoint.

आप ब्रेकपॉइंट प्रविष्टि पर राइट-क्लिक कर सकते हैं और ब्रेकपॉइंट को अक्षम या हटा सकते हैं।


In this section, we will look at how to use IDA to debug a malware binary.

इस खंड में, हम देखेंगे कि मैलवेयर बाइनरी को डीबग करने के लिए आईडीए का उपयोग कैसे करें।


Consider the disassembly listing from a 32-bit malware sample.

32-बिट मैलवेयर नमूने से डिसएसेम्बली लिस्टिंग पर विचार करें।


The malware calls the CreateFileW API to create a file, but, just by looking at the disassembly listing, it is not clear what file the malware creates.

मैलवेयर एक फ़ाइल बनाने के लिए CreateFileW API को कॉल करता है, लेकिन, केवल डिसएसेम्बली लिस्टिंग को देखकर, यह स्पष्ट नहीं है कि मैलवेयर कौन सी फ़ाइल बनाता है।


To determine the name of the file, we can set a breakpoint at the address where the call to the CreateFileW ➊ is made, and then run the program.

फ़ाइल का नाम निर्धारित करने के लिए, हम उस पते पर एक ब्रेकपॉइंट सेट कर सकते हैं जहाँ CreateFileW ➊ को कॉल किया जाता है, और फिर प्रोग्राम चला सकते हैं।


After the call to CreateFileW, the handle to the file will be returned in the eax register, which is copied into the esi register at ➋.

CreateFileW को कॉल करने के बाद, फ़ाइल का हैंडल eax रजिस्टर में वापस आ जाएगा, जिसे ➋ पर esi रजिस्टर में कॉपी किया जाता है।


The malware loads a malicious DLL into the process's address space.

यह मैलवेयर एक दुर्भावनापूर्ण DLL को प्रक्रिया के एड्रेस स्पेस में लोड करता है।


To detect this technique, look for suspicious entries in the AppInit_DLLs registry value.

इस तकनीक का पता लगाने के लिए, AppInit_DLLs रजिस्ट्री मान में संदिग्ध प्रविष्टियों की तलाश करें।


Adversaries can take advantage of DLL search order to escalate privileges.

विरोधी विशेषाधिकार बढ़ाने के लिए DLL खोज क्रम का लाभ उठा सकते हैं।


The malicious DLL is loaded by explorer.exe from the C:\Windows directory.

दुर्भावनापूर्ण DLL को explorer.exe द्वारा C:\Windows निर्देशिका से लोड किया जाता है।


The DLL search order hijack technique makes forensic analysis harder.

DLL खोज क्रम अपहरण तकनीक फॉरेंसिक विश्लेषण को कठिन बना देती है।


COM hijacking allows attackers to persist on the system.

COM अपहरण हमलावरों को सिस्टम पर बने रहने की अनुमति देता है।


A service is a program that runs in the background without a user interface.

एक सेवा एक ऐसा प्रोग्राम है जो बिना किसी यूजर इंटरफेस के बैकग्राउंड में चलता है।


An adversary can modify an existing service to persist on the system.

एक विरोधी सिस्टम पर बने रहने के लिए मौजूदा सेवा को संशोधित कर सकता है।


Malware can use the sc utility to create and start a service.

मैलवेयर एक सेवा बनाने और शुरू करने के लिए sc उपयोगिता का उपयोग कर सकता है।


The virtual memory is an illusion created by the operating system.

वर्चुअल मेमोरी एक भ्रम है जो ऑपरेटिंग सिस्टम द्वारा बनाया गया है।


Each process has its own private memory address space.

प्रत्येक प्रक्रिया का अपना निजी मेमोरी एड्रेस स्पेस होता है।


The lower half of the virtual address space is reserved for user processes.

वर्चुअल एड्रेस स्पेस का निचला आधा हिस्सा यूजर प्रक्रियाओं के लिए आरक्षित है।


The kernel memory is shared by all processes.

कर्नेल मेमोरी सभी प्रक्रियाओं द्वारा साझा की जाती है।


Process memory consists of the process executable, DLLs, and environment variables.

प्रक्रिया मेमोरी में प्रक्रिया निष्पादन योग्य, DLL और पर्यावरण चर शामिल हैं।


You can examine the contents of process memory using Process Hacker.

आप प्रोसेस हैकर का उपयोग करके प्रक्रिया मेमोरी की सामग्री की जांच कर सकते हैं।


The kernel memory contains the operating system and device drivers.

कर्नेल मेमोरी में ऑपरेटिंग सिस्टम और डिवाइस ड्राइवर शामिल हैं।


Malware uses API calls to interact with the system.

मैलवेयर सिस्टम के साथ इंटरैक्ट करने के लिए एपीआई कॉल का उपयोग करता है।


Code injection is the technique of injecting malicious code into a target process.

कोड इंजेक्शन एक लक्ष्य प्रक्रिया में दुर्भावनापूर्ण कोड इंजेक्ट करने की तकनीक है।


An attacker typically chooses a legitimate process as the target process.

एक हमलावर आमतौर पर एक वैध प्रक्रिया को लक्ष्य प्रक्रिया के रूप में चुनता है।


After injecting the code, the malware can perform malicious actions.

कोड इंजेक्ट करने के बाद, मैलवेयर दुर्भावनापूर्ण कार्य कर सकता है।


HAL isolates the operating system from the hardware.

HAL ऑपरेटिंग सिस्टम को हार्डवेयर से अलग करता है।


The kernel mode device drivers invoke functions exposed by hal.dll to interact with the hardware.

कर्नेल मोड डिवाइस ड्राइवर हार्डवेयर के साथ इंटरैक्ट करने के लिए hal.dll द्वारा उजागर किए गए कार्यों को लागू करते हैं।


The executive implements functions called system service routines.

एग्जीक्यूटिव सिस्टम सर्विस रूटीन नामक कार्यों को लागू करता है।


The kernel implements low-level operating system services.

कर्नेल निम्न-स्तरीय ऑपरेटिंग सिस्टम सेवाओं को लागू करता है।


Win32K.sys implements UI and graphics device interface (GDI) services.

Win32K.sys UI और ग्राफिक्स डिवाइस इंटरफ़ेस (GDI) सेवाओं को लागू करता है।


The user-space contains code that runs with restricted access.

उपयोगकर्ता-स्थान में कोड होता है जो प्रतिबंधित पहुंच के साथ चलता है।


The kernel space contains the kernel itself and the device drivers.

कर्नेल स्पेस में स्वयं कर्नेल और डिवाइस ड्राइवर होते हैं।


The code running in the kernel space executes with a high privilege.

कर्नेल स्पेस में चलने वाला कोड उच्च विशेषाधिकार के साथ निष्पादित होता है।


If the user-mode applications cannot directly interact with the hardware, then the question is, how can a malware binary write content to a file?

यदि उपयोगकर्ता-मोड एप्लिकेशन सीधे हार्डवेयर के साथ इंटरैक्ट नहीं कर सकते हैं, तो सवाल यह है कि मैलवेयर बाइनरी फ़ाइल में सामग्री कैसे लिख सकता है?


Most of the APIs called by user-mode applications, end up calling the system service routines.

उपयोगकर्ता-मोड अनुप्रयोगों द्वारा कॉल किए गए अधिकांश एपीआई, सिस्टम सर्विस रूटीन को कॉल करते हैं।


The ntdll.dll acts as the gateway between the user-space and the kernel space.

ntdll.dll उपयोगकर्ता-स्थान और कर्नेल स्पेस के बीच गेटवे के रूप में कार्य करता है।


The Windows operating system provides services by exposing APIs implemented in DLLs.

विंडोज ऑपरेटिंग सिस्टम DLL में लागू एपीआई को उजागर करके सेवाएं प्रदान करता है।


An application uses the service by calling the API implemented in the DLL.

एक एप्लिकेशन DLL में लागू API को कॉल करके सेवा का उपयोग करता है।


Most API functions end up calling the system service routine in the ntoskrnl.exe.

अधिकांश एपीआई फ़ंक्शन ntoskrnl.exe में सिस्टम सर्विस रूटीन को कॉल करते हैं।


When a process is invoked by double-clicking a program, the process executable image and all its associated DLLs are loaded.

जब किसी प्रोग्राम पर डबल-क्लिक करके किसी प्रक्रिया को लागू किया जाता है, तो प्रक्रिया निष्पादन योग्य छवि और उसके सभी संबद्ध DLL लोड हो जाते हैं।


The thread that is created starts executing in the user-mode.

बनाया गया थ्रेड उपयोगकर्ता-मोड में निष्पादन शुरू करता है।


Let's suppose that an application needs to call the WriteFile() API.

मान लीजिए कि किसी एप्लिकेशन को WriteFile() API को कॉल करने की आवश्यकता है।


An application can also load a DLL during runtime by calling the LoadLibrary() API.

एक एप्लिकेशन रनटाइम के दौरान LoadLibrary() API को कॉल करके भी एक DLL लोड कर सकता है।


The NtWriteFile() function in ntdll.dll is just a stub routine.

ntdll.dll में NtWriteFile() फ़ंक्शन केवल एक स्टब रूटीन है।


The objective of a code injection technique is to inject code into the remote process memory.

कोड इंजेक्शन तकनीक का उद्देश्य रिमोट प्रक्रिया मेमोरी में कोड इंजेक्ट करना है।


शिम कोड एपीआई कॉलों को पुनर्निर्देशित करता है।


Applications use the IAT to call Windows APIs.

एप्लीकेशन विंडोज एपीआई को कॉल करने के लिए आईएटी का उपयोग करते हैं।


शिम एपीआई पैरामीटर को संशोधित कर सकता है।


आइए एक उदाहरण के साथ शम्स को समझते हैं।


An application might check the OS version.

एक एप्लिकेशन ओएस संस्करण की जांच कर सकता है।


The GetVersion() API is used to determine the OS.

ओएस निर्धारित करने के लिए GetVersion() API का उपयोग किया जाता है।


The application might not work on a newer OS.

एप्लिकेशन नए ओएस पर काम नहीं कर सकता है।


A shim can make the application compatible.

एक शिम एप्लिकेशन को संगत बना सकता है।


शिम इंजन एपीआई कॉलों को रोकता है।


शिम आईएटी को संशोधित करता है।


Attackers can abuse shims for malicious purposes.

हमलावर दुर्भावनापूर्ण उद्देश्यों के लिए शम्स का दुरुपयोग कर सकते हैं।


शिम का उपयोग कोड इंजेक्शन के लिए किया जा सकता है।


एक शिम बनाने में कई चरण शामिल हैं।


You need administrator rights to install a shim.

शिम स्थापित करने के लिए आपको प्रशासक अधिकारों की आवश्यकता है।


The Compatibility Administrator Tool is used.

संगतता प्रशासक उपकरण का उपयोग किया जाता है।


हम notepad.exe के लिए एक शिम बनाएंगे।


InjectDll शिम का चयन किया गया है।


शिम डेटाबेस को तब सहेजा जाता है।


The database is installed using sdbinst.exe.

डेटाबेस को sdbinst.exe का उपयोग करके स्थापित किया जाता है।


The malware replaces the first few instructions of a function with a jump.

मालवेयर एक फ़ंक्शन के पहले कुछ निर्देशों को जंप के साथ बदल देता है।


Attackers often use simple encoding algorithms to obscure data.

हमलावर अक्सर डेटा को अस्पष्ट करने के लिए सरल एन्कोडिंग एल्गोरिदम का उपयोग करते हैं।


This technique can be detected by looking for unexpected jump instructions.

इस तकनीक का पता अप्रत्याशित जंप निर्देशों की तलाश करके लगाया जा सकता है।


Malware may use a call instruction, or a combination of push and ret instructions.

मालवेयर एक कॉल निर्देश, या पुश और रिट निर्देशों के संयोजन का उपयोग कर सकता है।


Zeus bot hooks various API functions; one of them is the HttpSendRequestA() in Internet Explorer.

ज़ीउस बॉट विभिन्न एपीआई फ़ंक्शंस को हुक करता है; उनमें से एक इंटरनेट एक्सप्लोरर में HttpSendRequestA() है।


The malware can extract credentials from the POST payload.

मालवेयर पोस्ट पेलोड से क्रेडेंशियल निकाल सकता है।


After injecting the executable, HttpSendRequestA() is hooked.

निष्पादन योग्य को इंजेक्ट करने के बाद, HttpSendRequestA() को हुक किया जाता है।


It is possible to perform in-memory patching using the application compatibility shim.

एप्लिकेशन संगतता शिम का उपयोग करके इन-मेमोरी पैचिंग करना संभव है।


Microsoft uses the feature of in-memory patching to apply patches to fix vulnerabilities.

Microsoft कमजोरियों को ठीक करने के लिए पैच लागू करने के लिए इन-मेमोरी पैचिंग की सुविधा का उपयोग करता है।


Malware authors have used in-memory patching to inject code and hook the API functions.

मालवेयर लेखकों ने कोड इंजेक्ट करने और एपीआई फ़ंक्शंस को हुक करने के लिए इन-मेमोरी पैचिंग का उपयोग किया है।


You can examine the .sdb file using the sdb_dump_database.py script.

आप sdb_dump_database.py स्क्रिप्ट का उपयोग करके .sdb फ़ाइल की जांच कर सकते हैं।


The output of the preceding command shows the malware targeting explorer.exe.

उपरोक्त कमांड का आउटपुट दिखाता है कि मालवेयर explorer.exe को लक्षित कर रहा है।


To know what the shellcode is doing, we need to be able to parse PATCH_BITS.

यह जानने के लिए कि शेलकोड क्या कर रहा है, हमें PATCH_BITS को पार्स करने में सक्षम होने की आवश्यकता है।


The malware replaced the series of NOP instructions with call 0x000c61a4.

मालवेयर ने NOP निर्देशों की श्रृंखला को कॉल 0x000c61a4 से बदल दिया।


This technique is interesting, because the malware does not allocate memory or inject code directly.

यह तकनीक दिलचस्प है, क्योंकि मालवेयर सीधे मेमोरी आवंटित नहीं करता है या कोड इंजेक्ट नहीं करता है।


In this chapter, we looked at the different code injection techniques.

इस अध्याय में, हमने विभिन्न कोड इंजेक्शन तकनीकों पर ध्यान दिया।


An attacker can hijack the API functions called by a legitimate process.

एक हमलावर एक वैध प्रक्रिया द्वारा बुलाए गए एपीआई फ़ंक्शंस को हाईजैक कर सकता है।


Malware authors often use various obfuscation techniques to hide information.

मालवेयर लेखक अक्सर जानकारी छिपाने के लिए विभिन्न अस्पष्टता तकनीकों का उपयोग करते हैं।


Adversaries typically use encoding/encryption techniques to conceal the information.

प्रतिकूल आमतौर पर जानकारी को छिपाने के लिए एन्कोडिंग/एन्क्रिप्शन तकनीकों का उपयोग करते हैं।


Malware encrypts the plaintext, by passing it as input along with the key.

मालवेयर प्लेनटेक्स्ट को एन्क्रिप्ट करता है, इसे कुंजी के साथ इनपुट के रूप में पास करके।


The previous script iterates through the names window to identify the dec_function.

पिछला स्क्रिप्ट नामों की विंडो के माध्यम से दोहराता है ताकि dec_function की पहचान की जा सके।


If the dec_function is present, it determines the address of dec_function.

यदि dec_function मौजूद है, तो यह dec_function का पता निर्धारित करता है।


It uses the address of dec_function to determine the cross-references (Xrefs) to dec_function.

यह dec_function के क्रॉस-रेफरेंस (Xrefs) निर्धारित करने के लिए dec_function के पते का उपयोग करता है।


It sets the breakpoint on all the addresses where dec_function is called.

यह उन सभी पतों पर ब्रेकपॉइंट सेट करता है जहां dec_function को बुलाया जाता है।


यह स्वचालित रूप से डिबगर शुरू करता है।


When the breakpoint is hit at dec_function, it reads the encrypted string.

जब ब्रेकपॉइंट dec_function पर हिट होता है, तो यह एन्क्रिप्टेड स्ट्रिंग को पढ़ता है।


A point to remember is, for the IDA debugger to start automatically, be sure to select the debugger.

याद रखने योग्य बात यह है कि IDA डिबगर को स्वचालित रूप से शुरू करने के लिए, डिबगर का चयन करना सुनिश्चित करें।


It then steps over the function to execute the decryption function.

फिर यह डिक्रिप्शन फ़ंक्शन को निष्पादित करने के लिए फ़ंक्शन पर कदम रखता है।


It repeats the previous steps, to decrypt each string passed to dec_function.

यह पिछले चरणों को दोहराता है, dec_function को पास की गई प्रत्येक स्ट्रिंग को डिक्रिप्ट करने के लिए।


After running the previous script, the encrypted strings and their corresponding decrypted strings are displayed.

पिछले स्क्रिप्ट को चलाने के बाद, एन्क्रिप्टेड स्ट्रिंग और उनके संबंधित डिक्रिप्टेड स्ट्रिंग प्रदर्शित होते हैं।


From the output, you can see that the malware decrypts the file names.

आउटपुट से, आप देख सकते हैं कि मैलवेयर फ़ाइल नामों को डिक्रिप्ट करता है।


Malware authors often use packers and cryptors to obfuscate the executable content.

मैलवेयर लेखक अक्सर निष्पादन योग्य सामग्री को अस्पष्ट करने के लिए पैकर्स और क्रिप्टर्स का उपयोग करते हैं।


A packer is a program that takes a normal executable, compresses its contents, and generates a new obfuscated executable.

एक पैकर एक प्रोग्राम है जो एक सामान्य निष्पादन योग्य लेता है, उसकी सामग्री को संपीड़ित करता है, और एक नया अस्पष्ट निष्पादन योग्य उत्पन्न करता है।


When a binary is packed, it reveals very less information.

जब एक बाइनरी पैक की जाती है, तो यह बहुत कम जानकारी प्रकट करती है।


To unpack a packed binary, you can either use automated tools or do it manually.

एक पैक बाइनरी को अनपैक करने के लिए, आप या तो स्वचालित उपकरणों का उपयोग कर सकते हैं या इसे मैन्युअल रूप से कर सकते हैं।


पहला कदम OEP की पहचान करना है।


The original entry point (OEP) is the address of the malware's first instruction.

मूल प्रविष्टि बिंदु (OEP) मैलवेयर के पहले निर्देश का पता है।


The next step involves executing the program until the OEP is reached.

अगले चरण में OEP तक पहुंचने तक प्रोग्राम को निष्पादित करना शामिल है।


The third step involves dumping the unpacked process from the memory to disk.

तीसरे चरण में मेमोरी से डिस्क पर अनपैक की गई प्रक्रिया को डंप करना शामिल है।


To demonstrate the previous concepts, we will use a malware packed with the UPX packer.

पिछले अवधारणाओं को प्रदर्शित करने के लिए, हम UPX पैकर के साथ पैक किए गए मैलवेयर का उपयोग करेंगे।


Malware authors often use simple encoding techniques to obscure data.

मैलवेयर लेखक अक्सर डेटा को अस्पष्ट करने के लिए सरल एन्कोडिंग तकनीकों का उपयोग करते हैं।


XOR is a bitwise operation, and it is performed on the corresponding bits of the operands.

XOR एक बिटवाइज ऑपरेशन है, और यह ऑपरेंड के संबंधित बिट्स पर किया जाता है।


In the XOR operation, when both the bits are the same, the result is 0; otherwise, the result is 1.

XOR ऑपरेशन में, जब दोनों बिट समान होते हैं, तो परिणाम 0 होता है; अन्यथा, परिणाम 1 होता है।


For example, when you XOR 2 and 4, that is, 2 ^ 4, the result is 6.

उदाहरण के लिए, जब आप 2 और 4 का XOR करते हैं, यानी, 2 ^ 4, तो परिणाम 6 होता है।


In a single byte XOR, each byte from the plaintext is XORed with the encryption key.

एकल बाइट XOR में, प्लेनटेक्स्ट का प्रत्येक बाइट एन्क्रिप्शन कुंजी के साथ XOR किया जाता है।


Another interesting property of XOR is that when you XOR the ciphertext with the same key used to encrypt, you get back the plain text.

XOR का एक और दिलचस्प गुण यह है कि जब आप सिफरटेक्स्ट को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली समान कुंजी के साथ XOR करते हैं, तो आपको प्लेन टेक्स्ट वापस मिल जाता है।


This means that if you know the key, then the same function can be used to both encrypt and decrypt the data.

इसका मतलब है कि यदि आप कुंजी जानते हैं, तो डेटा को एन्क्रिप्ट और डिक्रिप्ट दोनों के लिए समान फ़ंक्शन का उपयोग किया जा सकता है।


With an understanding of the XOR encoding algorithm, let's look at an example of a keylogger.

XOR एन्कोडिंग एल्गोरिदम की समझ के साथ, आइए एक कीलॉगर के उदाहरण पर नज़र डालें।


The enc_function takes two arguments; the 1st argument is the buffer containing the data to encrypt, and the 2nd argument is the length of the buffer.

enc_function दो तर्क लेता है; पहला तर्क एन्क्रिप्ट करने के लिए डेटा युक्त बफर है, और दूसरा तर्क बफर की लंबाई है।


Examining the enc_function shows that the malware uses single byte XOR.

enc_function की जांच से पता चलता है कि मैलवेयर एकल बाइट XOR का उपयोग करता है।


In a single byte XOR, the length of the key is one byte, so there can be only 255 possible keys.

एकल बाइट XOR में, कुंजी की लंबाई एक बाइट होती है, इसलिए केवल 255 संभावित कुंजियाँ हो सकती हैं।


This technique is useful if you know what to find in the decrypted data.

यह तकनीक उपयोगी है यदि आप जानते हैं कि डिक्रिप्ट किए गए डेटा में क्या खोजना है।


You can also use a tool such as ConverterNET to brute-force and determine the key.

आप कुंजी को ब्रूट-फ़ोर्स करने और निर्धारित करने के लिए ConverterNET जैसे टूल का भी उपयोग कर सकते हैं।


In XOR encoding, when a null byte (0x00) is XORed with a key, you get back the key.

XOR एन्कोडिंग में, जब एक शून्य बाइट (0x00) को एक कुंजी के साथ XOR किया जाता है, तो आपको कुंजी वापस मिल जाती है।


To avoid the null byte problem, malware authors ignore the null byte and the encryption key during encryption.

शून्य बाइट समस्या से बचने के लिए, मैलवेयर लेखक एन्क्रिप्शन के दौरान शून्य बाइट और एन्क्रिप्शन कुंजी को अनदेखा करते हैं।


Attackers commonly use multi-byte XOR because it provides better defense against the brute-force technique.

हमलावर आमतौर पर मल्टी-बाइट XOR का उपयोग करते हैं क्योंकि यह ब्रूट-फ़ोर्स तकनीक के खिलाफ बेहतर सुरक्षा प्रदान करता है।


The decrypted content is a PE (executable file).

डिक्रिप्ट किया गया कंटेंट एक PE (एक्जीक्यूटेबल फ़ाइल) है।


To identify XOR encoding, load the binary in IDA and search for the XOR instruction.

XOR एन्कोडिंग की पहचान करने के लिए, IDA में बाइनरी लोड करें और XOR निर्देश खोजें।


Malware authors often use simple encoding techniques.

मैलवेयर लेखक अक्सर सरल एन्कोडिंग तकनीकों का उपयोग करते हैं।


To identify the use of cryptographic functionality in the binary, you can look for cryptographic indicators.

बाइनरी में क्रिप्टोग्राफिक कार्यक्षमता के उपयोग की पहचान करने के लिए, आप क्रिप्टोग्राफिक संकेतकों की तलाश कर सकते हैं।


The standalone executable is distributed for Windows, macOS, and Linux operating systems.

स्वतंत्र रूप से चलने योग्य फ़ाइल विंडोज, macOS और लिनक्स ऑपरेटिंग सिस्टम के लिए वितरित की जाती है।


The advantage of a standalone executable is that you don't need to install the Python interpreter or Volatility dependencies.

स्वतंत्र रूप से चलने योग्य फ़ाइल का लाभ यह है कि आपको पायथन इंटरप्रेटर या वोलैटिलिटी निर्भरता स्थापित करने की आवश्यकता नहीं है।


On Windows, once the standalone executable is downloaded, you can check whether Volatility is ready to use by executing the standalone executable with the -h (--help) option from the command line.

विंडोज पर, एक बार स्वतंत्र रूप से चलने योग्य फ़ाइल डाउनलोड हो जाने के बाद, आप कमांड लाइन से -h (--help) विकल्प के साथ स्वतंत्र रूप से चलने योग्य फ़ाइल को निष्पादित करके जांच सकते हैं कि वोलैटिलिटी उपयोग के लिए तैयार है या नहीं।


The help option displays various options and plugins that are available in Volatility.

सहायता विकल्प वोलैटिलिटी में उपलब्ध विभिन्न विकल्पों और प्लगइन्स को प्रदर्शित करता है।


In the same manner, you can download the standalone executables for Linux or macOS and check if Volatility is ready to use by executing the standalone executable with the -h (or -- help) option, as follows:

इसी तरह, आप लिनक्स या macOS के लिए स्वतंत्र रूप से चलने योग्य फ़ाइलों को डाउनलोड कर सकते हैं और जांच सकते हैं कि वोलैटिलिटी -h (या --help) विकल्प के साथ स्वतंत्र रूप से चलने योग्य फ़ाइल को निष्पादित करके उपयोग के लिए तैयार है या नहीं, जैसा कि निम्नलिखित में है:


Volatility is also distributed as a source package; you can run it on Windows, macOS, or Linux operating systems.

वोलैटिलिटी को एक स्रोत पैकेज के रूप में भी वितरित किया जाता है; आप इसे विंडोज, macOS या लिनक्स ऑपरेटिंग सिस्टम पर चला सकते हैं।


Volatility relies on various plugins to perform tasks, and some of these plugins depend on third-party Python packages.

वोलैटिलिटी कार्यों को करने के लिए विभिन्न प्लगइन्स पर निर्भर करता है, और इनमें से कुछ प्लगइन्स तीसरे पक्ष के पायथन पैकेजों पर निर्भर करते हैं।


To run Volatility, you need to install Python 2.7 Interpreter and its dependencies.

वोलैटिलिटी चलाने के लिए, आपको पायथन 2.7 इंटरप्रेटर और इसकी निर्भरताएँ स्थापित करने की आवश्यकता है।


The web page: https://github.com/ volatilityfoundation/volatility/wiki/Installation#recommended-packages contains a list of the third-party Python packages that are required by some of the Volatility plugins.

वेब पेज: https://github.com/ volatilityfoundation/volatility/wiki/Installation#recommended-packages में उन तीसरे पक्ष के पायथन पैकेजों की एक सूची है जो कुछ वोलैटिलिटी प्लगइन्स द्वारा आवश्यक हैं।


Once all the dependencies are installed, download the Volatility source code package, extract it, and run Volatility, as follows:

एक बार सभी निर्भरताएँ स्थापित हो जाने के बाद, वोलैटिलिटी स्रोत कोड पैकेज डाउनलोड करें, इसे निकालें और वोलैटिलिटी चलाएँ, जैसा कि निम्नलिखित में है:


All the examples mentioned in this book use the Volatility Python script (python vol.py) from the source package.

इस पुस्तक में उल्लिखित सभी उदाहरण स्रोत पैकेज से वोलैटिलिटी पायथन स्क्रिप्ट (python vol.py) का उपयोग करते हैं।


You are free to choose a standalone executable, but just remember to replace python vol.py with the standalone executable name.

आप एक स्वतंत्र रूप से चलने योग्य फ़ाइल चुनने के लिए स्वतंत्र हैं, लेकिन बस याद रखें कि python vol.py को स्वतंत्र रूप से चलने योग्य फ़ाइल के नाम से बदलें।


Volatility consists of various plugins that can extract different information from the memory image.

वोलैटिलिटी में विभिन्न प्लगइन्स होते हैं जो मेमोरी इमेज से अलग-अलग जानकारी निकाल सकते हैं।


The python vol.py -h option displays the supported plugins.

python vol.py -h विकल्प समर्थित प्लगइन्स को प्रदर्शित करता है।


For instance, if you wish to list the running processes from the memory image, you can use a plugin such a pslist, or if you wish to list the network connections, you can use a different plugin.

उदाहरण के लिए, यदि आप मेमोरी इमेज से चल रही प्रक्रियाओं को सूचीबद्ध करना चाहते हैं, तो आप pslist जैसे प्लगइन का उपयोग कर सकते हैं, या यदि आप नेटवर्क कनेक्शन को सूचीबद्ध करना चाहते हैं, तो आप एक अलग प्लगइन का उपयोग कर सकते हैं।


Irrespective of the plugin that you use, you will use the following command syntax.

आपके द्वारा उपयोग किए जाने वाले प्लगइन के बावजूद, आप निम्नलिखित कमांड सिंटैक्स का उपयोग करेंगे।


Using -f, you specify the path to the memory image file, and -- profile tells Volatility which system and architecture the memory image was acquired from.

-f का उपयोग करके, आप मेमोरी इमेज फ़ाइल का पथ निर्दिष्ट करते हैं, और --profile वोलैटिलिटी को बताता है कि मेमोरी इमेज किस सिस्टम और आर्किटेक्चर से प्राप्त की गई थी।


The following command uses the pslist plugin to list the running processes from the memory image acquired from Windows 7 (32-bit) running Service Pack 1:

निम्नलिखित कमांड विंडोज 7 (32-बिट) से प्राप्त मेमोरी इमेज से चल रही प्रक्रियाओं को सूचीबद्ध करने के लिए pslist प्लगइन का उपयोग करता है जो सर्विस पैक 1 चला रहा है:


Sometimes, you might not know what profile to supply to Volatility.

कभी-कभी, आप यह नहीं जानते होंगे कि वोलैटिलिटी को कौन सा प्रोफाइल देना है।


In that case, you can use the imageinfo plugin, which will determine the correct profile.

उस स्थिति में, आप imageinfo प्लगइन का उपयोग कर सकते हैं, जो सही प्रोफाइल निर्धारित करेगा।


The second node describes a memory range.

दूसरा नोड एक मेमोरी रेंज का वर्णन करता है।


This malware injects code into a legitimate explorer.exe process.

यह मैलवेयर एक वैध explorer.exe प्रक्रिया में कोड इंजेक्ट करता है।


To detect code injection, we can look for memory ranges containing a memory protection of PAGE_EXECUTE_READWRITE.

कोड इंजेक्शन का पता लगाने के लिए, हम PAGE_EXECUTE_READWRITE की मेमोरी सुरक्षा वाले मेमोरी रेंज की तलाश कर सकते हैं।


If an attacker wants to inject a PE file, then a memory with a PAGE_EXECUTE_READWRITE protection needs be allocated.

यदि कोई हमलावर एक PE फ़ाइल इंजेक्ट करना चाहता है, तो PAGE_EXECUTE_READWRITE सुरक्षा वाली मेमोरी आवंटित करने की आवश्यकता है।


Detecting Advanced Malware Using Memory Forensics

मेमोरी फ़ॉरेंसिक्स का उपयोग करके उन्नत मैलवेयर का पता लगाना


The memory protection of PAGE_EXECUTE_READWRITE and the presence of the PE file is a clear indication that the executable was not normally loaded.

PAGE_EXECUTE_READWRITE की मेमोरी सुरक्षा और PE फ़ाइल की उपस्थिति एक स्पष्ट संकेत है कि निष्पादन योग्य सामान्य रूप से लोड नहीं किया गया था।


Sometimes, displaying the contents of a memory region may not be enough to identify malicious code.

कभी-कभी, मेमोरी क्षेत्र की सामग्री को प्रदर्शित करना दुर्भावनापूर्ण कोड की पहचान करने के लिए पर्याप्त नहीं हो सकता है।


To determine if there is any malicious code, we can dump the contents of these memory regions.

यह निर्धारित करने के लिए कि क्या कोई दुर्भावनापूर्ण कोड है, हम इन मेमोरी क्षेत्रों की सामग्री को डंप कर सकते हैं।


If you suspect that the memory region contains a shellcode, you can use dis command in volshell to disassemble the code.

यदि आपको संदेह है कि मेमोरी क्षेत्र में एक शेलकोड है, तो आप कोड को अलग करने के लिए volshell में dis कमांड का उपयोग कर सकते हैं।


After you have identified the injected code, you may want to dump it to disk for further analysis.

इंजेक्ट किए गए कोड की पहचान करने के बाद, आप आगे के विश्लेषण के लिए इसे डिस्क पर डंप करना चाह सकते हैं।


Some malware programs use stealth techniques to bypass detection.

कुछ मैलवेयर प्रोग्राम पहचान से बचने के लिए चुपके तकनीकों का उपयोग करते हैं।


Hollow Process Injection (or Process Hollowing) is also a code injection technique.

होलो प्रोसेस इंजेक्शन (या प्रोसेस होलोइंग) भी एक कोड इंजेक्शन तकनीक है।


Let’s assume that there are two processes, A and B.

मान लीजिए कि दो प्रक्रियाएँ हैं, A और B।


Process A starts the legitimate process B, in the suspended mode.

प्रक्रिया A वैध प्रक्रिया B को निलंबित मोड में शुरू करती है।


Process A gets the malicious executable that will be injected into the remote process.

प्रक्रिया A दुर्भावनापूर्ण निष्पादन योग्य प्राप्त करती है जिसे दूरस्थ प्रक्रिया में इंजेक्ट किया जाएगा।


Malware can determine the base address by reading the PEB.

मैलवेयर PEB को पढ़कर बेस एड्रेस निर्धारित कर सकता है।


Process A then deallocates the executable section of the legitimate process.

प्रक्रिया A फिर वैध प्रक्रिया के निष्पादन योग्य अनुभाग को डीएलोकेट करती है।


Process A then allocates the memory in the legitimate process B with read, write, and execute permission.

प्रक्रिया A फिर वैध प्रक्रिया B में रीड, राइट और एग्जीक्यूट परमिशन के साथ मेमोरी आवंटित करती है।


As a result of that, the legitimate process now starts executing malicious code.

परिणामस्वरूप, वैध प्रक्रिया अब दुर्भावनापूर्ण कोड का निष्पादन शुरू कर देती है।


To detect hollow process injection, you can look for the discrepancies created between PEB and VAD.

होलो प्रोसेस इंजेक्शन का पता लगाने के लिए, आप PEB और VAD के बीच बनाई गई विसंगतियों की तलाश कर सकते हैं।


Using DKOM, it is possible to hide a process or a driver.

DKOM का उपयोग करके, किसी प्रक्रिया या ड्राइवर को छिपाना संभव है।


To hide a process, an attacker finds the _EPROCESS structure of the malicious process he/she wants to hide and modifies the ActiveProcessLinks field.

किसी प्रक्रिया को छिपाने के लिए, एक हमलावर दुर्भावनापूर्ण प्रक्रिया की _EPROCESS संरचना ढूंढता है जिसे वह छिपाना चाहता है और ActiveProcessLinks फ़ील्ड को संशोधित करता है।


In particular, the Flink of the previous _EPROCESS block is made to point to the Flink of the following _EPROCESS block, and the Blink of the following _EPROCESS block is set to point to the previous _EPROCESS block's Flink.

विशेष रूप से, पिछली _EPROCESS ब्लॉक का Flink, निम्नलिखित _EPROCESS ब्लॉक के Flink की ओर इशारा करता है, और निम्नलिखित _EPROCESS ब्लॉक का Blink, पिछली _EPROCESS ब्लॉक के Flink की ओर इशारा करने के लिए सेट किया गया है।


As a result of this, the _EPROCESS block associated with the malware process is unlinked from the doubly linked list.

इसके परिणामस्वरूप, मैलवेयर प्रक्रिया से जुड़ी _EPROCESS ब्लॉक को डबल-लिंक्ड सूची से अलग कर दिया जाता है।


By unlinking a process, an attacker can hide the malicious process from the live forensic tools that rely on walking the doubly linked list to enumerate the active processes.

किसी प्रक्रिया को अलग करके, एक हमलावर दुर्भावनापूर्ण प्रक्रिया को लाइव फॉरेंसिक टूल से छिपा सकता है जो सक्रिय प्रक्रियाओं को सूचीबद्ध करने के लिए डबल-लिंक्ड सूची पर निर्भर करते हैं।


As you might have guessed, this technique also hides the malicious process from the pslist plugin (which also relies on walking the doubly linked list).

जैसा कि आपने अनुमान लगाया होगा, यह तकनीक दुर्भावनापूर्ण प्रक्रिया को pslist प्लगइन से भी छिपाती है (जो डबल-लिंक्ड सूची पर चलने पर भी निर्भर करता है)।


The following is the pslist and psscan output from a system infected with the prolaco rootkit, which performs DKOM to hide a process.

निम्नलिखित prolaco रूटकिट से संक्रमित सिस्टम से pslist और psscan आउटपुट है, जो एक प्रक्रिया को छिपाने के लिए DKOM करता है।


For the sake of brevity, some of the entries are truncated from the following output.

संक्षेप के लिए, निम्नलिखित आउटपुट से कुछ प्रविष्टियों को छोटा कर दिया गया है।


When you compare the output from pslist and psscan, you will notice an additional process called nvid.exe (pid 1700) in the psscan output that's not present in the pslist.

जब आप pslist और psscan से आउटपुट की तुलना करते हैं, तो आप psscan आउटपुट में nvid.exe (pid 1700) नामक एक अतिरिक्त प्रक्रिया देखेंगे जो pslist में मौजूद नहीं है।


The reason psscan detects the hidden process is that it uses a different technique to list the processes, called pool tag scanning.

psscan के छिपी हुई प्रक्रिया का पता लगाने का कारण यह है कि यह प्रक्रियाओं को सूचीबद्ध करने के लिए एक अलग तकनीक का उपयोग करता है, जिसे पूल टैग स्कैनिंग कहा जाता है।


Every executive object has a structure associated with it (such as _EPROCESS for process object).

प्रत्येक कार्यकारी वस्तु की एक संरचना उससे जुड़ी होती है (जैसे प्रक्रिया वस्तु के लिए _EPROCESS)।


The executive object structure is preceded by a _OBJECT_HEADER structure, which contains information about an object's type and some reference counters.

कार्यकारी वस्तु संरचना से पहले एक _OBJECT_HEADER संरचना होती है, जिसमें किसी वस्तु के प्रकार और कुछ संदर्भ काउंटरों के बारे में जानकारी होती है।


To store an object, memory is needed, and this memory is allocated by the Windows memory manager from kernel pools.

किसी वस्तु को संग्रहीत करने के लिए, मेमोरी की आवश्यकता होती है, और यह मेमोरी विंडोज मेमोरी मैनेजर द्वारा कर्नेल पूल से आवंटित की जाती है।


The pool is divided into a paged pool (whose content may be swapped to disk) and a non-paged pool (whose content permanently resides in memory).

पूल को एक पेजेड पूल (जिसकी सामग्री को डिस्क पर स्वैप किया जा सकता है) और एक गैर-पेजेड पूल (जिसकी सामग्री स्थायी रूप से मेमोरी में रहती है) में विभाजित किया गया है।


The objects (such as process and threads) are kept in a non-paged pool in the kernel, which means they will always reside in the physical memory.

वस्तुओं (जैसे प्रक्रिया और थ्रेड) को कर्नेल में एक गैर-पेजेड पूल में रखा जाता है, जिसका अर्थ है कि वे हमेशा भौतिक मेमोरी में रहेंगे।


When the Windows kernel receives the request to create an object (possibly due to API calls made by processes such as CreateProcess or CreateFile), memory is allocated for the object either from the paged pool or non-paged pool (depending on the object type).

जब विंडोज कर्नेल किसी वस्तु को बनाने का अनुरोध प्राप्त करता है (संभवतः CreateProcess या CreateFile जैसी प्रक्रियाओं द्वारा किए गए API कॉल के कारण), तो वस्तु के लिए मेमोरी या तो पेजेड पूल या गैर-पेजेड पूल से आवंटित की जाती है (वस्तु के प्रकार के आधार पर)।


This allocation is tagged by prepending a _POOL_HEADER structure to the object, so that in memory, each object will have a predictable structure.

यह आवंटन वस्तु में _POOL_HEADER संरचना को जोड़कर टैग किया जाता है, ताकि मेमोरी में, प्रत्येक वस्तु की एक अनुमानित संरचना हो।


The _POOL_HEADER structure includes a field named PoolTag that contains a four-byte tag (referred to as a pool tag).

_POOL_HEADER संरचना में PoolTag नामक एक फ़ील्ड शामिल है जिसमें एक चार-बाइट टैग होता है (जिसे पूल टैग के रूप में जाना जाता है)।


You can think of all the process objects residing in the non-paged pool of kernel memory (which ultimately maps to physical memory) as marked with a tag, Proc.

आप कर्नेल मेमोरी के गैर-पेजेड पूल में रहने वाली सभी प्रक्रिया वस्तुओं (जो अंततः भौतिक मेमोरी में मैप होती हैं) को Proc टैग के साथ चिह्नित मान सकते हैं।


It is this tag that the Volatility's psscan uses as the starting point to identify the process object.

यह वह टैग है जिसका उपयोग Volatility का psscan प्रक्रिया वस्तु की पहचान करने के लिए शुरुआती बिंदु के रूप में करता है।


To identify API hooks in both process and kernel memory, you can use the apihooks Volatility plugin.

प्रोसेस और कर्नेल मेमोरी दोनों में एपीआई हुक की पहचान करने के लिए, आप apihooks Volatility प्लगइन का उपयोग कर सकते हैं।


In the following example of Zeus bot, an executable is injected into the explorer.exe process's memory.

ज़ीउस बॉट के निम्नलिखित उदाहरण में, एक निष्पादन योग्य फ़ाइल को explorer.exe प्रक्रिया की मेमोरी में इंजेक्ट किया जाता है।


The hooked API is then redirected to address 0x2c7ec48 (hook address).

फिर हुक किए गए एपीआई को पते 0x2c7ec48 (हुक पता) पर पुनर्निर्देशित किया जाता है।


A malicious program such as rootkit can load a kernel driver to run the code in kernel mode.

रूटकिट जैसे एक दुर्भावनापूर्ण प्रोग्राम कर्नेल मोड में कोड चलाने के लिए एक कर्नेल ड्राइवर लोड कर सकता है।


Windows has implemented various security mechanisms that are designed to prevent the execution of unauthorized code.

विंडोज ने विभिन्न सुरक्षा तंत्र लागू किए हैं जो अनधिकृत कोड के निष्पादन को रोकने के लिए डिज़ाइन किए गए हैं।


Another security mechanism is Kernel Patch Protection (KPP), also known as PatchGuard.

एक अन्य सुरक्षा तंत्र कर्नेल पैच प्रोटेक्शन (KPP) है, जिसे पैचगार्ड के नाम से भी जाना जाता है।


एक विधि बूटकिट स्थापित करना है।


We will start by listing the kernel modules.

हम कर्नेल मॉड्यूल की सूची बनाकर शुरुआत करेंगे।


Listing kernel modules may not always help you identify the malicious kernel driver.

कर्नेल मॉड्यूल की सूची बनाना हमेशा आपको दुर्भावनापूर्ण कर्नेल ड्राइवर की पहचान करने में मदद नहीं कर सकता है।


The modules plugin lists the kernel modules in the order in which they were loaded.

मॉड्यूल प्लगइन कर्नेल मॉड्यूल को उस क्रम में सूचीबद्ध करता है जिस क्रम में उन्हें लोड किया गया था।


Since walking the doubly linked list is susceptible to DKOM attacks.

चूंकि डबल-लिंक्ड सूची में चलना DKOM हमलों के प्रति संवेदनशील है।


To overcome this problem, you can use another plugin named modscan.

इस समस्या को दूर करने के लिए, आप modscan नामक एक अन्य प्लगइन का उपयोग कर सकते हैं।


The modscan plugin relies on the pool tag scanning approach.

modscan प्लगइन पूल टैग स्कैनिंग दृष्टिकोण पर निर्भर करता है।


The driverscan plugin gets the information related to kernel modules from a structure named DRIVER_OBJECT.

driverscan प्लगइन DRIVER_OBJECT नामक एक संरचना से कर्नेल मॉड्यूल से संबंधित जानकारी प्राप्त करता है।


After you identify the malicious kernel module, you can dump it from memory to disk using the moddump plugin.

दुर्भावनापूर्ण कर्नेल मॉड्यूल की पहचान करने के बाद, आप moddump प्लगइन का उपयोग करके इसे मेमोरी से डिस्क पर डंप कर सकते हैं।


In this section, you will understand the interaction between the user-mode and kernel-mode components.

इस खंड में, आप उपयोगकर्ता-मोड और कर्नेल-मोड घटकों के बीच की बातचीत को समझेंगे।


Typically, a rootkit consists of a user-mode component (EXE or DLL) and a kernel mode component (device driver).

आमतौर पर, एक रूटकिट में एक उपयोगकर्ता-मोड घटक (EXE या DLL) और एक कर्नेल मोड घटक (डिवाइस ड्राइवर) होता है।


Let's try to understand what happens when a user-mode application performs input/output (I/O) operations.

आइए समझने की कोशिश करते हैं कि जब कोई उपयोगकर्ता-मोड एप्लिकेशन इनपुट/आउटपुट (I/O) ऑपरेशन करता है तो क्या होता है।


The device driver typically creates a device or multiple devices and specifies what type of operations it can handle.

डिवाइस ड्राइवर आमतौर पर एक डिवाइस या कई डिवाइस बनाता है और निर्दिष्ट करता है कि यह किस प्रकार के संचालन को संभाल सकता है।


When the driver is loaded into the system, the I/O manager creates a driver object (DRIVER_OBJECT structure).

जब ड्राइवर सिस्टम में लोड होता है, तो I/O मैनेजर एक ड्राइवर ऑब्जेक्ट (DRIVER_OBJECT संरचना) बनाता है।


To overcome this problem, we can use another plugin named ldrmodules.

इस समस्या को दूर करने के लिए, हम ldrmodules नामक एक और प्लगइन का उपयोग कर सकते हैं।


The ldrmodules plugin compares module information from the three PEB lists with the information from a data structure residing in the kernel memory known as VADs.

ldrmodules प्लगइन तीन PEB सूचियों से मॉड्यूल की जानकारी की तुलना VADs के रूप में जानी जाने वाली कर्नेल मेमोरी में स्थित एक डेटा संरचना से करता है।


If the process memory region contains a memory-mapped file (such as an executable, DLL), then the VAD node stores information about its base address, file path, and memory protection.

यदि प्रक्रिया मेमोरी क्षेत्र में एक मेमोरी-मैप्ड फ़ाइल (जैसे एक निष्पादन योग्य, DLL) शामिल है, तो VAD नोड इसके बेस एड्रेस, फ़ाइल पथ और मेमोरी सुरक्षा के बारे में जानकारी संग्रहीत करता है।


Similarly, other VAD nodes will describe process memory ranges, including the ones that contain mapped executable images such as DLLs.

इसी तरह, अन्य VAD नोड प्रक्रिया मेमोरी रेंज का वर्णन करेंगे, जिसमें वे भी शामिल हैं जिनमें DLL जैसे मैप्ड निष्पादन योग्य चित्र शामिल हैं।


To get the module's information, the ldrmodules plugin enumerates all the VAD nodes that contain mapped executable images and compares the results with the three PEB lists to identify any discrepancies.

मॉड्यूल की जानकारी प्राप्त करने के लिए, ldrmodules प्लगइन उन सभी VAD नोड्स को सूचीबद्ध करता है जिनमें मैप्ड निष्पादन योग्य चित्र शामिल हैं और किसी भी विसंगति की पहचान करने के लिए परिणामों की तीन PEB सूचियों से तुलना करता है।


You can see that the ldrmodules plugin was able to identify a malicious DLL called TDSSoiqh.dll, which hides from all the three PEB lists.

आप देख सकते हैं कि ldrmodules प्लगइन TDSSoiqh.dll नामक एक दुर्भावनापूर्ण DLL की पहचान करने में सक्षम था, जो तीनों PEB सूचियों से छिपा हुआ है।