0

ダウンロードしたアプリで Java dll ファイルを受け取りました。この DLL ファイルは Java で書かれており、逆コンパイルしたいと考えています。

jar を含むこの dll を呼び出す方法は次のとおりです。

new JarInputStream(getClass().getResourceAsStream("jarjava.dll"));

それを逆コンパイルする方法はありますか?

4

3 に答える 3

1

Java ソース ファイルは .class ファイルにコンパイルされます。私の知る限り、Java コードを DLL にコンパイルする標準的な方法はありません。

ここで何が起こった可能性がありますか:

  • これは、JNI API に対して記述された C コードであり、Java コードと (または Java コードから) 対話するために使用されます。
  • これは、何らかのツールによって (自動的に) C コードに変換され、DLL にコンパイルされた Java コードです。
  • これは、誰かが DLL に名前を変更した JAR ファイルです。その場合は、名前を元に戻し、JAR を解凍し、Java 逆コンパイラーで JAR を逆コンパイルします。

この DLL の起源について何も知らなければ、できることはあまりありません。C の逆コンパイラを試してみてください。

于 2012-04-16T09:08:11.747 に答える
0

問題が解決しました。

これが私がそれをした方法です:

ファイルを読む:

JarInputStream input = new JarInputStream(getClass().getResourceAsStream("/myjar.dll"));

エントリごとに新しいファイルを書き込みます。

JarEntry entry;
while ((entry = input.getNextJarEntry()) != null)
{
    // Write file
}
于 2012-04-16T11:41:10.900 に答える
0

マシン コードを読み取って、自分で C に変換し直すことができます。コードをネイティブにコンパイルする全体的なポイント (おそらく唯一のポイント) は、逆コンパイルを困難にすることであるため、簡単ではありません。

于 2012-04-16T09:07:56.833 に答える