Androidリバースso記事(1):soファイル呼び出し

I.はじめに

Android のリバース分析中に、署名アルゴリズムがネイティブ層にある場合がありますが、署名アルゴリズムを呼び出したい場合は、次の 3 つの方法を使用できます。

(1)フック関連機能: フックはリバース エンジニアリングで最も一般的に使用されますが、コンピューター側では仮想マシン全体に対応するアプリをインストールする必要があり、大量のメモリを消費し、場合によってはアプリがクラッシュすることがあります。 、携帯電話側でもアプリをインストールする必要があり、複数のソフトをひっかける必要があるとメモリも大変です。

(2) so ファイルを反転する: IDA を使用して so ファイルを反転するには、暗号化関数を見つけ、アセンブリと C コードを理解する必要があり、作業負荷が非常に高くなります。

(3) so ファイルの呼び出し:逆コンパイル技術を通じて署名関数を見つけ、ネイティブ メソッドを定義するクラスを見つけ、使用する so ファイルを決定し、so ファイルを自分のプロジェクトに移植し、いつでも呼び出して、複数の so ファイルを統合します。ファイル、メモリ占有量が少なく、安定性が高いです。

2. テキスト

このチュートリアルでは、so ファイルを呼び出す方法を紹介します。次の 2 つの方法があります。

1.Androidアプリ

逆コンパイル ツール jadx を使用して署名関数を検索して見つけ、ネイティブ メソッドを定義するクラスの検索を続け、使用される so ファイルを特定し、いつでも呼び出すことができる独自のアプリに so ファイルを移植します。

(1) 対象のアプリを解凍し、lib フォルダーで対象の so ファイルを見つけ、その so ファイルをアプリ プロジェクトの libs ディレクトリにコピーします。

(2) App プロジェクトにシグネチャ クラスを作成します(特定のネイティブメソッド定義は逆コンパイル テクノロジを通じて取得されます)。パッケージ名とクラス名は元の App と一致している必要があり、そうでない場合は呼び出されないことに注意してください。たとえば、libNativeHelper.soを呼び出すクラスは次のように定義されます。

package com.xxxxx.helpers;

public class AppNativeHelper {
    public static native int applyPatch(String str, String str2, String str3);

    public static final native String desCbcDecrypt(String str);

    public static final native String desCbcEncrypt(String str);

    public static final native String getDailySignApi(String str);

    public static final native String getFileMd5(String str);

    public static final native String getMd5(String str);

    public static final native String getServerApi(String str);

    public static native int makePatch(String str, String str2, String str3);

    public static final native String tokenDecrypt(String str);

    public static final native String tokenEncrypt(String str);

    public static native void uninstall(String str, int i, String str2, boolean z);

    static {
        try {
            System.loadLibrary("NativeHelper");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

(3) 必要に応じて関連者を直接呼び出すだけです

String sign = AppNativeHelper.getServerApi("123456");

利点:複数の so ファイルを独自の APP に統合できるため、占有メモリ量が少なく安定性が高く、LAN 内のユーザー向けのシンプルな署名サービスを構築できます。

短所:アプリを開発するには Android Studio の開発経験が必要です。

2.jarパッケージ

(1) JDK 環境で署名クラスを作成し、最後にそれを jar パッケージにパッケージ化します。

(2) so ファイルをシステムの lib または lib64 ファイルの下に置きます。

(3) jar パッケージ内のクラスを呼び出すだけです。

利点: Linux カーネルシステム上で実行でき、他のプログラミング言語も呼び出すことができ、高い汎用性を備えています。

欠点:一部のアプリはARMアーキテクチャの so ファイルのみを提供しており、 x86アーキテクチャの PC では呼び出すことができません。

3. 結論

上記のチュートリアルは、検証メカニズムのない so ファイルを対象としています。一部の so ファイルは、アプリのパッケージ名と署名を検証します。検証が失敗した場合、呼び出されません。時間があるときに、so ファイルの署名検証チュートリアルを作成してください。

このチュートリアルは、あなた自身のニーズと経験に基づいて書かれています。参照と学習のみを目的としています。不備がある場合は修正してください。一緒に議論し、交換するパートナーを歓迎します。

おすすめ

転載: blog.csdn.net/wsfsp_4/article/details/126487412