【问题标题】:How to return a static result in smali function如何在 smali 函数中返回静态结果
【发布时间】:2014-02-19 19:07:02
【问题描述】:
.method public c()Ljava/lang/String;
.locals 3

const/4 v1, 0x0

const-string v0, "wifi"

invoke-virtual {p0, v0}, Lcom/genwen/looltv/start/Appstart;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

move-result-object v0

check-cast v0, Landroid/net/wifi/WifiManager;

if-nez v0, :cond_1

move-object v0, v1

:goto_0
if-eqz v0, :cond_2

invoke-virtual {v0}, Landroid/net/wifi/WifiInfo;->getMacAddress()Ljava/lang/String;

move-result-object v0

if-eqz v0, :cond_0

const-string v1, ":"

const-string v2, ""

invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

move-result-object v0

new-instance v1, Ljava/lang/StringBuilder;

const-string v2, "8c0f"

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

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

move-result-object v0

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v0

:cond_0
:goto_1
return-object v0

:cond_1
invoke-virtual {v0}, Landroid/net/wifi/WifiManager;->getConnectionInfo()Landroid/net/wifi/WifiInfo;

move-result-object v0

goto :goto_0

:cond_2
move-object v0, v1

goto :goto_1
.end method

这是一个简单的 smali 函数,它在从 mac 地址中剥离 : 之后返回以 '8c0f' 开头的设备的 mac 地址。

我希望它返回像“8c0f0f0f0f0f0f0f”这样的静态 MAC 地址,而不是真正的 MAC 地址。我该怎么做?

【问题讨论】:

标签: java android dalvik decompiling smali


【解决方案1】:

return-object v0 之前执行以下操作

const-string v0, "8c0f0f0f0f0f0f0f"

这样你的完整代码就会被读取

const-string v0, "8c0f0f0f0f0f0f0f"
return-object v0

如果需要,您还可以注释掉使用StringBuilder 的其他代码。

【讨论】:

    【解决方案2】:

    这里我使用apktool将java转换为smali。

    Java 代码:

    private static final String TAG = "Loop";
    
    public static String getTag()
    {
        return TAG;
    }
    

    小码:

    # static fields
    .field private static final TAG:Ljava/lang/String; = "Loop"
    
    .method public static getTag()Ljava/lang/String;
        .locals 1
    
        .prologue
      .line 35
        const-string v0, "Loop"
    
      .line 38
        return-object v0
    .end method
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 2017-10-29
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多