Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/bootleg/ret-sync
गतिशील विश्लेषण (सैंडबॉक्सिंग)रिवर्स इंजीनियरिंगडीबगर्सउपयोगिताएँ और फ्रेमवर्कबाइनरी विश्लेषण
GitHubbootleg/ret-sync

ret-sync

ret-sync एक प्लगइन्स का सेट है जो डिबगिंग सत्र (WinDbg/GDB/LLDB/OllyDbg2/x64dbg) को IDA/Ghidra/Binary Ninja डिसअसेंबलरों के साथ सिंक्रोनाइज़ करने में मदद करता है।

रिपॉजिटरी देखें
2.4k3076 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

ret-sync

ret-sync का मतलब Reverse-Engineering Tools SYNChronization है। यह प्लगइन्स का एक सेट है जो डिबगिंग सत्र (WinDbg/GDB/LLDB/OllyDbg/OllyDbg2/x64dbg) को डिसअसेंबलर (IDA/Ghidra/Binary Ninja) के साथ सिंक्रोनाइज़ करने में मदद करता है। मूल विचार सरल है: दोनों दुनियाओं (स्थैतिक और गतिशील विश्लेषण) से सर्वश्रेष्ठ लेना।

डीबगर्स और गतिशील विश्लेषण हमें प्रदान करते हैं:

  • स्थानीय दृश्य, लाइव गतिशील संदर्भ (रजिस्टर, मेमोरी, आदि) के साथ
  • अंतर्निहित विशेष सुविधाएँ/API (उदा. WinDbg का !peb, !drvobj, !address, आदि)

डिसअसेंबलर और स्थैतिक विश्लेषण हमें प्रदान करते हैं:

  • मॉड्यूल पर मैक्रो दृश्य
  • कोड विश्लेषण, हस्ताक्षर, प्रकार, आदि.
  • फैंसी ग्राफ़ दृश्य
  • डीकंपिलेशन
  • IDBs/GPRs के भीतर ज्ञान का स्थायी भंडारण

मुख्य विशेषताएं:

  • डीबगर की स्थिति के साथ ग्राफ़ और डीकंपिलेशन दृश्यों को सिंक्रोनाइज़ करें
  • ASLR से निपटने की आवश्यकता नहीं, पतों को फ्लाई पर रीबेस किया जाता है
  • डीबगर से डिसअसेंबलर में डेटा (टिप्पणी, कमांड आउटपुट) पास करें
  • एक ही समय में कई IDBs/GPRs को सिंक किया जा सकता है जिससे कई मॉड्यूल के माध्यम से आसानी से ट्रेस किया जा सकता है
  • डिसअसेंबलर और डीबगर अलग-अलग होस्ट/VM पर हो सकते हैं

ret-sync qb-sync का एक फ़ोर्क है जिसे मैंने Quarkslab में अपने प्रवास के दौरान विकसित और रखरखाव किया था।


विषय-सूची

  • रिपॉजिटरी सामग्री
  • सामान्य पूर्वापेक्षाएँ
  • बाइनरी रिलीज़
  • ret-sync कॉन्फ़िगरेशन
  • स्थापना
    • IDA एक्सटेंशन
    • Ghidra एक्सटेंशन
    • Binary Ninja एक्सटेंशन
    • WinDbg एक्सटेंशन
    • GNU gdb (GDB) स्थापना
    • LLDB स्थापना
    • OllyDbg 1.10 स्थापना
    • OllyDbg2 स्थापना
    • x64dbg स्थापना
  • उपयोग
    • ret-sync डीबगर कमांड
    • IDA उपयोग
    • Ghidra उपयोग
    • Binary Ninja उपयोग
    • WinDbg उपयोग
    • GNU gdb (GDB) उपयोग
    • LLDB उपयोग
    • OllyDbg 1.10 उपयोग
    • OllyDbg2 उपयोग
    • x64dbg उपयोग
    • पायथन लाइब्रेरी उपयोग
  • विस्तार करें
  • करने के लिए
  • ज्ञात बग/सीमाएँ
  • लाइसेंस
  • शुक्रिया

रिपॉजिटरी सामग्री

डीबगर प्लगइन्स:

  • ext_windbg/sync: WinDbg एक्सटेंशन स्रोत फ़ाइलें, निर्माण के बाद: sync.dll
  • ext_gdb/sync.py: GDB प्लगइन
  • ext_lldb/sync.py: LLDB प्लगइन
  • ext_olly1: OllyDbg 1.10 प्लगइन
  • ext_olly2: OllyDbg v2 प्लगइन
  • ext_x64dbg: x64dbg प्लगइन

डिसअसेंबलर प्लगइन्स:

  • ext_ida/SyncPlugin.py
  • ext_ghidra/dist/ghidra_*_retsync.zip: Ghidra प्लगइन
  • ext_bn/retsync: Binary Ninja प्लगइन

और लाइब्रेरी प्लगइन:

  • ext_lib/sync.py: स्वतंत्र पायथन लाइब्रेरी

सामान्य पूर्वापेक्षाएँ

IDA और GDB प्लगइन्स को एक मान्य पायथन सेटअप की आवश्यकता होती है। पायथन 2 (>=2.7) और पायथन 3 समर्थित हैं।

बाइनरी रिलीज़

WinDbg/OllyDbg/OllyDbg2/x64dbg डीबगर्स के लिए पूर्व-निर्मित बाइनरी एक Azure DevOps पाइपलाइन के माध्यम से प्रस्तावित हैं: बिल्ड स्थिति

अंतिम बिल्ड चुनें और Related अनुभाग के अंतर्गत आर्टिफैक्ट्स की जाँच करें: 6 प्रकाशित।

Ghidra प्लगइन का एक पूर्व-निर्मित प्लगइन आर्काइव ext_ghidra/dist में प्रदान किया गया है।

ret-sync कॉन्फ़िगरेशन

ret-sync अधिकांश उपयोगकर्ताओं के लिए एक सामान्य सेटअप के साथ बॉक्स के बाहर काम करना चाहिए: डीबगर और डिसअसेंबलर एक ही होस्ट पर, मॉड्यूल नाम मेल खाते हैं।

फिर भी, कुछ परिदृश्यों में एक विशिष्ट कॉन्फ़िगरेशन का उपयोग किया जा सकता है। इसके लिए, एक्सटेंशन और प्लगइन्स उपयोगकर्ता की होम डायरेक्टरी में एक वैकल्पिक वैश्विक कॉन्फ़िगरेशन फ़ाइल .sync की जाँच करते हैं। यह एक मान्य .INI फ़ाइल होनी चाहिए।

इसके अतिरिक्त, IDA और Ghidra प्लगइन्स पहले IDB या प्रोजेक्ट डायरेक्टरी (<project>.rep) में कॉन्फ़िगरेशन फ़ाइल की तलाश करते हैं ताकि स्थानीय, प्रति-IDB/प्रोजेक्ट सेटिंग्स की अनुमति मिल सके। यदि कोई स्थानीय कॉन्फ़िगरेशन फ़ाइल मौजूद है, तो वैश्विक कॉन्फ़िगरेशन फ़ाइल को अनदेखा कर दिया जाता है।

