تحذير
هذا برنامج RAT به أخطاء، غير مكتمل، غير مستقر. لا يزال تطبيقًا "قيد التطوير".
مقدمة
مشروع أُنشئ لقتل بعض وقت فراغي، وهو غير مُصان بشكل نشط.
هناك الكثير من الأشياء لتحسينها/إصلاحها، وسيستغرق الأمر وقتًا للوصول إلى استقرار في هذا المشروع.
الميزات
- شل عكسي
- سرد العمليات
- بث سطح المكتب
- نظام الملفات
- تنزيل ملف
فهم المشروع
IThreadChannels هي وسائل للتواصل بين خيطين بطريقة متزامنة.
أستخدمها ككائن ذري مشترك بين خيطين للتواصل، وفي هذا التطبيق
أريد اتصالًا ثنائي الاتجاه لذا أحتاج قناتين، ولهذا أنشأت IDoubleThreadChannel.
المتزامن يعني أنه يجب استدعاؤها من قبل الخيوط المتواصلة لاستقبال الأحداث عند الحاجة.
مثال: خيط الواجهة الرسومية سيستدعي getFromApp() ويتوقف هناك لاستقبال أحداث التطبيق.
أما الـ Communicators فهم يديرون خيوطهم الخاصة ويطلقون الاستدعاءات بشكل غير متزامن.
أنت لا تستدعيهم، هم يستدعونك.
إرشادات
- يجب حذف كائنات الحزم بواسطة NetServerService
- يجب حذف مؤشرات العملاء بواسطة Application.
وحدات الماكرو
- SHOW_CONSOLE إذا كان يجب إظهار وحدة التحكم لأغراض التصحيح.
- MANUAL_MEMORY_MANAGEMENT إذا كان true أحاول إدارة الذاكرة التي أخصصها (للتعلم)، وإذا كان false
فسأستخدم shared_ptr بدلاً من ذلك لجعل إدارة الذاكرة أسهل بكثير.
المهام
- ميزة بث سطح المكتب غير منتهية (الخروج من حلقة لا نهائية).
- التخلص من الأخطاء، معظمها مشكلات تحويل.
- يجب أن يرسل رأس الحزمة 8 بايت لطول الحزمة وليس int32_t، لذا غيّره إلى uint64_t.
- استخدام أقفال القراءة/الكتابة https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-acquiresrwlockexclusive
- حقل dataLength في فئة Buffer غير صحيح ويجب تحسينه.
- مشكلة كائنات Event التي تحتوي على void* والتي لا يجب حذفها عبر delete void*
يمكن حلها إما كما فعلت، حيث يتولى مستهلك الحدث تحويله إلى القيمة المتوقعة
وحذفه، أو باستخدام قوالب الفئات مثل new AppEvent ثم يمكن حذف object*
- فئة Buffer يجب أن ترمي استثناءات عند العمليات غير القانونية.
- التشفير
- بث الكاميرا
- معالجة الأخطاء ... في كل مكان.