方法,如果有哪个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
本文介绍如何在smali代码中利用string的replaceFirst()和contains()方法进行字符串操作,通过查找和替换目标关键字。建议在不熟悉java接口调用时,参考smali源码。内容包括smali代码示例以及java字符串接口文档链接。



被折叠的 条评论
为什么被折叠?



