OwnershipStealer
هذا الكود بلغة C# هو تطبيق وحدة تحكم يحاول الحصول على ملكية ملف محدد.
منطق الكود
يتحقق البرنامج أولاً مما إذا كان اسم الملف قد حُدد كوسيط لسطر الأوامر، وإذا لم يكن كذلك، يطلب من المستخدم إدخاله. ثم يتابع محاولة الحصول على ملكية الملف بتنفيذ الخطوات التالية:
- الحصول على رمز (token) العملية الحالي.
- البحث عن LUID (المعرّف الفريد محليًا) لامتياز SeTakeOwnershipPrivilege.
- تمكين امتياز SeTakeOwnershipPrivilege في الرمز (token).
- محاولة الحصول على ملكية الملف عن طريق إنشاء كائن FileSecurity جديد للملف، وتعيين المالك ليكون المستخدم الحالي، ثم تعيين التحكم الجديد في الوصول على الملف.
- إذا واجه البرنامج استثناء UnauthorizedAccessException، فسيعيد المحاولة حتى يتم الحصول على ملكية الملف بنجاح أو يتم إلقاء استثناء يمنع البرنامج من المتابعة.
بمجرد الحصول على الملكية، ينتهي البرنامج ويعرض رسالة تفيد بأنه قد انتهى.
الاستخدام
- استنسخ المستودع أو حمّله.
- افتح المشروع في Visual Studio.
- أنشئ المشروع (Build).
- افتح موجه الأوامر أو الطرفية وانتقل إلى موقع الملف التنفيذي.
- نفّذ الأمر مع مسار الملف كوسيط:
- OwnershipStealer.exe [file path]
- إذا لم يتم توفير مسار ملف، فسيطلب البرنامج واحدًا.
الترخيص
هذا المشروع مرخّص بموجب رخصة MIT - انظر ملف LICENSE للحصول على التفاصيل.
فيديو إثبات المفهوم
https://youtu.be/sOcJp58sblM