需要帮助在 apk 文件中禁用 smali 中的方法

Need help disabling a method in smali in an apk file

我需要禁用以下方法,但我不知道该做什么或更改什么。我试过完全删除它,但这只是让应用程序崩溃了。

代码:

.method private c()V
    .registers 4

    new-instance v0, Landroid/app/AlertDialog$Builder;

    iget-object v1, p0, Lcom/blah/blah/er;->c:Lcom/blah/blah/AlphaActivity;

    invoke-direct {v0, v1}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V

    const/4 v1, 0x0

    invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setCancelable(Z)Landroid/app/AlertDialog$Builder;

    const-string v1, "Random text"

    invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;

    const v1, 0x1080027

    invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setIcon(I)Landroid/app/AlertDialog$Builder;

    const-string v1, "Other random text"

    invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;

    const v1, 0x104000a

    new-instance v2, Lcom/blah/blah/es;

    invoke-direct {v2, p0}, Lcom/blah/blah/es;-><init>(Lcom/blah/blah/er;)V

    invoke-virtual {v0, v1, v2}, Landroid/app/AlertDialog$Builder;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;

    invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;

    move-result-object v0

    iput-object v0, p0, Lcom/blah/blah/er;->d:Landroid/app/AlertDialog;

    iget-object v0, p0, Lcom/blah/blah/er;->d:Landroid/app/AlertDialog;

    invoke-virtual {v0}, Landroid/app/AlertDialog;->show()V

    return-void
.end method

如果您想禁用该方法,您不能简单地删除该方法,因为如果其他方法想要调用 non-existing 方法,Android 应该怎么办?这是不可能的,因此应用程序崩溃了。

如果您想禁用该方法,只需删除其中的所有指令即可。幸运的是,显示的方法没有 return 值(您可以在最后一条指令 return-void 上看到,这意味着“退出方法并且 return 没有”。

因此您可以将方法精简到最低限度:

.method private c()V
    return-void
.end method