
🪅 مُحاكي مساحة المستخدم لنظامي Windows و Linux
يشغّل Sogen برامج Windows وLinux بدون نظام تشغيل حقيقي، ويتيح لك رؤية والتحكم في كل ما تفعله هذه البرامج.
بدلاً من إعادة تنفيذ آلاف واجهات برمجة تطبيقات أنظمة التشغيل، يحاكي Sogen الملفات الثنائية على مستوى وحدة المعالجة المركزية واستدعاءات النظام، ويشغّل ملفات DLL الحقيقية للنظام، بحيث يتطابق السلوك بشكل وثيق مع نظام التشغيل الحقيقي.
يمكن ربط أو فحص أو إعادة كتابة كل تعليمة ووصول للذاكرة واستدعاء لواجهة برمجة تطبيقات، وتكون عمليات التشغيل حتمية بالكامل، ويمكن التقاط لقطة لحالة المحاكي بالكامل واستعادتها.
مبني بلغة C++ ويعمل بواسطة محرك وحدة المعالجة المركزية الذي تختاره:
جرّبه الآن: sogen.dev
صحّح الأخطاء باستخدام الأدوات التي تعرفها بالفعل، مثل IDA Pro أو GDB، عبر بروتوكول GDB، أو استخدم مصحح الأخطاء المدمج داخل المتصفح.
يعمل مصحح الأخطاء على مستوى المحاكي، خارج العملية، لذا يبقى غير مرئي لفحوصات مكافحة التصحيح.
تعمل تطبيقات الواجهة الرسومية الأصلية، مع نوافذ وحوارات وعناصر تحكم عاملة.
تمكّن المحاكاة الافتراضية لوحدة معالجة الرسومات تسريع ثلاثي الأبعاد على وحدة معالجة الرسومات الحقيقية لديك، بينما يعمل محرك Hyper-V على تشغيل الكود محلياً على وحدة المعالجة المركزية لديك. سريع بما يكفي للألعاب.
تعمل عناوين Direct3D 8/9/10/11 عبر DXVK، الذي يترجم Direct3D إلى Vulkan فوق جسر وحدة معالجة الرسومات.
انقر هنا للاطلاع على الشرائح.
ثبّت باستخدام:
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 متاحة في مستودع منفصل.
[!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