
sogen — Updated!
🪅 विंडोज़ और लिनक्स यूज़रस्पेस एमुलेटर
Sogen वास्तविक ऑपरेटिंग सिस्टम के बिना Windows और Linux प्रोग्राम चलाता है, और आपको उनके द्वारा किए जाने वाले हर काम को देखने और नियंत्रित करने देता है।
हजारों OS API को दोबारा लागू करने के बजाय, Sogen बाइनरी को CPU और syscall स्तर पर अनुकरण (emulate) करता है और वास्तविक सिस्टम DLL चलाता है, इसलिए व्यवहार वास्तविक OS से काफी मिलता-जुलता होता है।
हर निर्देश, मेमोरी एक्सेस और API कॉल को हुक, निरीक्षण या फिर से लिखा जा सकता है, रन पूरी तरह से नियतात्मक (deterministic) होते हैं, और पूरे अनुकरणकर्ता की स्थिति को स्नैपशॉट और पुनर्स्थापित किया जा सकता है।
C++ में निर्मित और आपकी पसंद के CPU बैकएंड द्वारा संचालित:
इसे आज़माएं: sogen.dev
मुख्य विशेषताएं
- वास्तविक सिस्टम DLL: वास्तविक ntdll, kernel32 और user32 चलाता है, न कि दोबारा लागू किए गए स्टब
- हुक और फिर से लिखना: मेमोरी, निर्देश, syscall और API कॉल को इंटरसेप्ट और बदलें
- विश्वसनीय Windows आंतरिक: PE लोडिंग (रिलोकेशन, TLS), Windows मेमोरी प्रकार, SEH, थ्रेडिंग, रजिस्ट्री, फाइलसिस्टम और नेटवर्किंग
- स्नैपशॉट और पुनर्स्थापना: पूर्ण स्टेट सीरियलाइजेशन, तेज़ इन-मेमोरी स्नैपशॉट और minidump लोडिंग
- हर जगह चलता है: Windows, Linux, macOS, Android, iOS और ब्राउज़र, x86-64 और arm64 पर
- नियतात्मक: हर रन प्रतिलिपि योग्य है, निर्देश स्तर तक
पूर्वावलोकन
अज्ञेय डिबगिंग
उन टूल्स के साथ डिबग करें जिन्हें आप पहले से जानते हैं, जैसे IDA Pro या GDB, GDB प्रोटोकॉल के माध्यम से, या अंतर्निहित इन-ब्राउज़र डिबगर का उपयोग करें।
डिबगर अनुकरणकर्ता स्तर पर, प्रक्रिया के बाहर चलता है, इसलिए यह एंटी-डिबग जांचों से अदृश्य रहता है।
गेम्स को सैंडबॉक्स में चलाएं
नेटिव GUI ऐप्स चलते हैं, जिनमें काम करने वाली विंडो, डायलॉग और कंट्रोल शामिल हैं।
GPU पैरावर्चुअलाइजेशन आपके वास्तविक GPU पर 3D एक्सेलेरेशन सक्षम करता है, जबकि Hyper-V बैकएंड कोड को आपके CPU पर नेटिव रूप से चलाता है। गेम्स के लिए पर्याप्त तेज़।
Direct3D 8/9/10/11 शीर्षक DXVK के माध्यम से चलते हैं, जो GPU ब्रिज के ऊपर Direct3D को Vulkan में अनुवादित करता है।
परियोजना अवलोकन
स्लाइड्स के लिए यहां क्लिक करें।
Python बाइंडिंग्स
इसके साथ इंस्टॉल करें:
pip install sogen
Python बाइंडिंग्स के लिए एक अनुकरण रूट (emulation root) की आवश्यकता होती है। आप एक तैयार रूट यहां डाउनलोड कर सकते हैं, या wiki में दिए गए निर्देशों का पालन करके अपना खुद का बना सकते हैं।
उदाहरण:
import sogen
emu = sogen.windows.create_application("c:/test-sample.exe", emulation_root="./root")
def on_module_load(module):
if module.name.lower() == "test-sample.exe":
emu.hooks.memory_execution_at(module.entry_point, lambda address: print(f"hit entry point: 0x{address:x}"))
emu.callbacks.on_module_load = on_module_load
emu.start()
print(emu.process.exit_status)
सेटअप विवरण और एक बड़ा उदाहरण के लिए examples/python/README.md देखें।
अनौपचारिक बाइंडिंग्स
Dart बाइंडिंग्स एक अलग रिपॉजिटरी में उपलब्ध हैं।
त्वरित प्रारंभ (Windows + Visual Studio)
[!TIP]
Windows, Linux, macOS, ... पर अनुकरणकर्ता को बनाने और चलाने के बारे में अधिक विवरण के लिए Wiki देखें।
1. कोड चेकआउट करें:
git clone --recurse-submodules https://github.com/momo5502/sogen.git
2. क्लोन की गई निर्देशिका में x64 Development Command Prompt में निम्न कमांड चलाएं:
cmake --preset=vs2022
3. build/vs2022/sogen.sln पर उत्पन्न समाधान (solution) बनाएं
4. grab-registry.bat को व्यवस्थापक के रूप में चलाकर एक रजिस्ट्री डंप बनाएं और इसे analyzer.exe के बगल में artifacts फ़ोल्डर में रखें
5. अपनी पसंद का प्रोग्राम चलाएं:
analyzer.exe C:\example.exe
