P2P-Develop / PeyangSuperbAntiCheat

If possible.
https://psac.peya.tokyo
MIT License
16 stars 1 forks source link

Aura NPC and Panic NPC are detected in the scan even manually #28

Closed Potato1682 closed 4 years ago

Potato1682 commented 4 years ago

故意に行っていることも原因であるかもしれませんが、仮に誰かが故意でなくても攻撃しVLの基準値を突破されkickされても、その様子を確認し誤動作であることを確認する術がスタッフにありません。
追加・修正して頂きたい内容は次の通りです。

Potato1682 commented 4 years ago

もしリプレイ機能の実装がログ保存になる場合、ローテート機能(圧縮分割)の実装を補助します。

PeyaPeyaPeyang commented 4 years ago

手動NPCの場合は、スタッフに通知されます。
自動NPCの場合、スタッフのみにブロードキャストされるようにそのへんは対応されています。

次の、リプレイシステムについてなのですが、 現時点のPlayerMoveEvent等では対応できない可能性があります。

Potato1682 commented 4 years ago

座標を定期的に取得して「どこからどこまで動いたか」がログに記録できれば良いと思います(明らかにスレッド増えますね)。 それと「手動」の解釈は誰かがコマンドを実行しているではなく、NPCにしっかりエイムを手動で向けて殴り続けた時のことを考えています。明らかに故意にやらないとできないようなものですが、一応そのような予測も必要であると思われます。

PeyaPeyaPeyang commented 4 years ago

定期的に座標を取得とあるのですが、Timerや,BHOP(同じ)を使用されていると、Eventが正常に呼び出されません。
プレイヤーの座標が更新されないということがBukkit内部で起きているので、現時点ではPacket監視しかないようです。
また、プレイヤーのスピードは、他プラグインや、ポーションエフェクトなどからの干渉が考えられるため、現時点ではちょっと、、、というような感じです。 また、チート検出に引っかかるような行為をされると、ほぼ見分けることができなくなると考えられます。
このことについても、現時点では考え中という感じです。

Potato1682 commented 4 years ago

恐らく手動かどうか検出するにはNPCとプレイヤー間の相対角度+攻撃回数で評価できると思います。 相対角度の計算は公式...というまでには至りませんが計算方法はいくつでもあるので、速度ベクトルの計算さえ合えば関数が定義できると思います。

PeyaPeyaPeyang commented 4 years ago

手動かどうかの検出はProtocolLibのUseEntityパケットで検出しております。 また、VapeV3を使用して、NPCとの中心誤差を検証したところ、常にランダムということが判明しました。 そのため、相対角度で判定するのは難しいかと思われます。 また、UseEntityは、Clientがプレイヤーまたはエンティティをクリックまたはアタックした際に送信されます。 そのため、プレイヤーを殴ったという判定をクライアントがしなかった場合、このパケットは送信されません。 つまり、NPCとプレイヤーの相対角度の計算はクライアントですでにされてると思われます。 ですが、そのクライアントがHackClientだった場合、AntiHackに引っかからない程度にアタックパケットを送りつけます。 また、多くのKIllAura使用者は、BlatantModeと言われる、常に対象プレイヤーを見続けるモードを使用しています。 使用してない場合は後ろを向いていても攻撃できてしまいます。 ですが、本プラグインはスタッフが常駐しているような中規模サーバの使用を目的とし、(多分)後ろを向いている攻撃は、 VanishをしているStaffにより見分けることができます。 そのことから、相対角度の計算は事実上不要かと思われます。

Potato1682 commented 4 years ago

了解しました。検証の程ありがとうございます。