mentmanager/DocumentManager;)V //构造 DocumentManager invoke-virtual {v0, v1, v2}, Lcn/wps/moffice/writer/view/beans/g;->a(ILandroid/content/DialogInterface$OnCli ckListener;)Lcn/wps/moffice/writer/view/beans/g; //设置按钮监听器 move-result-object v0 const v1, 0x7f060165 new-instance v2, Lcn/wps/moffice/documentmanager/DocumentManager$7; invoke-direct {v2, p0}, Lcn/wps/moffice/documentmanager/DocumentManager$7;-><init>(Lcn/wps/moffice/docu mentmanager/DocumentManager;)V //DocumentManager 对象 invoke-virtual {v0, v1, v2}, Lcn/wps/moffice/writer/view/beans/g;->b(ILandroid/content/DialogInterface$OnCli ckListener;)Lcn/wps/moffice/writer/view/beans/g; //设置按钮监听器 move-result-object v0 iput-object v0, p0, Lcn/wps/moffice/documentmanager/DocumentManager;->cPj:Lcn/wps/moffice/writer/vi ew/beans/g; iget-object v0, p0, Lcn/wps/moffice/documentmanager/DocumentManager;->cPj:Lcn/wps/moffice/writer/vi ew/beans/g; const/4 v1, 0x0 invoke-virtual {v0, v1}, Lcn/wps/moffice/writer/view/beans/g;->setCancelable(Z)V //设置是否可取消 iget-object v0, p0, Lcn/wps/moffice/documentmanager/DocumentManager;->cPj:Lcn/wps/moffice/writer/vi ew/beans/g; invoke-virtual {v0}, Lcn/wps/moffice/writer/view/beans/g;->show()V //显示 g,也就是过期对话框 :cond_1 return-void .end method 这个 e 方法看得出来是重要的地方,我做了详细的注释,功能就是首先 g 是否已经显示, 如果没显示就初始化并显示,我们爆破就简单了,直接 if-eqz v0, :cond_0 改成 if-eqz v0, :cond_1。保存文件并退出,拖动不整个文件夹到 ApkTool_Gui 第二个编辑框重建 APK。 完成后拿到 Android 设备上测试。会发现程序弹出个 Toast 提示软件过期,然后就退出了, 看来还有地方需要处理。按照上面的方法如法炮制搜索 0x7f060166(软件过期字符串的 ID),发现有两处调用,而且两处调用都是类似的代码: .method public final a(Lcn/wps/moffice/documentmanager/DocumentManager$a;Ljava/lang/String;)V .locals 4 invoke-static {}, Lcn/wps/moffice/OfficeApp;->zc()Lcn/wps/moffice/OfficeApp; |