इन कॉन्फ़िगरेशन फ़ाइलों में घोषित मान डिफ़ॉल्ट मानों को ओवरराइड करते हैं। कृपया ध्यान दें, कि डिफ़ॉल्ट रूप से कोई .sync फ़ाइल नहीं बनाई जाती है।

नीचे हम तीन सामान्य परिदृश्यों का विवरण देते हैं जहाँ एक कॉन्फ़िगरेशन फ़ाइल उपयोगी/आवश्यक है:

  • रिमोट डीबगिंग
  • मॉड्यूल नामों का बेमेल
  • लापता PID

रिमोट डीबगिंग: डीबगर और डिसअसेंबलर अलग-अलग होस्ट पर हैं

[INTERFACE] सेक्शन का उपयोग नेटवर्क संबंधी सेटिंग्स को अनुकूलित करने के लिए किया जाता है। मान लीजिए कि कोई IDA को एक वर्चुअल मशीन (या बस दूसरे होस्ट) के अंदर चल रहे डीबगर के साथ सिंक्रोनाइज़ करना चाहता है, जो सामान्य रिमोट कर्नेल डीबगिंग परिदृश्य है।

बस दो .sync फ़ाइल बनाएँ:

  • एक उस मशीन पर जहाँ IDA स्थापित है, IDB डायरेक्टरी में:
  • Ghidra के लिए, होम डायरेक्टरी में रखें, उदा. "/home/user" या "C:\Users\user"।``` [INTERFACE] host=192.168.128.1 port=9234
root@kitploit:~
यह **ret-sync** ``IDA`` प्लगइन को इंटरफ़ेस ``192.168.128.1`` पर पोर्ट ``9234`` के साथ सुनने का निर्देश देता है। यह कहने की आवश्यकता नहीं है कि यह इंटरफ़ेस रिमोट होस्ट या वर्चुअल मशीन से पहुँच योग्य होना चाहिए।

* एक उस मशीन पर जहाँ डीबगर निष्पादित किया जाता है, उपयोगकर्ता की होम निर्देशिका में:```
[INTERFACE]
host=192.168.128.1
port=9234

यह ret-sync डीबगर प्लगइन को पहले से कॉन्फ़िगर किए गए ret-sync IDA प्लगइन से इस इंटरफ़ेस पर सुनने के लिए कनेक्ट करने का निर्देश देता है।

नोट: आपको यहाँ एक वास्तविक IP निर्दिष्ट करना होगा, न कि 0.0.0.0 का उपयोग करना। ऐसा इसलिए है क्योंकि वेरिएबल का उपयोग कई स्रोतों द्वारा बाइंडिंग और कनेक्टिंग दोनों के लिए किया जाता है, इसलिए 0.0.0.0 का उपयोग करने से अजीब त्रुटियाँ होंगी।

IDB और डीबगर मॉड्यूल के नाम अलग हैं```

[ALIASES] ntoskrnl_vuln.exe=ntkrnlmp.exe

root@kitploit:~
The ``[ALIASES]`` अनुभाग का उपयोग उस नाम को अनुकूलित करने के लिए किया जाता है जो एक डिस्सेम्बलर (IDA/Ghidra) द्वारा किसी मॉड्यूल को उसके डिस्पैचर/प्रोग्राम प्रबंधक में पंजीकृत करने के लिए उपयोग किया जाता है।

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

यहाँ हम डिस्पैचर को बस यह बताते हैं कि `ntkrnlmp.exe` (वास्तविक नाम) का मिलान करें, न कि `ntoskrnl_vuln.exe` (IDB नाम) का।


## Qt Creator डिबगिंग फ्रंटएंड के साथ gdb

Qt Creator डिबगिंग फ्रंटएंड gdb कमांड आउटपुट के लॉग होने के तरीके को बदल देता है। चूंकि यह सिंक्रोनाइज़ेशन में हस्तक्षेप करेगा, इसलिए एक विकल्प मौजूद है जो अस्थायी फ़ाइल के बजाय सिंक्रोनाइज़ेशन के लिए रॉ gdb आउटपुट का उपयोग करता है। .sync कॉन्फ़िगरेशन फ़ाइल में उपयोग करें```
[GENERAL]
use_tmp_logging_file=false

यदि आप लक्ष्य के लिए Qt डिबगिंग फ्रंटएंड का उपयोग करना चाहते हैं।

एम्बेडेड उपकरण और लापता /proc/<pid>/maps

कुछ परिदृश्यों में, जैसे कि सीरियल या QEMU में रॉ फर्मवेयर पर एम्बेडेड उपकरणों को डीबग करना, gdb PID से अवगत नहीं होता है और /proc/<pid>/maps तक पहुँच नहीं सकता है।

इन मामलों में, [INIT] अनुभाग का उपयोग प्लगइन को एक कस्टम कॉन्टेक्स्ट पास करने के लिए किया जाता है। यह PID और मेमोरी मैपिंग जैसे कुछ फ़ील्ड को ओवरराइड करने की अनुमति देता है।

.sync content extract:``` [INIT] context = { "pid": 200, "mappings": [ [0x400000, 0x7A81158, 0x7681158, "asav941-200.qcow2|lina"] ] }

root@kitploit:~
प्रत्येक मैपिंग में प्रविष्टियाँ हैं: ``mem_base``, ``mem_end``, ``mem_size``, ``mem_name``।


## स्वचालित पता रीबेसिंग को बायपास करना

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

`use_raw_addr` विकल्प वर्तमान में केवल Ghidra के लिए समर्थित है। .sync कॉन्फ़िगरेशन फ़ाइल में उपयोग करें:```
[GENERAL]
use_raw_addr=true

स्थापना

IDA एक्सटेंशन

IDA पूर्वापेक्षाएँ

IDA 9.2+ आवश्यक है। पुराने संस्करणों के लिए कृपया उपलब्ध Tags से ida9.2 टैग से पहले के प्रोजेक्ट को चेकआउट करें।

IDA एक्सटेंशन इंस्टॉल करें

IDA इंस्टॉलेशन के लिए, Syncplugin.py और retsync फ़ोल्डर को ext_ida से IDA प्लगइन्स निर्देशिका में कॉपी करें, उदाहरण के लिए:

  • C:\Program Files\IDA Pro 7.4\plugins
  • %APPDATA%\Hex-Rays\IDA Pro\plugins
  • ~/.idapro/plugins

IDA एक्सटेंशन चलाएँ

  1. IDB खोलें
  2. IDA में प्लगइन चलाएँ (Alt-Shift-S) या Edit -> Plugins -> ``ret-sync````` [sync] default idb name: ld.exe [sync] sync enabled [sync] cmdline: "C:\Program Files\Python38\python.exe" -u "C:\Users\user\AppData\Roaming\Hex-Rays\IDA Pro\plugins\retsync\broker.py" --idb "target.exe" [sync] module base 0x100400000 [sync] hexrays #7.3.0.190614 found [sync] broker started [sync] plugin loaded [sync] << broker << dispatcher not found, trying to run it [sync] << broker << dispatcher now runs with pid: 6544 [sync] << broker << connected to dispatcher [sync] << broker << listening on port 63107
root@kitploit:~
### IDA प्लगइन समस्या निवारण

IDA एक्सटेंशन के साथ समस्याओं का निवारण करने के लिए फ़ाइल `retsync/rsconfig.py` में दो विकल्प उपलब्ध हैं:```
LOG_LEVEL = logging.INFO
LOG_TO_FILE_ENABLE = False

