
sogen — Updated!
🪅 مُحاكي مساحة المستخدم لنظامي Windows و Linux
يشغّل Sogen برامج Windows وLinux بدون نظام تشغيل حقيقي، ويتيح لك رؤية والتحكم في كل ما تفعله هذه البرامج.
بدلاً من إعادة تنفيذ آلاف واجهات برمجة تطبيقات أنظمة التشغيل، يحاكي Sogen الملفات الثنائية على مستوى وحدة المعالجة المركزية واستدعاءات النظام، ويشغّل ملفات DLL الحقيقية للنظام، بحيث يتطابق السلوك بشكل وثيق مع نظام التشغيل الحقيقي.
يمكن ربط أو فحص أو إعادة كتابة كل تعليمة ووصول للذاكرة واستدعاء لواجهة برمجة تطبيقات، وتكون عمليات التشغيل حتمية بالكامل، ويمكن التقاط لقطة لحالة المحاكي بالكامل واستعادتها.
مبني بلغة C++ ويعمل بواسطة محرك وحدة المعالجة المركزية الذي تختاره:
جرّبه الآن: sogen.dev
الميزات الرئيسية
- ملفات DLL حقيقية للنظام: يشغّل ntdll وkernel32 وuser32 الفعلية، وليس نسخاً معاد تنفيذها
- الربط وإعادة الكتابة: اعتراض وتغيير الذاكرة والتعليمات واستدعاءات النظام واستدعاءات واجهات برمجة التطبيقات
- داخلية Windows موثوقة: تحميل PE (إعادة التوطين، TLS)، أنواع ذاكرة Windows، SEH، تعدد الخيوط، السجل، نظام الملفات والشبكات
- التقاط اللقطات والاستعادة: تسلسل كامل للحالة، لقطات سريعة في الذاكرة، وتحميل ملفات minidump
- يعمل في كل مكان: Windows وLinux وmacOS وAndroid وiOS والمتصفح، على x86-64 وarm64
- حتمي: كل عملية تشغيل قابلة لإعادة الإنتاج، حتى مستوى التعليمة
معاينة
تصحيح أخطاء غير قابل للاكتشاف
صحّح الأخطاء باستخدام الأدوات التي تعرفها بالفعل، مثل IDA Pro أو GDB، عبر بروتوكول GDB، أو استخدم مصحح الأخطاء المدمج داخل المتصفح.
يعمل مصحح الأخطاء على مستوى المحاكي، خارج العملية، لذا يبقى غير مرئي لفحوصات مكافحة التصحيح.
تشغيل الألعاب في بيئة معزولة
تعمل تطبيقات الواجهة الرسومية الأصلية، مع نوافذ وحوارات وعناصر تحكم عاملة.
تمكّن المحاكاة الافتراضية لوحدة معالجة الرسومات تسريع ثلاثي الأبعاد على وحدة معالجة الرسومات الحقيقية لديك، بينما يعمل محرك Hyper-V على تشغيل الكود محلياً على وحدة المعالجة المركزية لديك. سريع بما يكفي للألعاب.
تعمل عناوين Direct3D 8/9/10/11 عبر DXVK، الذي يترجم Direct3D إلى Vulkan فوق جسر وحدة معالجة الرسومات.
نظرة عامة على المشروع
انقر هنا للاطلاع على الشرائح.
روابط Python
ثبّت باستخدام:
pip install sogen
تتطلب روابط Python جذر محاكاة. يمكنك تنزيل جذر جاهز هنا، أو إنشاء جذر خاص بك باتباع التعليمات في الويكي.
مثال:
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 و...
1. تحقق من الكود:
git clone --recurse-submodules https://github.com/momo5502/sogen.git
2. شغّل الأمر التالي في موجه أوامر تطوير x64 في الدليل المستنسخ:
cmake --preset=vs2022
3. قم ببناء الحل الذي تم إنشاؤه في build/vs2022/sogen.sln
4. أنشئ تفريغاً للسجل بتشغيل grab-registry.bat كمسؤول وضعه في مجلد القطع الأثرية بجوار analyzer.exe
5. شغّل البرنامج الذي تختاره:
analyzer.exe C:\example.exe
