경고
이것은 버그가 많은 RAT이며, 완성되지 않았고 안정적이지 않습니다. 여전히 "작업 진행 중"인 애플리케이션입니다.
소개
제 자유 시간을 때우기 위해 만든 프로젝트로, 적극적으로 유지 관리되지는 않습니다.
개선/수정할 것이 많으며, 이 프로젝트가 안정화되려면 시간이 걸릴 것입니다.
기능
- 리버스 셸
- 프로세스 목록
- 데스크톱 스트리밍
- 파일 시스템
- 파일 다운로드
프로젝트 이해하기
IThreadChannels는 두 스레드가 동기적인 방식으로 통신하기 위한 수단입니다.
저는 이들을 두 스레드가 통신을 위해 공유하는 원자적(atomic) 객체로 사용합니다. 이 앱에서는
양방향 통신이 필요하므로 두 개의 채널이 필요하며, 그래서 IDoubleThreadChannel을 만들었습니다.
동기적이라는 것은 통신하는 스레드가 필요에 따라 이벤트를 수신하기 위해 이를 호출해야 함을 의미합니다.
예를 들어, UI 스레드는 getFromApp()을 호출하고 App 이벤트를 수신하기 위해 그곳에서 블로킹됩니다.
반면 Communicator는 자체 스레딩을 관리하고 콜백을 비동기적으로 트리거합니다.
여러분이 그들을 호출하는 것이 아니라, 그들이 여러분을 호출합니다.
지침
- Packet 객체는 NetServerService에 의해 삭제되어야 합니다.
- Client 포인터는 Application에 의해 삭제되어야 합니다.
매크로
- SHOW_CONSOLE 디버깅 목적으로 콘솔을 표시할지 여부.
- MANUAL_MEMORY_MANAGEMENT true인 경우 할당한 메모리를 직접 관리하려고 합니다(학습 목적). false인 경우
대신 shared_ptr을 사용하여 메모리 관리를 훨씬 쉽게 만듭니다.
할 일
- 데스크톱 스트리밍 기능 미완료(무한 루프 탈출).
- 대부분 변환 문제인 오류 제거
- 패킷 헤더는 패킷 길이에 대해 int32_t가 아닌 8바이트를 전송해야 하므로 uint64_t로 변경하세요.
- 읽기/쓰기 잠금 사용 https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-acquiresrwlockexclusive
- Buffer 클래스의 dataLength 필드가 올바르지 않으므로 개선해야 합니다.
- Event 객체에 delete void를 통해 삭제되어서는 안 되는 void가 포함된 문제는
제가 한 것처럼 해결할 수 있습니다. 이벤트의 소비자가 이를 예상된 값으로 캐스팅하여
삭제하거나, new AppEvent과 같은 클래스 템플릿을 사용하여 delete object*로 삭제할 수 있습니다.
- Buffer 클래스는 잘못된 작업에 대해 예외를 throw해야 합니다.
- 암호화
- 카메라 스트리밍
- 오류 처리 .... 모든 곳에서.