需要帮助在 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
我需要禁用以下方法,但我不知道该做什么或更改什么。我试过完全删除它,但这只是让应用程序崩溃了。
代码:
.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