Setting LOG_LEVEL value to logging.DEBUG makes the plugin more verbose.

LOG_TO_FILE_ENABLE मान को True पर सेट करने से broker.py और dispatcher.py से अपवाद जानकारी का लॉगिंग समर्पित फ़ाइलों में होता है। लॉग फ़ाइलें %TMP% फ़ोल्डर में retsync.%s.err नाम पैटर्न के साथ उत्पन्न होती हैं।

Ghidra एक्सटेंशन

Ghidra एक्सटेंशन बनाएं

या तो ext_ghidra/dist फ़ोल्डर से पूर्व-निर्मित संस्करण का उपयोग करें या इसे बनाने के निर्देशों का पालन करें। प्रत्येक एक्सटेंशन बिल्ड केवल प्लगइन के फ़ाइल नाम में निर्दिष्ट Ghidra संस्करण का समर्थन करता है। उदा. ghidra_9.1_PUBLIC_20191104_retsync.zip Ghidra 9.1 Public के लिए है।

  1. Ghidra स्थापित करें
  2. gradle स्थापित करें```bash apt install gradle
root@kitploit:~
3. अपने Ghidra इंस्टॉलेशन के लिए एक्सटेंशन बनाएं (`$GHIDRA_DIR` को अपने इंस्टॉलेशन डायरेक्टरी से बदलें)```bash
cd ext_ghidra
gradle -PGHIDRA_INSTALL_DIR=$GHIDRA_DIR

Ghidra एक्सटेंशन स्थापित करें

  1. Ghidra प्रोजेक्ट्स मैनेजर से: File -> Install Extensions..., + चिह्न पर क्लिक करें और ext_ghidra/dist/ghidra_*_retsync.zip चुनें और OK पर क्लिक करें। यह प्रभावी रूप से ज़िप से retsync फ़ोल्डर को $GHIDRA_DIR/Extensions/Ghidra/ में निकाल देगा।
  2. अनुरोध के अनुसार Ghidra को पुनरारंभ करें
  3. Ghidra को पुनः लोड करने के बाद, CodeBrowser में एक मॉड्यूल खोलें। यह आपको बताएगा कि एक नया एक्सटेंशन प्लगइन पाया गया है। इसे कॉन्फ़िगर करने के लिए "हाँ" चुनें। फिर "RetSyncPlugin" को टिक करें और OK पर क्लिक करें। कंसोल में कुछ इस प्रकार दिखना चाहिए:``` [*] retsync init [>] programOpened: tm.sys imageBase: 0x1c0000000
root@kitploit:~
4. Ghidra CodeBrowser टूल से: सिंक्रोनाइज़ेशन को सक्षम (``Alt+s``)/अक्षम (``Alt+Shift+s``)/पुनरारंभ (``Alt+r``) करने के लिए टूलबार आइकन या शॉर्टकट का उपयोग करें।

एक स्थिति विंडो भी ``Windows`` -> ``RetSyncPlugin`` से उपलब्ध है। आप इसे साइड पर रखना चाहेंगे ताकि यह Ghidra पर्यावरण विंडो के साथ एकीकृत हो जाए।

## Binary Ninja एक्सटेंशन

Binary Ninja समर्थन प्रायोगिक है, सुनिश्चित करें कि आप अपने विश्लेषण डेटाबेस का बैकअप लें।

### Binary Ninja पूर्वापेक्षाएँ

**ret-sync** को कम से कम Binary Ninja संस्करण 2.2 और Python 3 की आवश्यकता है (Python 2 समर्थित नहीं है)।

### Binary Ninja एक्सटेंशन स्थापित करें

**ret-sync** अभी तक Binary Ninja के Plugin Manager के माध्यम से वितरित नहीं किया गया है; मैन्युअल स्थापना आवश्यक है। बस `ext_bn` फ़ोल्डर की सामग्री को Binary Ninja के प्लगइन्स फ़ोल्डर में कॉपी करें, उदाहरण के लिए:

`%APPDATA%\Binary Ninja\plugins`

Binary Ninja को पुनरारंभ करने के बाद, कंसोल विंडो में निम्न आउटपुट मौजूद होना चाहिए:```
[sync] commands added
Loaded python3 plugin 'retsync'

WinDbg एक्सटेंशन

WinDbg एक्सटेंशन बनाएँ

ext_windbg में दिए गए Visual Studio 2017 समाधान का उपयोग करें। Visual Studio Community Edition 2017 और 2026 का सफलतापूर्वक परीक्षण किया गया (बीच के संस्करणों को भी काम करना चाहिए)।

यह x64\release\sync.dll फ़ाइल बनाएगा।

WinDbg एक्सटेंशन स्थापित करें

आपको परिणामी sync.dll फ़ाइल को उपयुक्त Windbg एक्सटेंशन पथ में कॉपी करना होगा।

  • WinDbg क्लासिक:

Windbg के पुराने संस्करणों के लिए यह कुछ इस प्रकार है (x86/x64 प्रकारों से सावधान रहें), उदाहरण के लिए

C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\winext\sync.dll

  • Windbg पूर्वावलोकन

एक्सटेंशन को संग्रहीत करने का फ़ोल्डर PATH पर आधारित प्रतीत होता है, इसलिए आपको इसे खोजे गए स्थानों में से किसी एक पर रखना होगा।

एक उदाहरण इसे यहाँ रखना है:

C:\Users\user\AppData\Local\Microsoft\WindowsApps\sync.dll

WinDbg एक्सटेंशन चलाएँ

  1. लक्ष्य पर WinDbg लॉन्च करें
  2. एक्सटेंशन लोड करें (.load कमांड)``` 0:000> .load sync [sync.dll] DebugExtensionInitialize, ExtensionApis loaded
root@kitploit:~
3. WinDbg को समन्वयित करें```
      0:000> !sync
      [sync] No argument found, using default host (127.0.0.1:9100)
      [sync] sync success, sock 0x5a8
      [sync] probing sync
      [sync] sync is now enabled with host 127.0.0.1

उदाहरण के लिए, IDA के आउटपुट विंडो में``` [] << broker << dispatcher msg: add new client (listening on port 63898), nb client(s): 1 [] << broker << dispatcher msg: new debugger client: dbg connect - HostMachine\HostUser [sync] set debugger dialect to windbg, enabling hotkeys

root@kitploit:~
यदि Windbg का वर्तमान मॉड्यूल IDA फ़ाइल नाम से मेल खाता है```
      [sync] idb is enabled with the idb client matching the module name.

WinDbg स्थापना समस्या निवारण

नोट: यदि आपको निम्न त्रुटि मिलती है, तो इसका कारण यह है कि आपने ऊपर दिए गए चरणों में फ़ाइल को सही फ़ोल्डर में कॉपी नहीं किया है।``` 0: kd> .load sync The call to LoadLibrary(sync) failed, Win32 error 0n2 "The system cannot find the file specified." Please check your debugger configuration and/or network access.

root@kitploit:~
नीचे दी गई त्रुटि का आमतौर पर अर्थ है कि Windbg ने एक्सटेंशन का गलत संस्करण लोड करने का प्रयास किया, उदाहरण: ``x64`` के स्थान पर ``x86`` `sync.dll`।```
0:000> .load sync
The call to LoadLibrary(sync) failed, Win32 error 0n193
    "%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.

