hacktricks/reversing/reversing-tools/README.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

35 KiB

☁️ HackTricks क्लाउड ☁️ -🐦 ट्विटर 🐦 - 🎙️ ट्विच 🎙️ - 🎥 यूट्यूब 🎥

Wasm डिकंपाइलर / Wat कंपाइलर

ऑनलाइन:

सॉफ़्टवेयर:

.Net डिकंपाइलर

https://github.com/icsharpcode/ILSpy Visual Studio Code के लिए ILSpy प्लगइन: आप इसे किसी भी ओएस में रख सकते हैं आप इसे वीएसकोड से सीधे इंस्टॉल कर सकते हैं, गिट को डाउनलोड करने की आवश्यकता नहीं है। **Extensions** पर क्लिक करें और **ILSpy** खोजें. यदि आपको डिकंपाइल, संशोधित और फिर से कंपाइल करने की आवश्यकता हो तो आप इस्तेमाल कर सकते हैं: https://github.com/0xd4d/dnSpy/releases **Right Click -> Modify Method** फ़ंक्शन के अंदर कुछ बदलने के लिए. आप https://www.jetbrains.com/es-es/decompiler/ भी आजमा सकते हैं

DNSpy लॉगिंग

DNSpy में कुछ जानकारी फ़ाइल में लॉग करने के लिए, आप इस .Net लाइन का उपयोग कर सकते हैं:

using System.IO;
path = "C:\\inetpub\\temp\\MyTest2.txt";
File.AppendAllText(path, "Password: " + password + "\n");

DNSpy डीबगिंग

DNSpy का उपयोग करके कोड की डीबगिंग करने के लिए आपको निम्नलिखित कार्रवाई करनी होगी:

पहले, डीबगिंग से संबंधित असेंबली गुण बदलें:

से:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

README.md

Reversing Tools

This directory contains a collection of tools commonly used in the field of reverse engineering. These tools are essential for analyzing and understanding the inner workings of software and firmware.

Contents

IDA Pro

IDA Pro is a widely used disassembler and debugger for analyzing binary code. It supports a wide range of architectures and provides advanced features for reverse engineering.

Ghidra

Ghidra is a powerful open-source software reverse engineering suite developed by the National Security Agency (NSA). It provides a wide range of features for analyzing and understanding binary code.

OllyDbg

OllyDbg is a 32-bit assembler-level debugger for Microsoft Windows. It is widely used for analyzing and reverse engineering binary code.

x64dbg

x64dbg is a powerful open-source x86/x64 debugger for Windows. It provides a user-friendly interface and a wide range of features for analyzing and debugging binary code.

Radare2

Radare2 is a powerful open-source framework for reverse engineering and binary analysis. It provides a command-line interface and supports a wide range of architectures.

Hopper

Hopper is a powerful disassembler and reverse engineering tool for macOS and Linux. It supports a wide range of architectures and provides advanced features for analyzing binary code.

Binary Ninja

Binary Ninja is a commercial disassembler and reverse engineering platform. It provides a user-friendly interface and advanced features for analyzing binary code.

Cutter

Cutter is a free and open-source GUI for radare2, a powerful reverse engineering framework. It provides a user-friendly interface and advanced features for analyzing binary code.

RetDec

RetDec is a retargetable machine-code decompiler based on LLVM. It can be used to decompile binary code into a high-level representation.

Angr

Angr is a powerful binary analysis framework that allows for symbolic execution and constraint solving. It can be used for a wide range of tasks, including vulnerability discovery and exploit generation.

Frida

Frida is a dynamic instrumentation toolkit that allows for runtime manipulation of binary code. It can be used for a wide range of tasks, including hooking and patching.

Immunity Debugger

Immunity Debugger is a powerful debugger for analyzing and reverse engineering binary code. It provides a Python API for automation and script development.

WinDbg

WinDbg is a powerful debugger for analyzing and debugging Windows kernel-mode and user-mode code. It provides advanced features for troubleshooting and crash analysis.

Volatility

Volatility is a powerful memory forensics framework for analyzing and extracting information from volatile memory (RAM) samples. It provides a wide range of plugins for various analysis tasks.

Apktool

Apktool is a tool for reverse engineering Android APK files. It can decompile APK files into their corresponding source code and resources.

dex2jar

dex2jar is a tool for converting Android DEX files to JAR files. It can be used to decompile Android applications and analyze their Java code.

JD-GUI

JD-GUI is a standalone Java decompiler for analyzing and reverse engineering Java bytecode. It can be used to decompile JAR files and analyze their Java code.

Androguard

Androguard is a powerful tool for reverse engineering Android applications. It can be used to analyze APK files, decompile DEX files, and extract information from Android manifests.

Bytecode Viewer

Bytecode Viewer is a Java bytecode viewer and decompiler. It can be used to analyze and decompile Java class files.

IDA Python

IDA Python is a scripting interface for IDA Pro that allows for automation and custom analysis. It provides a Python API for interacting with IDA Pro's features and data.

GDB

GDB is a powerful debugger for analyzing and debugging C and C++ code. It provides advanced features for source-level debugging and memory analysis.

