質問

私は第三者のjarファイルに付属のjavadocsでないためのAPIです。があるので、リバースエンジニアリングのjarファイルの取得を完全に上場授業方法について教えてほしい。

役に立ちましたか?

解決

jar tf の内容をリスト表示します君は。 javap にあなたがより多くの詳細を確認することができますクラス(ツールガイドを参照してください)。

あなたはジャーmypkg.HelloWorldでクラスという名前myjar.jarを持っているならば、

のようにそれを実行しますたとえば
javap -classpath myjar.jar mypkg.HelloWorld

しかし、あなたはこれらの未公開のAPIを使用するにしてもよろしいですか?これは通常、本当に悪い考えです。

他のヒント

スコットが言ったように、

、あなたが探しているものの多くを得るためにEclipseを使用することができます。

私は.classファイルをコンパイルします JadClipseプラグインを取得推薦しますその場で、あなたがIDEのクラスを参照するよう、あなたに実際のJavaコードを示します。

Eclipseを使用している場合は、

、あなただけのプロジェクトのクラスパスに追加し、ツリービューおよび/またはコンテンツの支援を使用して、それを探索することができます。

私は似て行うことができます他のIDEを前提と思います。

ビューのコマンドラインの観点から、あなたはそれ(ジャーXFのfoo.jarを)をunjarしたり、すべてのファイルに対して使用してjavapます。

あなたはすべてのメソッドのシグネチャを読み出すために WALA のライブラリを使用することができます。ただし最初のJava用のスタブ・コードをロードする必要があります。次のプログラムは、すべての署名を読み出す必要があります:

import com.ibm.wala.ipa.cha.ClassHierarchy; 
import com.ibm.wala.ipa.cha.IClassHierarchy; 
import com.ibm.wala.classLoader.IClass; 
import com.ibm.wala.classLoader.IMethod; 
import com.ibm.wala.ipa.callgraph.AnalysisOptions; 
import com.ibm.wala.ipa.callgraph.AnalysisScope; 
import com.ibm.wala.types.ClassLoaderReference; 
import java.util.jar.JarFile; 
import java.io.IOException; 
import com.ibm.wala.ipa.cha.ClassHierarchyException; 

public class methods { 
    public static void main(String[] args) throws IOException, ClassHierarchyException { 
        AnalysisScope scope = AnalysisScope.createJavaAnalysisScope(); 
        scope.addToScope(ClassLoaderReference.Primordial, new JarFile("jSDG-stubs-jre1.5.jar")); 
        scope.addToScope(ClassLoaderReference.Application, new JarFile("myProgram.jar")); 
        IClassHierarchy cha = ClassHierarchy.make(scope); 

        for (IClass cl : cha) { 
            if (cl.getClassLoader().getReference().equals(ClassLoaderReference.Application)) { 
                for (IMethod m : cl.getAllMethods()) { 
                    String ac = ""; 
                    if (m.isAbstract()) ac = ac + "abstract "; 
                    if (m.isClinit()) ac = ac + "clinit "; 
                    if (m.isFinal()) ac = ac + "final ";  
                    if (m.isInit()) ac = ac + "init ";  
                    if (m.isNative()) ac = ac + "native ";  
                    if (m.isPrivate()) ac = ac + "private "; 
                    if (m.isProtected()) ac = ac + "protected ";  
                    if (m.isPublic()) ac = ac + "public ";  
                    if (m.isSynchronized()) ac = ac + "synchronized ";  
                    System.out.println(ac + m.getSignature()); 
                } 
            } 
        } 
    } 
} 
あなたはから適応WALA-バージョンを使用している場合は、

はここにそれがないのDalvik(例えばAndroidアプリ)同様ます。

  • Eclipseのような仕上がり

  • A Java Decompiler ると言っても良いと思い、教室に戻あsemblenceのソースコードの研究をすることができ、授業の方法、その署名だけど)と呼ばれるもので、もうつの有効な値の一部の引数(例えばない、この引数にnullまたはんのトリガー、NullPointerExceptionがスローすぐ)。でもライブをunjar、jarにdecompilerすべてのクラスファイルです。これは本質的には何を食していたヘテキストと非正規滞在。

  • 最後に、もちろん、 "リアルプログラマー" を読むには バイトコード 直接必要decompiler.

迅速に支援を知る方法は通常のクラスはabstractクラス)なのです。

新classname().ctrl+spaceのための方法上場eclipse.

を使用するEclipseの>パッケージ・エクスプローラークラスとthier階層を表示します。

コンテンツアシスト(オートコンプリート機能(CTRL +スペース))良い助けにもあるが、未発表のAPIを使用してお勧めwouldntの

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top