जैसे WinDbg Preview दोनों प्लगइन्स (x86 और x64) को एक ही निर्देशिका से लोड करता है, कोई भी x86 फ़ाइल sync32.dll का नाम बदल सकता है।``` 0:000> .load sync32

root@kitploit:~
## GNU gdb (GDB) स्थापना

1. `ext_gdb/sync.py` को अपनी पसंद की निर्देशिका में कॉपी करें
2. एक्सटेंशन लोड करें (ऑटो-लोड स्क्रिप्ट्स देखें)```
    gdb> source sync.py
    [sync] configuration file loaded 192.168.52.1:9100
    [sync] commands added

LLDB स्थापना

  1. एक्सटेंशन लोड करें (इसे ~/.lldbinit में भी जोड़ा जा सकता है)``` lldb> command script import sync
root@kitploit:~
## OllyDbg 1.10 स्थापना

OllyDbg 1.10 का समर्थन प्रायोगिक है, हालांकि:

1. VS समाधान का उपयोग करके प्लगइन बनाएँ (वैकल्पिक, पूर्व-निर्मित बाइनरी देखें)
2. dll को OllyDbg के प्लगइन निर्देशिका में कॉपी करें

## OllyDbg2 स्थापना

OllyDbg2 का समर्थन प्रायोगिक है, हालांकि:

1. VS समाधान का उपयोग करके प्लगइन बनाएँ (वैकल्पिक, पूर्व-निर्मित बाइनरी देखें)
2. dll को OllyDbg2 के प्लगइन निर्देशिका में कॉपी करें

## x64dbg स्थापना

testplugin पर आधारित, https://github.com/x64dbg/testplugin. x64dbg का समर्थन प्रायोगिक है, हालांकि:

1. VS समाधान का उपयोग करके प्लगइन बनाएँ (वैकल्पिक, पूर्व-निर्मित बाइनरी देखें)।
   आपको प्लगइन sdk के एक अलग संस्करण की आवश्यकता हो सकती है,
   एक प्रति x64dbg के प्रत्येक रिलीज़ में पाई जा सकती है।
   "``pluginsdk``" निर्देशिका को "``ext_x64dbg\x64dbg_sync``" में पेस्ट करें
2. dll (एक्सटेंशन ``.d32`` या ``.dp64`` है) को x64dbg के प्लगइन निर्देशिका में कॉपी करें।

# उपयोग

## **ret-sync** डीबगर कमांड

कमांड-लाइन उन्मुख डीबगर्स (मुख्य रूप से Windbg और GDB) के लिए कमांड का एक सेट
**ret-sync** द्वारा रिवर्स-इंजीनियरिंग कार्य में सहायता के लिए प्रदर्शित किया जाता है।

नीचे दिए गए कमांड सामान्य (Windbg और GDB) हैं, कृपया ध्यान दें कि WinDbg पर एक `!`
उपसर्ग की आवश्यकता है (जैसे: GDB में `sync`, WinDbg में `!sync`)।

| डीबगर कमांड           | विवरण                                                                               |
|----------------------------|-------------------------------------------------------------------------------------------|
| `synchelp`                   | उपलब्ध कमांड की सूची संक्षिप्त विवरण के साथ प्रदर्शित करें                             |
| `sync`                       | सिंक्रनाइज़ेशन प्रारंभ करें                                                                     |
| `syncoff`                    | सिंक्रनाइज़ेशन रोकें                                                                      |
| `cmt [-a address] <string>`  | डिसअसेंबलर में वर्तमान ip पर एक टिप्पणी जोड़ें                                               |
| `rcmt [-a address]`          | डिसअसेंबलर में वर्तमान ip पर टिप्पणी रीसेट करें                                               |
| `fcmt [-a address] <string>` | उस फ़ंक्शन के लिए फ़ंक्शन टिप्पणी जोड़ें जिसमें वर्तमान ip स्थित है                        |
| `raddr <expression>`         | अभिव्यक्ति से पुनर्स्थापित पते के साथ एक टिप्पणी जोड़ें                              |
| `rln <expression>`           | दिए गए पते के लिए डिसअसेंबलर से प्रतीक प्राप्त करें                                    |
| `lbl [-a address] <string>`  | डिसअसेंबलर में वर्तमान ip पर एक लेबल नाम जोड़ें                                            |
| `cmd <string>`               | डीबगर में एक कमांड निष्पादित करें और उसका आउटपुट डिसअसेंबलर में वर्तमान ip पर टिप्पणी के रूप में जोड़ें |
| `bc <\|\|on\|off\|set 0xBBGGRR>` | डिसअसेंबलर में पथ रंगाई सक्षम/अक्षम करें                                              |
| `idblist`                    | डिस्पैचर से जुड़े सभी IDB क्लाइंट की सूची प्राप्त करें                                   |
| `syncmodauto <on\|off>`       | मॉड्यूल नाम के आधार पर डिसअसेंबलर ऑटो स्विच सक्षम/अक्षम करें                              |
| `idbn <n>`                   | सक्रिय IDB को nth क्लाइंट पर सेट करें                                                         |
| `jmpto <expression>`         |                                                                                           |
| `jmpraw <expression>` | यदि कोई IDB सक्षम है तो डिसअसेंबलर का दृश्य परिणामी पते के साथ सिंक हो जाता है।    |
| `translate <base> <addr> <mod>` | एक पते को उसके मॉड्यूल के नाम और ऑफ़सेट के संबंध में रीबेस करें   |


WinDbg विशिष्ट कमांड:

| डीबगर कमांड           | विवरण                                                                               |
|----------------------------|-------------------------------------------------------------------------------------------|
| `curmod`  | वर्तमान निर्देश ऑफ़सेट के लिए मॉड्यूल जानकारी प्रदर्शित करें (समस्या निवारण के लिए) |
| `modlist`  | सक्रिय आईडीबी स्विचिंग को आसान बनाने के लिए डीबगर मार्कअप लैंग्वेज (डीएमएल) संवर्धित मॉड्यूल सूची  |
| `idb <module name>`  | दिए गए मॉड्यूल को सक्रिय idb के रूप में सेट करें (देखें `modlist` का `lm` का उन्नत संस्करण) |
| `modmap <base> <size> <name>` | एक सिंथेटिक ("नकली") मॉड्यूल (इसके आधार पते और आकार का उपयोग करके परिभाषित) डीबगर की आंतरिक सूची में जोड़ा जाता है  |
| `modunmap <base>` | आधार पते पर पहले से मैप किए गए सिंथेटिक मॉड्यूल को हटाएं  |
| `modcheck <\|\|md5>`  | यह जांचने के लिए उपयोग करें कि क्या वर्तमान मॉड्यूल वास्तव में IDB की फ़ाइल से मेल खाता है (उदा: मॉड्यूल अपडेट किया गया है)  |
| `bpcmds <\|\|save\|load\|>` | **bpcmds** रैपर, वर्तमान IDB में **.bpcmds** (ब्रेकपॉइंट कमांड सूची) आउटपुट को सहेजें और पुनः लोड करें  |
| `ks` | **kv** कमांड का डीबगर मार्कअप लैंग्वेज (डीएमएल) संवर्धित आउटपुट   |


GDB विशिष्ट कमांड:

| डीबगर कमांड           | विवरण                                                                               |
|----------------------------|-------------------------------------------------------------------------------------------|
|`bbt` |  सुंदर बैकट्रेस। GDB में **bt** के समान लेकिन डिसअसेंबलर से प्रतीकों का अनुरोध करता है  |
| `patch`  | लाइव संदर्भ के आधार पर डिसअसेंबलर में बाइट्स पैच करें   |
| `bx` | GDB **x** के समान लेकिन प्रतीक का उपयोग करके। प्रतीक डिसअसेंबलर द्वारा हल किया जाएगा   |
| `cc` | डिसअसेंबलर में कर्सर पर जारी रखें  |


## IDA उपयोग

### IDA प्लगइन का GUI

``Overwrite idb name`` इनपुट फ़ील्ड डिफ़ॉल्ट IDB
नाम बदलने के लिए है। यह वह नाम है जिसका उपयोग प्लगइन द्वारा डिस्पैचर के साथ पंजीकरण करने के लिए किया जाता है। IDB स्वचालित स्विच मॉड्यूल नाम मिलान पर आधारित है। संघर्ष नामों (जैसे ``foo.exe`` और ``foo.dll``) के मामले में, इसका उपयोग मिलान को आसान बनाने के लिए किया जा सकता है। कृपया ध्यान दें, यदि आप सिंक सक्रिय होने पर इनपुट फ़ील्ड को संशोधित करते हैं, तो आपको डिस्पैचर के साथ पुनः पंजीकरण करना होगा; यह केवल "``Restart``" बटन का उपयोग करके किया जा सकता है।

एक अनुस्मारक के रूप में डिफ़ॉल्ट रूप से ``.sync`` कॉन्फ़िगरेशन फ़ाइल का उपयोग करके उपनाम देना संभव है।



### IDA वैश्विक शॉर्टकट

**ret-sync** IDA में ये वैश्विक शॉर्टकट परिभाषित करता है:

* ``Alt-Shift-S``  - **ret-sync** प्लगइन चलाएँ
* ``Ctrl-Shift-S``  - वैश्विक सिंकिंग टॉगल करें
* ``Ctrl-H``  - Hex-Rays सिंकिंग टॉगल करें

वैश्विक और Hex-Rays सिंकिंग को टॉगल करने के लिए डीबग टूलबार में दो बटन भी उपलब्ध हैं।

### IDA डीबगर कमांड पर बाइंडिंग

``Syncplugin.py`` डीबगर कमांड रैपर हॉटकी भी पंजीकृत करता है।

* ``F2`` - कर्सर पते पर ब्रेकपॉइंट सेट करें
* ``F3`` - कर्सर पते पर वन-शॉट ब्रेकपॉइंट सेट करें
* ``Ctrl-F2`` - कर्सर पते पर हार्डवेयर ब्रेकपॉइंट सेट करें
* ``Ctrl-F3`` - कर्सर पते पर वन-शॉट हार्डवेयर ब्रेकपॉइंट सेट करें
* ``Alt-F2`` - वर्तमान कर्सर पते का अनुवाद करें (डीबगर में रीबेस करें)
* ``Alt-F5`` - जाएँ
* ``Ctrl-Alt-F5`` - चलाएँ (केवल GDB)
* ``F10`` - एकल चरण
* ``F11`` - एकल ट्रेस

ये कमांड केवल तभी उपलब्ध हैं जब वर्तमान IDB सक्रिय हो। जहाँ संभव हो, इन्हें अन्य डीबगर्स के लिए भी लागू किया गया है।

## Ghidra उपयोग

### Ghidra प्लगइन का GUI

एक बार RetSyncPlugin खोलने के बाद, आप इसे सरल ड्रैग'एन'ड्रॉप द्वारा CodeBrowser विंडो में जोड़ सकते हैं:

![](https://assets.kitploit.com/production/public/readmes/3693/c6d122e27a256e4f99d0f760d2d6febb89648881dbdee9d6ffd84092bb0d9931.png)

यदि आप कई मॉड्यूल देखना चाहते हैं, तो फ़ाइलों को एक ही CodeBrowser दृश्य में खोलने की आवश्यकता है, बस अतिरिक्त फ़ाइलों को CodeBrowser विंडो में ड्रैग'एन'ड्रॉप करें जैसा कि ऊपर परिणाम प्राप्त करने के लिए।

### Ghidra वैश्विक शॉर्टकट

**ret-sync** Ghidra में ये वैश्विक शॉर्टकट परिभाषित करता है:

* ``Alt-S``  - सिंकिंग सक्षम करें
* ``Alt-Shift-S``  - सिंकिंग अक्षम करें
* ``Alt-R``  - सिंकिंग पुनः प्रारंभ करें
* ``Alt-Shift-R``  - कॉन्फ़िगरेशन पुनः लोड करें

### Ghidra डीबगर कमांड पर बाइंडिंग

डीबगर कमांड पर बाइंडिंग भी लागू की गई हैं। वे IDA के एक्सटेंशन के समान हैं ("Go" कमांड को छोड़कर)।

* ``F2``  - कर्सर पते पर ब्रेकपॉइंट सेट करें
* ``Ctrl-F2`` - कर्सर पते पर हार्डवेयर ब्रेकपॉइंट सेट करें
* ``Alt-F3`` - कर्सर पते पर वन-शॉट ब्रेकपॉइंट सेट करें
* ``Ctrl-F3`` - कर्सर पते पर वन-शॉट हार्डवेयर ब्रेकपॉइंट सेट करें
* ``Alt-F2`` - वर्तमान कर्सर पते का अनुवाद करें (डीबगर में रीबेस करें)
* ``F5`` - जाएँ
* ``Alt-F5`` - चलाएँ (केवल GDB)
* ``F10`` - एकल चरण
* ``F11`` - एकल ट्रेस


## Binary Ninja उपयोग

### Binary Ninja वैश्विक शॉर्टकट

**ret-sync** Binary Ninja में ये वैश्विक शॉर्टकट परिभाषित करता है:

* ``Alt-S``  - सिंकिंग सक्षम करें
* ``Alt-Shift-S``  - सिंकिंग अक्षम करें


### Binary Ninja शॉर्टकट

डीबगर कमांड पर बाइंडिंग भी लागू की गई हैं। वे IDA के एक्सटेंशन के समान हैं।

* ``F2``  - कर्सर पते पर ब्रेकपॉइंट सेट करें
* ``Ctrl-F2`` - कर्सर पते पर हार्डवेयर ब्रेकपॉइंट सेट करें
* ``Alt-F3`` - कर्सर पते पर वन-शॉट ब्रेकपॉइंट सेट करें
* ``Ctrl-F3`` - कर्सर पते पर वन-शॉट हार्डवेयर ब्रेकपॉइंट सेट करें
* ``Alt-F2`` - वर्तमान कर्सर पते का अनुवाद करें (डीबगर में रीबेस करें)
* ``Alt-F5`` - जाएँ
* ``F10`` - एकल चरण
* ``F11`` - एकल ट्रेस


## WinDbg उपयोग

### WinDbg प्लगइन कमांड

* **!sync**: सिंक्रनाइज़ेशन प्रारंभ करें
* **!syncoff**: सिंक्रनाइज़ेशन रोकें
* **!synchelp**: उपलब्ध कमांड की सूची संक्षिप्त विवरण के साथ प्रदर्शित करें।
* **!cmt [-a address] <string>**: IDA में वर्तमान ip पर टिप्पणी जोड़ें```
    [WinDbg]
    0:000:x86> pr
    eax=00000032 ebx=00000032 ecx=00000032 edx=0028eebc esi=00000032 edi=00000064
    eip=00430db1 esp=0028ed94 ebp=00000000 iopl=0         nv up ei pl nz na po nc
    cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
    image00000000_00400000+0x30db1:
    00430db1 57    push    edi

    0:000:x86> dd esp 8
    0028ed94  00000000 00433845 0028eebc 00000032
    0028eda4  0028f88c 00000064 002b049e 00000110

    0:000:x86> !cmt 0028ed94  00000000 00433845 0028eebc 00000032
    [sync.dll]  !cmt called

    [IDA]
    .text:00430DB1    push    edi             ; 0028ed94  00000000 00433845 0028eebc 00000032
  • !rcmt [-a address]: IDA में वर्तमान IP पर टिप्पणी रीसेट करें``` [WinDbg] 0:000:x86> !rcmt [sync] !rcmt called

    [IDA] .text:00430DB1 push edi

root@kitploit:~
* **!fcmt [-a address] <string>**: एक function comment जोड़ें उस फंक्शन के लिए जिसमें वर्तमान ip स्थित है```
    [WinDbg]
    0:000:x86> !fcmt decodes buffer with key
    [sync] !fcmt called

    [IDA]
    .text:004012E0 ; decodes buffer with key
    .text:004012E0                 public decrypt_func
    .text:004012E0 decrypt_func    proc near
    .text:004012E0                 push    ebp

