首页 > 解决方案 > Smali - how to to edit the url on click in this code

问题描述

Following smali code viewing a url in webview by clicking a review button. But the link is followed by the PackageName in resultant url . So what should I change in the following smali code to go to the link only?

  .class final Lcom/elkurdi/calloutalerter/MainActivity$ReviewButtonListener;
.super Ljava/lang/Object;
.source "MainActivity.java"

# interfaces
.implements Landroid/view/View$OnClickListener;


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/elkurdi/calloutalerter/MainActivity;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x12
    name = "ReviewButtonListener"
.end annotation


# instance fields
.field final synthetic this$0:Lcom/elkurdi/calloutalerter/MainActivity;


# direct methods
.method private constructor <init>(Lcom/elkurdi/calloutalerter/MainActivity;)V
    .locals 0

    .prologue
    .line 83
    iput-object p1, p0, Lcom/elkurdi/calloutalerter/MainActivity$ReviewButtonListener;->this$0:Lcom/elkurdi/calloutalerter/MainActivity;

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

    return-void
.end method

.method synthetic constructor <init>(Lcom/elkurdi/calloutalerter/MainActivity;Lcom/elkurdi/calloutalerter/MainActivity$ReviewButtonListener;)V
    .locals 0

    .prologue
    .line 83
    invoke-direct {p0, p1}, Lcom/elkurdi/calloutalerter/MainActivity$ReviewButtonListener;-><init>(Lcom/elkurdi/calloutalerter/MainActivity;)V

    return-void
.end method


# virtual methods
.method public onClick(Landroid/view/View;)V
    .locals 4
    .param p1, "v"    # Landroid/view/View;

    .prologue
    .line 88
    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "https://www.google.com/"

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 89
    iget-object v3, p0, Lcom/elkurdi/calloutalerter/MainActivity$ReviewButtonListener;->this$0:Lcom/elkurdi/calloutalerter/MainActivity;

    invoke-virtual {v3}, Lcom/elkurdi/calloutalerter/MainActivity;->getApplicationContext()Landroid/content/Context;

    move-result-object v3

   invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

   move-result-object v3

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    .line 88
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

  move-result-object v2

   invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

  move-result-object v1

  .line 90
    .local v1, "uri":Landroid/net/Uri;
    new-instance v0, Landroid/content/Intent;

    const-string v2, "android.intent.action.VIEW"

    invoke-direct {v0, v2, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V

    .line 92
    .local v0, "rateAppIntent":Landroid/content/Intent;
    iget-object v2, p0, Lcom/elkurdi/calloutalerter/MainActivity$ReviewButtonListener;->this$0:Lcom/elkurdi/calloutalerter/MainActivity;

    invoke-virtual {v2}, Lcom/elkurdi/calloutalerter/MainActivity;->getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object v2

    const/4 v3, 0x0

    invoke-virtual {v2, v0, v3}, Landroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;

    move-result-object v2

    .line 93
    invoke-interface {v2}, Ljava/util/List;->size()I

    move-result v2

    if-lez v2, :cond_0

    .line 94
    iget-object v2, p0, Lcom/elkurdi/calloutalerter/MainActivity$ReviewButtonListener;->this$0:Lcom/elkurdi/calloutalerter/MainActivity;

    invoke-virtual {v2, v0}, Lcom/elkurdi/calloutalerter/MainActivity;->startActivity(Landroid/content/Intent;)V

    .line 98
    :goto_0
    return-void

    .line 96
    :cond_0
    const-string v2, "setting"

    const-string v3, "error while asking for review"

    invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    goto :goto_0
.end method

Thank you in advance. and sorry for the long code as Ihave copied all the code in the smali file. I new in this , so please help.

标签: javaandroidurlreverse-engineeringsmali

解决方案


好吧,您看,有几行将包名称附加到 StringBuilder。删除这些行并确保寄存器匹配并且您是金色的。将第一个 move-result-object 的寄存器更改为 v2,然后删除接下来的 4 行。


推荐阅读