smali:字符串的操作,目标关键字的查找和替换

本文介绍如何在smali代码中利用string的replaceFirst()和contains()方法进行字符串操作,通过查找和替换目标关键字。建议在不熟悉java接口调用时,参考smali源码。内容包括smali代码示例以及java字符串接口文档链接。
AI助手已提取文章相关产品:

方法,如果有哪个java的接口调用方式不会写,就在smali源码里全局找,然后模仿着用就还可以了。
代码片段:


    .line 445
    :cond_8
    #add log,hk==== 
    const-string v3, "RNCWebViewManager.setSource(): enter cond_8, inject---"

    const-string v4, "files"

   # const-string v5, "hhhhhhfkfkffkkf/hacked/files"
   # invoke-virtual {v2, v4, v5}, Ljava/lang/String;->replaceFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
   # move-result-object v2

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

    invoke-virtual {v0, v4}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
    move-result v4

    #if contain files/gamelobby, then do nothing
    if-nez v4, :cond_11

    #if not contain files/gamelobby, then do replaceFirst files as files/gamelobby
    if-eqz v4, :cond_10 

    return-void

    :cond_9
    const-string p2, "about:blank"
    .line 449
    invoke-virtual {p1, p2}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V
    return-void

    :cond_10
    const-string v4, "files"
    const-string v5, "files/hahahaha"
    invoke-virtual {v0, v4, v5}, Ljava/lang/String;->replaceFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    move-result-object v0

    const-string v3, "RNCWebViewManager.setSource(): eq, cond_10, inject---"
    invoke-static {v3,v0} ,Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
    invoke-virtual {p1, v0, v1}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;Ljava/util/Map;)V
    return-void

    :cond_11
    const-string v3, "RNCWebViewManager.setSource(): neq, cond_11, inject---"
    invoke-static {v3,v0} ,Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
    invoke-virtual {p1, v0, v1}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;Ljava/util/Map;)V

    return-void
.end method

思路就是,通过smali来使用string的各个操作,主要是两个函数:replaceFirst() 和contains()
java的实现:

    String test = "Goof 23N, 45, 88, GOOF 33*, 12-24";
    String value = test.replaceFirst("Goof", "");

直接对应翻译成smali:
xxx参考上面的代码片段。

如果包含关键字(串)就进行替换。结果如期望!!!!
https://stackoverflow.com/questions/21015379/how-to-cut-a-keyword-in-a-string-java

string 接口文档:
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
发现contains()可以用。

https://stackoverflow.com/questions/13124874/smali-string-constants?answertab=votes

您可能感兴趣的与本文相关内容

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值