नोट: इस कमांड को बिना तर्क के कॉल करने से फ़ंक्शन की टिप्पणी रीसेट हो जाती है।

  • !raddr : एक्सप्रेशन से मूल्यांकित rebased पते के साथ एक टिप्पणी जोड़ें

  • !rln : दिए गए पते के लिए डिसअसेंबलर से प्रतीक प्राप्त करें

  • !lbl [-a address] : डिसअसेंबलर में वर्तमान ip पर एक लेबल नाम जोड़ें``` [WinDbg] 0:000:x86> !lbl meaningful_label [sync] !lbl called

    [IDA] .text:000000000040271E meaningful_label: .text:000000000040271E mov rdx, rsp

root@kitploit:~
* **!cmd <string>**: WinDbg में एक कमांड निष्पादित करें और डिस्सेम्बलर में वर्तमान ip पर इसके आउटपुट को टिप्पणी के रूप में जोड़ें।```
    [WinDbg]
    0:000:x86> pr
    eax=00000032 ebx=00000032 ecx=00000032 edx=0028eebc esi=00000032 edi=00000064
    eip=00430db1 esp=0028ed94 ebp=00000000 iopl=0         nv up ei pl nz na po nc
    cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
    image00000000_00400000+0x30db1:
    00430db1 57     push    edi
    [sync.dll]  !cmd r edi

    [IDA]
    .text:00430DB1    push    edi             ; edi=00000064
  • !bc <||on|off|set 0xBBGGRR> : डिसअसेंबलर में पथ रंग को सक्षम/अक्षम करें। यह कोड ट्रेसिंग टूल नहीं है, इसके लिए कुशल उपकरण मौजूद हैं। प्रत्येक मैन्युअल रूप से कदम उठाए गए निर्देश को ग्राफ में रंग दिया जाता है। बिना तर्क के कॉल करने पर वर्तमान ip पर एकल निर्देश को रंग दें। "set" तर्क का उपयोग नए हेक्स RGB कोड के साथ पथ रंग सेट करने के लिए किया जाता है (रंग रीसेट करें यदि 0xFFFFFF से अधिक मान के साथ कॉल किया जाए)।
  • !idblist : डिस्पैचर से जुड़े सभी IDB क्लाइंट की सूची प्राप्त करें:``` [WinDbg] 0:000> !idblist

    currently connected idb(s): [0] target.exe

root@kitploit:~
* **!syncmodauto <on|off>**: डिस्सेम्बलर ऑटो स्विच को मॉड्यूल नाम के आधार पर सक्षम/अक्षम करें:```
    [WinDbg]
    0:000> !syncmodauto off

    [IDA]
    [*] << broker << dispatcher msg: sync mode auto set to off
  • !idbn : सक्रिय IDB को nवें क्लाइंट पर सेट करें। n एक मान्य दशमलव मान होना चाहिए। यह एक अर्ध-स्वचालित मोड है (महान jj को व्यक्तिगत श्रद्धांजलि)``` [WinDbg] 0:000:> !idbn 0

    current idb set to 0

root@kitploit:~
इस उदाहरण में, वर्तमान सक्रिय IDB क्लाइंट सेट किया गया होगा:```
	[0] target.exe.
  • !jmpto : तर्क के रूप में दिया गया एक्सप्रेशन वर्तमान डीबगर की स्थिति के संदर्भ में मूल्यांकित किया जाता है। यदि कोई मेल खाने वाला मॉड्यूल पंजीकृत है तो डिसअसेंबलर का दृश्य परिणामी पते के साथ सिंक किया जाता है। इसे मैन्युअल सिंकिंग के रूप में देखा जा सकता है, रीलोकेशन स्वचालित रूप से, चलते-चलते किया जाता है। विशेष रूप से यादृच्छिक रूप से स्थानांतरित बाइनरी के लिए उपयोगी।
  • !jmpraw : तर्क के रूप में दिया गया एक्सप्रेशन वर्तमान डीबगर की स्थिति के संदर्भ में मूल्यांकित किया जाता है। यदि कोई IDB सक्षम है तो डिसअसेंबलर का दृश्य परिणामी पते के साथ सिंक किया जाता है। पता रीबेस नहीं किया जाता और कोई IDB स्विचिंग नहीं होती। विशेष रूप से गतिशील रूप से आवंटित/उत्पन्न कोड के लिए उपयोगी।
  • !modmap : एक सिंथेटिक ("नकली") मॉड्यूल (इसके बेस पते और आकार का उपयोग करके परिभाषित) डीबगर की आंतरिक सूची में जोड़ा जाता है। msdn से: "यदि सभी मॉड्यूल को पुनः लोड किया जाता है - उदाहरण के लिए, Module पैरामीटर को खाली स्ट्रिंग पर सेट करके Reload को कॉल करके - तो सभी सिंथेटिक मॉड्यूल हटा दिए जाएंगे।" इसका उपयोग गतिशील रूप से आवंटित/उत्पन्न कोड को अधिक आसानी से डीबग करने के लिए किया जा सकता है।
  • !modunmap : बेस पते पर पहले से मैप किए गए सिंथेटिक मॉड्यूल को हटाएं।
  • !modcheck <||md5>: वर्तमान मॉड्यूल वास्तव में IDB की फ़ाइल से मेल खाता है या नहीं, इसकी जाँच करने के लिए उपयोग करें (जैसे: मॉड्यूल अपडेट किया गया है) जब बिना तर्क के कॉल किया जाता है, तो डीबग डायरेक्टरी से pdb का GUID उपयोग किया जाता है। यह वैकल्पिक रूप से md5 का उपयोग कर सकता है, लेकिन केवल स्थानीय डीबगी के साथ (रिमोट कर्नेल डीबगिंग में नहीं)।
  • !bpcmds <||save|load|>: bpcmds रैपर, .bpcmds (ब्रेकपॉइंट कमांड्स सूची) आउटपुट को वर्तमान IDB में सेव और रीलोड करें। यदि बिना तर्क के कॉल किया जाए तो सेव किए गए डेटा को प्रदर्शित करें (लेकिन निष्पादित न करें)। स्थायी भंडारण IDA के नेटनोड फीचर का उपयोग करके प्राप्त किया जाता है।
  • !ks: kv कमांड का डीबगर मार्कअप लैंग्वेज (DML) उन्नत आउटपुट। कोड पते क्लिक करने योग्य हैं (!jmpto) साथ ही डेटा पते (dc)।
  • !translate : IDA से उपयोग करने का इरादा (Alt-F2 शॉर्टकट), अपने मॉड्यूल के नाम और ऑफसेट के संबंध में एक पते को रीबेस करें।

