警告
これはバグの多いRATで、完成しておらず、安定していません。まだ「開発中」のアプリケーションです。
はじめに
暇つぶしのために作られたプロジェクトで、積極的にはメンテナンスされていません。
改善・修正すべき点が数多くあり、このプロジェクトを安定させるには時間がかかるでしょう。
機能
- リバースシェル
- プロセス一覧
- デスクトップストリーミング
- ファイルシステム
- ファイルのダウンロード
プロジェクトの理解
IThreadChannels は、2つのスレッドが同期方式で通信するための手段です。
このアプリでは、通信のために2つのスレッドが共有するアトミックなオブジェクトとして使用しています。
双方向通信が必要なので2つのチャンネルが必要であり、そのために IDoubleThreadChannel を作成しました。
同期式とは、必要に応じてイベントを受信するために、通信スレッドがそれらを呼び出さなければならないことを意味します。
例: UIスレッドは getFromApp() を呼び出し、そこでブロックして App イベントを受信します。
一方、Communicators は自身のスレッドを管理し、コールバックを非同期にトリガーします。
あなたがそれらを呼ぶのではなく、それらがあなたを呼びます。
ガイドライン
- Packet オブジェクトは NetServerService によって削除されるべきです
- Client ポインタは Application によって削除されるべきです
マクロ
- SHOW_CONSOLE デバッグ目的でコンソールを表示するかどうか。
- MANUAL_MEMORY_MANAGEMENT true の場合、割り当てたメモリを自分で管理しようとします(学習用)。false の場合、
代わりに shared_ptr を使用して、メモリ管理をはるかに簡単にします。
TODO
- デスクトップストリーミング機能は未完成(無限ループを抜け出す)
- エラーを解消する。主に変換の問題
- Packet ヘッダーはパケット長として int32_t ではなく8バイトを送信する必要があるため、uint64_t に変更してください
- Read/Write ロックを使用する https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-acquiresrwlockexclusive
- Buffer クラスの dataLength フィールドは不正確なので、改善すべきです
- Event オブジェクトが void* を持つ問題は、delete void* によって削除されるべきではないため、
私がやったように、イベントの消費者が期待される値にキャストして削除するか、
または new AppEvent のようなクラステンプレートを使用して、delete object* とできるようにすることで解決できます。
- Buffer クラスは不正な操作に対して例外をスローすべきです。
- 暗号化
- カメラストリーミング
- エラーハンドリング .... いたるところで。