某理財APP多開器的思路(一)

在玩的一款P2P理財APP,每天每個帳號有1.5的紅包,那如果有多個賬戶就得不斷的切換,很是麻煩。

於是想是否可以搞個多開器玩玩?


說做就做.....


搬出ApkTool神器,試了下,解壓,打包沒有防護,頓時信心大增。

但是在安裝運行時,有簽名驗證保護。


經過分析驗證是在.so中進行的,它會將簽名等信息上傳到服務器上進行驗證。


由於現在是在linux上,就沒有截取逆向後的圖片了。

但從下面的二進制數據中也能依稀看到是從java層傳了一個context到jni中,然後jni通過它得到

PackageManager,再得到signatures,最後上傳到服務器驗證的。



如何破?

保護流程搞清楚了,那就只需要獲取到正版的context並把它傳給下面的JNI,就好了.........

也就是用到createPackageContext()這個函數而已。


開始代碼實現:

下面是獲取正版APP Context的smail代碼:

.class public Lcom/example/testpm/PackageUtil;
.super Ljava/lang/Object;
.source "PackageUtil.java"


# direct methods
.method public constructor <init>()V
    .locals 0

    .prologue
    .line 6
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static getWXContext(Landroid/content/Context;)Landroid/content/Context;
    .locals 5
    .param p0, "context"    # Landroid/content/Context;

    .prologue
    .line 8
    const/4 v1, 0x0

    .line 10
    .local v1, "wxcontext":Landroid/content/Context;
    :try_start_0
    invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;

    move-result-object v2

    const-string v3, "com.ncf.firstp2p"

    const/4 v4, 0x3

    invoke-virtual {v2, v3, v4}, Landroid/content/Context;->createPackageContext(Ljava/lang/String;I)Landroid/content/Context;
    :try_end_0
    .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_0 .. :try_end_0} :catch_0

    move-result-object v1

    .line 15
    :goto_0
    return-object v1

    .line 12
    :catch_0
    move-exception v0

    .line 13
    .local v0, "e":Landroid/content/pm/PackageManager$NameNotFoundException;
    invoke-virtual {v0}, Landroid/content/pm/PackageManager$NameNotFoundException;->printStackTrace()V

    goto :goto_0
.end method

然後在調用JNI的地方添加下面兩端替換掉原來的context:

    invoke-static {p0}, Lcom/example/testpm/PackageUtil;->getWXContext(Landroid/content/Context;)Landroid/content/Context;
    move-result-object p0

修改完成後重新打包驗證,一切OK。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章