Address optional argument

!cmt, !rcmt और !fcmt कमांड एक वैकल्पिक पता विकल्प का समर्थन करते हैं: -a या --address। पता हेक्साडेसिमल मान के रूप में पारित किया जाना चाहिए। कमांड पार्सिंग python के argparse मॉड्यूल पर आधारित है। लाइन पार्सिंग को रोकने के लिए -- का उपयोग करें।``` [WinDbg] 0:000:x86> !cmt -a 0x430DB2 comment

root@kitploit:~
पता एक मान्य निर्देश का पता होना चाहिए।

## GNU gdb (GDB) उपयोग

होस्ट के साथ सिंक करें:```
    gdb> sync
    [sync] sync is now enabled with host 192.168.52.1
    <not running>

    gdb> r
    Starting program: /bin/ls
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/libthread_db.so.1".

GDB plugin commands

कमांड का उपयोग करें, बिना "!" उपसर्ग के``` (gdb) cmd x/i $pc [sync] command output: => 0x8049ca3: push edi

root@kitploit:~
(gdb) synchelp
[sync] extension commands help:
 > sync <host>
 > syncoff
 > cmt [-a address] <string>
 > rcmt [-a address] <string>
 > fcmt [-a address] <string>
 > cmd <string>
 > bc <on|off|>
 > rln <address>
 > bbt <symbol>
 > patch <addr> <count> <size>
 > bx /i <symbol>
 > cc
 > translate <base> <addr> <mod>
root@kitploit:~
* **rln**: दिए गए पते के लिए IDB से प्रतीक प्राप्त करें
* **bbt**: सुंदर बैकट्रेस। **bt** के समान लेकिन डिसअसेंबलर से प्रतीक अनुरोध करता है```
    (gdb) bt
    #0  0x0000000000a91a73 in ?? ()
    #1  0x0000000000a6d994 in ?? ()
    #2  0x0000000000a89125 in ?? ()
    #3  0x0000000000a8a574 in ?? ()
    #4  0x000000000044f83b in ?? ()
    #5  0x0000000000000000 in ?? ()
    (gdb) bbt
    #0 0x0000000000a91a73 in IKE_GetAssembledPkt ()
    #1 0x0000000000a6d994 in catcher ()
    #2 0x0000000000a89125 in IKEProcessMsg ()
    #3 0x0000000000a8a574 in IkeDaemon ()
    #4 0x000000000044f83b in sub_44F7D0 ()
    #5 0x0000000000000000 in  ()
  • patch: लाइव संदर्भ के आधार पर डिसअसेंबलर में बाइट्स पैच करें

  • bx: सुंदर प्रदर्शन। x के समान लेकिन प्रतीक का उपयोग करते हुए। प्रतीक डिसअसेंबलर द्वारा हल किया जाएगा।

  • cc: डिसअसेंबलर में कर्सर पर जारी रखें। यह F3 का उपयोग करने का एक विकल्प है एक-शॉट ब्रेकपॉइंट सेट करने और F5 को जारी रखने के लिए। यह उपयोगी है यदि आप इसे gdb से करना पसंद करते हैं।``` (gdb) b* 0xA91A73 Breakpoint 1 at 0xa91a73 (gdb) c Continuing.

    Breakpoint 1, 0x0000000000a91a73 in ?? () (gdb) cc [sync] current cursor: 0xa91a7f [sync] reached successfully (gdb)

root@kitploit:~
## LLDB उपयोग

1. होस्ट के साथ समन्वयित करें```
    lldb> process launch -s
    lldb> sync
    [sync] connecting to localhost
    [sync] sync is now enabled with host localhost
    [sync] event handler started
  1. कमांड का उपयोग करें``` lldb> synchelp [sync] extension commands help:

    sync = synchronize with or the default value syncoff = stop synchronization cmt = add comment at current eip in IDA rcmt = reset comments at current eip in IDA fcmt = add a function comment for 'f = get_func(eip)' in IDA cmd = execute command and add its output as comment at current eip in IDA bc <on|off|> = enable/disable path coloring in IDA color a single instruction at current eip if called without argument lldb> cmt mooo

root@kitploit:~
## OllyDbg 1.10 का उपयोग

1. सिंक्रोनाइज़ेशन सक्षम करने (``Alt+s``)/अक्षम करने (``Alt+u``) के लिए प्लगइन मेनू या शॉर्टकट का उपयोग करें।

## OllyDbg2 का उपयोग

1. सिंक्रोनाइज़ेशन सक्षम करने (``Ctrl+s``)/अक्षम करने (``Ctrl+u``) के लिए प्लगइन मेनू या शॉर्टकट का उपयोग करें।

OllyDbg2 API की बीटा स्थिति के कारण, केवल निम्नलिखित सुविधाएँ लागू की गई हैं:

- ग्राफ़ सिंक [स्टेपिंग के लिए ``F7``; ``F8`` का उपयोग करें]
- टिप्पणी   [``CTRL+;`` का उपयोग करें]
- लेबल     [``CTRL+:`` का उपयोग करें]

## x64dbg का उपयोग

1. सिंक्रोनाइज़ेशन सक्षम करने ("``!sync"``) या अक्षम करने ("``!syncoff``") के लिए प्लगइन मेनू या कमांड का उपयोग करें।

2. कमांड का उपयोग करें```
[sync] synchelp command!
[sync] extension commands help:
 > !sync                          = synchronize with <host from conf> or the default value
 > !syncoff                       = stop synchronization
 > !syncmodauto <on | off>        = enable / disable idb auto switch based on module name
 > !synchelp                      = display this help
 > !cmt <string>                  = add comment at current eip in IDA
 > !rcmt <string>                 = reset comments at current eip in IDA
 > !idblist                       = display list of all IDB clients connected to the dispatcher
 > !idb <module name>             = set given module as the active idb (see !idblist)
 > !idbn <n>                      = set active idb to the n_th client. n should be a valid decimal value
 > !translate <base> <addr> <mod> = rebase an address with respect to local module's base
 > !insync                        = synchronize the selected instruction block in the disassembly window.