Pwntools

Pwntools is a Python library and framework for exploit development and binary analysis. It provides a wide range of tools and utilities for interacting with binary code.

Binwalk

Binwalk is a fast and easy-to-use tool for analyzing and extracting firmware images. It can be used to identify embedded files and signatures within binary code.

QEMU

QEMU is a fast and versatile emulator for running and testing operating systems and software. It can be used for analyzing and debugging binary code in a controlled environment.

Unicorn

Unicorn is a lightweight, multi-platform CPU emulator framework. It can be used for analyzing and executing binary code in a controlled environment.

Capstone

Capstone is a lightweight multi-platform disassembly framework. It provides a simple and powerful interface for disassembling binary code.

Fuzzing Tools

Fuzzing tools are used for automated testing and vulnerability discovery. They generate and input random or mutated data into a target application to find security vulnerabilities.

Debuggers

Debuggers are tools used for analyzing and debugging binary code. They provide features such as breakpoints, stepping through code, and inspecting memory.

Disassemblers

Disassemblers are tools used for converting binary code into human-readable assembly code. They help in understanding the functionality and behavior of a program.

Decompilers

Decompilers are tools used for converting binary code into high-level source code. They help in understanding the logic and structure of a program.

Static Analysis Tools

Static analysis tools are used for analyzing code without executing it. They help in identifying vulnerabilities, bugs, and other issues in software.

Dynamic Analysis Tools

Dynamic analysis tools are used for analyzing code during runtime. They help in understanding the behavior and execution flow of a program.

Memory Analysis Tools

Memory analysis tools are used for analyzing and extracting information from volatile memory (RAM). They help in forensic investigations and reverse engineering.

Android Tools

Android tools are used for analyzing and reverse engineering Android applications. They help in understanding the structure and behavior of Android apps.

Miscellaneous Tools

Miscellaneous tools are additional tools that can be useful for reverse engineering and binary analysis.

Conclusion

These reversing tools are essential for any reverse engineer or security researcher. They provide the necessary functionality and features for analyzing and understanding binary code. Whether you are analyzing malware, reverse engineering software, or conducting vulnerability research, these tools will greatly assist you in your work.

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default |
DebuggableAttribute.DebuggingModes.DisableOptimizations |
DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints |
DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]

और कंपाइल पर क्लिक करें:

फिर नया फ़ाइल फ़ाइल >> मॉड्यूल सहेजें... पर सहेजें:

यह आवश्यक है क्योंकि यदि आप ऐसा नहीं करते हैं, तो टाइमर पर कई अनुकूलन कोड पर लागू होंगे और यह संभव है कि डीबगिंग के दौरान कोई ब्रेक-पॉइंट नहीं हिट होगा या कुछ वेरिएबल्स मौजूद नहीं होंगे

फिर, यदि आपका .Net एप्लिकेशन IIS द्वारा चलाया जा रहा है, तो आप इसे रीस्टार्ट कर सकते हैं:

iisreset /noforce

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

फिर w3wp.exe को चुनें और IIS सर्वर में जुड़ने के लिए जोड़ें:

अब जब हम प्रक्रिया को डीबग कर रहे हैं, तो इसे रोकने और सभी मॉड्यूल लोड करने का समय है। पहले Debug >> Break All पर क्लिक करें और फिर Debug >> Windows >> Modules पर क्लिक करें:

Modules पर किसी मॉड्यूल पर क्लिक करें और Open All Modules को चुनें:

Assembly Explorer में किसी मॉड्यूल पर दायां क्लिक करें और Sort Assemblies पर क्लिक करें:

जावा डिकंपाइलर

https://github.com/skylot/jadx https://github.com/java-decompiler/jd-gui/releases

DLLs की डीबगिंग

IDA का उपयोग करके

  • rundll32 लोड करें 64 बिट C:\Windows\System32\rundll32.exe और 32 बिट C:\Windows\SysWOW64\rundll32.exe में
  • Windbg डीबगर का चयन करें
  • "Suspend on library load/unload" का चयन करें

  • निष्पादन के parameters को कॉन्फ़िगर करें और DLL के पथ और वह फ़ंक्शन डालें जिसे आप कॉल करना चाहते हैं:

फिर, जब आप निष्पादन शुरू करते हैं, प्रत्येक DLL लोड होने पर निष्पादन रुक जाएगा, फिर, जब rundll32 आपकी DLL लोड करेगा, निष्पादन रुक जाएगा।

लेकिन, लोड हुए DLL के कोड तक आप कैसे पहुंच सकते हैं? इस तरीके का उपयोग करके, मुझे नहीं पता है।

x64dbg/x32dbg का उपयोग करके

  • rundll32 लोड करें 64 बिट C:\Windows\System32\rundll32.exe और 32 बिट C:\Windows\SysWOW64\rundll32.exe में
  • Command Line बदलें _File --> Change Command Line_ और dll के पथ और वह फ़ंक्शन डालें जिसे आप कॉल करना चाहते हैं, उदाहरण के लिए: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\14.ridii_2.dll",DLLMain
  • Options --> Settings बदलें और "DLL Entry" का चयन करें।
  • फिर निष्पादन शुरू करें, डीबगर हर डीएलएल मेन में रुक जाएगा, किसी बिंदु पर आपको अपने ब्रेकपॉइंट रखने के लिए खोजना होगा।

