リバースクロールの場合、PythonはどのようにしてJAR暗号化ロジックを正しく呼び出しますか?

1はじめに

アプリのクロールの過程で、不明なパラメーターが発生した場合、アプリを逆クラックし、Pythonを使用してパラメーター生成ロジックを実装する必要があります。

一部のアプリパラメータの生成ロジックは、複数のJARファイルに書き込まれている可能性があります。現時点では、PythonでJARを実行するだけで済みます。

この記事では、PythonがJARのメソッドを呼び出す方法について説明します

2.JARをマージします

Androidアプリを例にとると、暗号化パラメーター生成ロジックが複数のJARにあると仮定すると、最初にすべてのJARファイルを1つのJARファイルにマージする必要があります。

PS:AARファイルの場合、最初に解凍ソフトウェアを使用して解凍してから、JARをマージできます。

JARのマージは2つのステップに分かれています。

JARを解凍します

すべてのソースコードをマージする

2-1JARを解凍します

JDKをインストールした後、jar -xvfコマンドを使用して単一のJARを解凍します。これにより、パッケージ名に従って同じディレクトリにJAVAコンパイル済みクラスファイルが生成されます。

#JARを1つずつ解凍します

#クラスファイルをローカルで生成する

jar -xvf a.jar

jar -xvf b.jar

jar -xvf c.jar

2-2すべてのソースコードをマージする

jar -cvfMコマンドを使用して、すべてのローカルクラスファイルから新しいJARを生成します。

#現在のディレクトリ内のすべてのソースコードを1つのJARに結合します

#その中で:output.jarは新しいJARを表します

jar -cvfMoutput.jar。

3.PythonがJARを呼び出す

まず、依存関係パッケージjpypeをインストールします。

#依存関係をインストールする

pip3インストールJPype1

JARの暗号化ロジック実装コードは次のとおりであると想定します。

パッケージcom.xingag.common;

パブリッククラスEncryHelper {

public String crypto(String content){

//暗号化ロジック

}

}

Pythonを使用してJARのメソッドを呼び出すには、次の3つのステップがあります。

JVMを起動します

JAVAオブジェクトをインスタンス化し、対応するメソッドを呼び出します

JVMをシャットダウンします

3-1JVMを起動します

jpypeをインポートする

#JARローカルパス

jar_path = os.path.join(os.path.abspath( '。')、 '。/ output.jar')

#jvmを開始します

jpype.startJVM(jpype.getDefaultJVMPath()、 "-ea"、 "-Djava.class.path =%s"%(jar_path))

3-2JAVAオブジェクトをインスタンス化してメソッドを呼び出す

呼び出されたメソッドのパッケージ名に従って、jpyteのJClass()メソッドを使用してクラスJAVAオブジェクトをインスタンス化し、最後にJAVAオブジェクトのメソッドを呼び出します。

Javaはインスタンスメソッドであるため、最初にオブジェクトをインスタンス化してからメソッドを呼び出す必要があることに注意してください。静的メソッドの場合は、メソッドを直接呼び出すことができます。

#パッケージ名を使用して、JAVAオブジェクトをインスタンス化します

EncryClass = jpype.JClass( "com.xingag.common.EncryHelper")

encryClass = EncryClass()

#JAVAで暗号化メソッドを呼び出す

content_encry = encryClass.encrypt( "xag")

print(content_encry)

3-3JVMをシャットダウンします

JVMをアクティブにシャットダウンするか、Pythonプログラムの実行後に自動的にシャットダウンしてリソースを解放するかを選択できます

jpypeをインポートする

#jvmを閉じる

jpype.shutdownJVM()

4.最後に

PythonはJARのメソッドを直接呼び出すため、ホイールを再利用してクローラーの作業負荷を軽減できます。

おすすめ

転載: blog.csdn.net/weixin_43881394/article/details/112242281