R_LEGEND 发表于 2021-8-31 12:05

『新人安卓逆向Smali询问』添加对话框求助

我首先是自己加了个类,然后写了对话框的函数:
.method public static Maindialog(Landroid/app/Activity;)V
    .registers 3

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

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

    const-string p0, "标题"

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

    const-string p0, "正文"

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

    const-string p0, "按钮"

    const/4 v1, 0x0

    invoke-virtual {v0, p0, v1}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;

    const-string p0, "true"

    const-string v1, "true"

    invoke-virtual {p0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result p0

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

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

    return-void
.end method
这个我在任意一个activity类的oncreate函数下键入    invoke-static/range {p0 .. p0}, LRL/Dialog1_Main;->Maindialog(Landroid/app/Activity;)V都是能正常显示的,可当我在onclick函数(点击按钮后触发)内加入本句代码,转成java后也看起来没问题,可当运行APP时不但进不去软件,而且是卡在了启动屏一秒就闪退了。
在onclick函数内调用了另外的函数,在另外的函数内调用那句代码,还是会闪退,百思不得其解。软件内也有弹出内置对话框的代码,我几乎是全盘照抄的,为什么会不能运行呢?是因为invoke-static大括号内的p0不是this?搞不明白!!
求各位大佬指导并讲解,我稍后会在楼中提供详细信息。

Tsihen 发表于 2021-10-9 22:34

如果是 `SetOnClickListener` 设置的点击监听,那么 `p0` 是 `Button`

如果是通过 XML 设置的(`OnClick="SomeMethod"`),那么不应该出现问题
页: [1]
查看完整版本: 『新人安卓逆向Smali询问』添加对话框求助