Java アプリケーションでインストルメンテーション ライブラリを無効にしたり、現在実行中のライブラリがあるかどうかを確認したりすることはできますか?
私の目標は、セキュリティ上の理由から、ユーザーがアプリケーション上でインストルメンテーションの実装を実行できないようにすることです。
いくつかの実験の後、自分で理論的な解決策を思いつきました。その中で、java.class.path
システム プロパティがパス区切り文字の後に -javaagent VM 引数 jar ファイルのパスで終わることがわかりました。このプロパティから、クラスパス属性の 1 つがプログラム自体で指定されていない外部 jar であるかどうかを確認し、エイリアン jar が検出された場合はアプリケーションを終了できます。
ただし、上記のアプローチはややハッキリしているように思えますが、-javaagent 引数を直接ブロックする方法や、インストルメンテーション エージェント ライブラリを検出する簡単な方法を見つけることができませんでした。これらのよりクリーンな代替手段のいずれかは可能ですか?