ПРЕДУПРЕЖДЕНИЕ
Это багливый RAT, не завершённый, нестабильный. Это всё ещё "работа в процессе" приложение.
Введение
Проект создан, чтобы убить немного моего свободного времени, он не поддерживается активно.
Есть много вещей, которые нужно улучшить/исправить, и потребуется время, чтобы достичь стабильности в этом проекте.
Возможности
- Reverse Shell
- List Process
- Desktop streaming
- FileSystem
- Download File
Понимание проекта
IThreadChannels — это средства для синхронной связи двух потоков.
Я использую их как атомарный объект, разделяемый двумя потоками для общения. В этом приложении
мне нужна двусторонняя связь, поэтому мне нужно два канала, и я создал IDoubleThreadChannel.
Синхронный означает, что они должны вызываться взаимодействующими потоками для получения событий по мере необходимости.
Например, поток UI вызовет getFromApp() и будет заблокирован там, чтобы получать события приложения.
Communicators, с другой стороны, управляют своими собственными потоками и запускают обратные вызовы асинхронно.
Вы их не вызываете, они вызывают вас.
Рекомендации
- Объекты Packet должны удаляться NetServerService
- Указатели на Client должны удаляться 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, тогда это можно delete object*
- Класс Buffer должен выбрасывать исключения при недопустимых операциях.
- Шифрование
- Потоковое видео с камеры
- Обработка ошибок .... везде.