以下の解決策のどちらが優れているか知りたいと思っていました: いくつかの .class ファイルを変更したいのですが、それには 2 つの方法があることに気付きました:
- .class ファイルを逆コンパイルして変更し、最後に再度コンパイルします。-
- 16進エディタで直接修正してください。
ありがとう
以下の解決策のどちらが優れているか知りたいと思っていました: いくつかの .class ファイルを変更したいのですが、それには 2 つの方法があることに気付きました:
ありがとう
これら 2 つの悪い選択のうち、逆コンパイル、変更、および再コンパイルの方が優れています。バイナリで何かを変更すると、他のもののオフセットが変更される可能性が高く、エラーが発生しやすくなります。
.class ファイルには、私の知る限り、チェックサムやエラー チェックはありませんが、バイトコードは検証する必要があります。それでも、コンパイラからの出力の方が安全です。
クラスの JSP ソースが利用可能であることが判明しました。そのため、JSP ソースを変更してから JSP コンパイラ (このようなもの) を使用することをお勧めします。
オプション #3 - バイトコードをいじるつもりなら、車輪の再発明を避けるために、バイトコード用に設計されたライブラリを使用することが少なくともできます。たとえば、asmを参照してください
私はオプション#1です。JADまたはその他の逆コンパイラーを使用して、.javaを作成し、変更を加え、古い.classをコンパイルして新しいバージョンに置き換えます。
バイトコードファイルをいじることを伴う解決策は、良い解決策ではありません。
良い解決策は次のとおりです。
ソース コードを入手し、ソース コードに必要な変更を加えます。次に、再コンパイル、単体テストの実行、WAR のビルド、再デプロイなどを行います。
ソース コードを入手できない場合は、ソース コードを書いた人に問題を解決してもらいます。
無料で問題を解決してもらえない場合は、料金を支払います。
お金を払っても解決しない場合は、製品を捨てて、代替品を探してください。
上記のいずれも実行可能なオプションがない場合にのみ、逆コンパイルおよび/またはバイトコード エンジニアリングの悪い解決策を検討してください。それでも、現在いる全体から抜け出す方法を計画し始める必要があります。
正直なところ、どれが悪い解決策の中で最も優れているとは言えません。による: