How to get"メソッドの署名からjarファイルとは何ですか?
-
13-09-2019 - |
質問
私は第三者のjarファイルに付属のjavadocsでないためのAPIです。があるので、リバースエンジニアリングのjarファイルの取得を完全に上場授業方法について教えてほしい。
他のヒント
、あなたが探しているものの多くを得るためにEclipseを使用することができます。
私は.classファイルをコンパイルします JadClipseプラグインを取得推薦しますその場で、あなたがIDEのクラスを参照するよう、あなたに実際のJavaコードを示します。
、あなただけのプロジェクトのクラスパスに追加し、ツリービューおよび/またはコンテンツの支援を使用して、それを探索することができます。
私は似て行うことができます他の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の