ध्यान दें कि जब निष्पादन किसी कारण से win64dbg में रुक जाता है, तो आप देख सकते हैं कि आप किस कोड में हैं, win64dbg विंडो के शीर्ष में देखें:

फिर, इसे देखकर आप देख सकते हैं कि निष्पादन उस DLL में रुका था जिसे आप डीबग करना चाहते हैं।

ARM & MIPS

{% embed url="https://github.com/nongiach/arm_now" %}

शेलकोड

blobrunner के साथ शेलकोड की डीबगिंग

Blobrunner शेलकोड को मेमोरी के एक स्थान में आवंटित करेगा, आपको बताएगा कि शेलकोड को किस मेमोरी पते पर आवंटित किया गया है और निष्पादन को रोक देगा। फिर, आपको प्रक्रिया में एक डीबगर Ida या x64dbg को जोड़ना होगा और निर्दिष्ट मेमोरी पते पर एक ब्रेकपॉइंट रखना होगा और निष्पादन को पुनरारंभ करना होगा। इस तरह आप शेलकोड की डीबगिंग कर रहे होंगे।

जारी गिथब पृष्ठ में कंपाइल किए गए रिलीज़ को ज़िप में शामिल किया गया है: https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5 आप निम्नलिखित लिंक में ब्लॉबरनर के थोड़े से संशोधित संस्करण को डाउनलोड कर सकते हैं। इसे कंपाइल करने के लिए, बस Visual Studio Code में एक सी / सी++ परियोजना बनाएं, कोड की प्रतिलिपि करें और इसे बिल्ड करें

{% page-ref page="blobrunner.md" %}

jmp2it के साथ शेलकोड की डीबगिंग

jmp2it blobrunner के बहुत समान है। यह शेलकोड को मेमोरी के एक स्थान में **आवं

शैलकोड को डीओबफस्केट करना और निष्पादित फंक्शन प्राप्त करना

आपको scdbg का प्रयास करना चाहिए। यह आपको बताएगा कि शैलकोड कौन से फंक्शन का उपयोग कर रहा है और क्या शैलकोड स्वयं को मेमोरी में डिकोड कर रहा है।

scdbg.exe -f shellcode # Get info
scdbg.exe -f shellcode -r #show analysis report at end of run
scdbg.exe -f shellcode -i -r #enable interactive hooks (file and network) and show analysis report at end of run
scdbg.exe -f shellcode -d #Dump decoded shellcode
scdbg.exe -f shellcode /findsc #Find offset where starts
scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset

scDbg एक ग्राफिकल लॉन्चर के साथ भी आता है जहां आप विकल्पों का चयन कर सकते हैं और शेलकोड को निष्पादित कर सकते हैं

Create Dump विकल्प शेलकोड में डाइनामिक रूप से किसी भी परिवर्तन को डंप करेगा डिकोड किए गए शेलकोड को डाउनलोड करने के लिए उपयोगी. स्टार्ट ऑफसेट एक विशेष ऑफसेट पर शेलकोड को शुरू करने के लिए उपयोगी हो सकता है। Debug Shell विकल्प scDbg टर्मिनल का उपयोग करके शेलकोड को डीबग करने के लिए उपयोगी है हालांकि, मैं इस मामले में पहले बताए गए किसी भी विकल्प का उपयोग करने को बेहतर मानता हूँ क्योंकि आप Ida या x64dbg का उपयोग कर सकेंगे.

CyberChef का उपयोग करके डिसअसेंबलिंग

अपनी शेलकोड फ़ाइल को इनपुट के रूप में अपलोड करें और इसे डिकॉम्पाइल करने के लिए निम्नलिखित रसीप का उपयोग करें: https://gchq.github.io/CyberChef/#recipe=To_Hex('Space',0)Disassemble_x86('32','Full%20x86%20architecture',16,0,true,true)

Movfuscator

यह ऑफसेटर सभी निर्देशों को mov के लिए बदल देता है हाँ, वास्तव में शानदार. यह निर्देशों को बदलने के लिए अविराम का उपयोग भी करता है। इसके बारे में अधिक जानकारी के लिए:

यदि आप भाग्यशाली हैं तो demovfuscator बाइनरी को डीऑफसेट करेगा। इसमें कई आवश्यकताएं होती हैं।

apt-get install libcapstone-dev
apt-get install libz3-dev

और keystone को इंस्टॉल करें `apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`

यदि आप CTF खेल रहे हैं, तो यह फ्लैग ढूंढ़ने के लिए यह workaround बहुत उपयोगी हो सकता है: https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html

Delphi

Delphi कंपाइल किए गए बाइनरी के लिए आप https://github.com/crypto2011/IDR का उपयोग कर सकते हैं

कोर्सेज

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