नोट: एक डिस्सेम्बलर (IDA/Ghidra, Alt-F2 शॉर्टकट) से !translate कमांड का उपयोग करने पर, डिस्सेम्बलर विंडो विशिष्ट पते पर "कूद" जाएगी (x64dbg कमांड लाइन में disasm चलाने के बराबर)।

पायथन लाइब्रेरी का उपयोग

कोई व्यक्ति ret-sync की मुख्य सुविधाओं (डिस्सेम्बलर के साथ स्थिति सिंकिंग, प्रतीक समाधान) का उपयोग करना चाह सकता है, भले ही पूर्ण डीबगिंग वातावरण उपलब्ध न हो या कस्टम टूल के साथ हो। इस उद्देश्य के लिए, एक न्यूनतम पायथन लाइब्रेरी निकाली गई है।

नीचे दिया गया उदाहरण एक स्क्रिप्ट के साथ पायथन लाइब्रेरी के उपयोग को दर्शाता है जो इवेंट-आधारित लॉगिंग/ट्रेसिंग टूल के आउटपुट के माध्यम से चलती है।```python from sync import *

HOST = '127.0.0.1'

MAPPINGS = [ [0x555555400000, 0x555555402000, 0x2000, " /bin/tempfile"], [0x7ffff7dd3000, 0x7ffff7dfc000, 0x29000, " /lib/x86_64-linux-gnu/ld-2.27.so"], [0x7ffff7ff7000, 0x7ffff7ffb000, 0x4000, " [vvar]"], [0x7ffff7ffb000, 0x7ffff7ffc000, 0x1000, " [vdso]"], [0x7ffffffde000, 0x7ffffffff000, 0x21000, " [stack]"], ]

EVENTS = [ [0x0000555555400e74, "malloc"], [0x0000555555400eb3, "open"], [0x0000555555400ee8, "exit"] ]

synctool = Sync(HOST, MAPPINGS)

for e in EVENTS: offset, name = e synctool.invoke(offset) print(" 0x%08x - %s" % (offset, name)) print("[>] press enter for next event") input()

root@kitploit:~
# विस्तार

हालाँकि प्रारंभ में डायनामिक विश्लेषण (डीबगर्स) पर ध्यान केंद्रित किया गया था, लेकिन प्लगइन्स सेट का विस्तार करना और अन्य टूल्स के साथ एकीकृत करना संभव है।

- **REVEN** Timeless Analysis and Debugging Platform के साथ एकीकरण [Tetrane](https://www.tetrane.com/) द्वारा:
  - http://blog.tetrane.com/2015/02/reven-in-your-toolkit.html
  - https://twitter.com/tetrane/status/1374768014193799175
- **EFI DXE Emulator** के साथ एकीकरण Assaf Carlsbad ([@assaf_carlsbad](https://twitter.com/assaf_carlsbad)) द्वारा:
  - https://twitter.com/assaf_carlsbad/status/1242114356881641474
  - https://github.com/assafcarlsbad/efi_dxe_emulator

अन्य संसाधन:

- "*Combining static and dynamic binary analysis - ret-sync*" Jean-Christophe Delaunay द्वारा
  - https://www.synacktiv.com/ressources/bieresecu1_ret-sync_en.pdf


# TODO

- निश्चित।

# ज्ञात बग/सीमाएँ

- Python 2.7/3.7, IDA 7.7 (Windows, Linux और Mac OS X), Ghidra 10.1.1, Binary Ninja 3.0.3225-dev, GNU gdb (GDB) 8.1.0 (Debian), lldb 310.2.37 के साथ परीक्षण किया गया।
- पक्षों के बीच कोई **प्रमाणीकरण/एन्क्रिप्शन** नहीं है; आप अपने आप ही हैं।
- स्व-संशोधित कोड दायरे से बाहर है।

GDB के साथ:

- ऐसा लगता है कि 'return' कमांड का उपयोग करने पर stop event कॉल नहीं होता।
- मल्टी-थ्रेडिंग डीबगिंग में सिग्नल्स के साथ समस्याएँ हैं।

WinDbg के साथ:

- IDA का क्लाइंट प्लगइन को सूचित किया जाता है, भले ही सामना किया गया ब्रेकपॉइंट एक कमांड स्ट्रिंग का उपयोग करता हो जो इसे जारी रखता है ('``g``')। यदि इन घटनाओं की अधिकता हो तो इससे बड़ा धीमा हो सकता है। एक सीमित सुधार लागू किया गया है, सबसे अच्छा समाधान अस्थायी रूप से सिंक बंद करना है।
- संभावित रेस कंडीशन

Ghidra के साथ:

- डीकंपाइलर विजेट में शॉर्टकट्स अपेक्षित रूप से काम नहीं कर रहे हैं।

IDA के साथ:

- बड़े ग्राफ़ के लिए ग्राफ़ विंडो का पुनः चित्रण काफी धीमा है।
- Linux वातावरण में **ret-sync** शॉर्टकट्स में संघर्ष।

संघर्ष:

- Logitech Updater सॉफ्टवेयर समान डिफ़ॉल्ट पोर्ट (9100) का उपयोग करने के लिए जाना जाता है। एक समाधान एक अलग पोर्ट परिभाषित करने के लिए वैश्विक `.sync` कॉन्फ़िगरेशन फ़ाइल का उपयोग करना है।```
[INTERFACE]
host=127.0.0.1
port=9234

लाइसेंस

ret-sync मुफ्त सॉफ्टवेयर है: आप इसे फ्री सॉफ्टवेयर फाउंडेशन द्वारा प्रकाशित GNU जनरल पब्लिक लाइसेंस की शर्तों के तहत, या तो लाइसेंस के संस्करण 3 के तहत, या (अपनी पसंद पर) किसी भी बाद के संस्करण के तहत पुनर्वितरित और/या संशोधित कर सकते हैं।

यह प्रोग्राम इस उम्मीद में वितरित किया जाता है कि यह उपयोगी होगा, लेकिन बिना किसी वारंटी के; यहां तक कि व्यापारिकता या किसी विशेष उद्देश्य के लिए उपयुक्तता की निहित वारंटी के बिना भी। अधिक जानकारी के लिए GNU जनरल पब्लिक लाइसेंस देखें।

आपको इस प्रोग्राम के साथ GNU जनरल पब्लिक लाइसेंस की एक प्रति प्राप्त होनी चाहिए थी। यदि नहीं, तो http://www.gnu.org/licenses/ देखें।

बाइनरी निंजा प्लगइन MIT लाइसेंस के तहत जारी किया गया है।

धन्यवाद

ब्रूस डैंग, StalkR, @Ivanlef0u, डेमियन ऑमेत्रे, सेबेस्टियन रेनॉड और केविन स्कुडलाप्स्की, @m00dy, @saidelike, जेवियर मेहरेनबर्गर, ben64, राफेल रिगो, Jiss को उनकी दयालुता, मदद, प्रतिक्रिया और विचारों के लिए। इल्फ़ाक गिलफ़ानोव, इगोर स्कोचिंस्की और अर्नो डीडेरेन को IDA के आंतरिक भागों में उनकी सहायता और उत्कृष्ट समर्थन के लिए। जॉर्डन वीन्स और वेक्टर 35 को धन्यवाद। अंत में, सभी योगदानकर्ताओं और उन सभी को भी धन्यवाद जिन्होंने समस्याओं/बगों की सूचना दी।

टूल डाउनलोड करें