smali如何在此代码中设置一些永久文本

smali如何在此代码中设置一些永久文本,smali,Smali,下面的smali代码从字符串中获取url,然后我们可以将该链接共享到其他应用程序。但我想发送一些永久性文本,而不是url或从字符串返回的文本。例如,我想共享“hello,您好”,而不是从字符串中提取的临时文本。那么,为了实现这一点,我应该在下面的smali代码中修改什么呢 .line 512 const-string v2, "android.intent.action.SEND" invoke-virtual {v1, v2}, Landroid/content/Intent;->se

下面的smali代码从字符串中获取url,然后我们可以将该链接共享到其他应用程序。但我想发送一些永久性文本,而不是url或从字符串返回的文本。例如,我想共享“hello,您好”,而不是从字符串中提取的临时文本。那么,为了实现这一点,我应该在下面的smali代码中修改什么呢

.line 512
const-string v2, "android.intent.action.SEND"

invoke-virtual {v1, v2}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent;

.line 513
const-string v2, "android.intent.extra.SUBJECT"

iget-object v3, p0, Lcom/myapp/c/b/q;->t:Lcom/myapp/a/b/c;

iget-object v3, v3, Lcom/myapp/a/b/c;->d:Ljava/lang/String;

invoke-virtual {v1, v2, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

.line 514
const-string v2, "android.intent.extra.TEXT"

new-instance v3, Ljava/lang/StringBuilder;

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

iget-object v4, p0, Lcom/myapp/c/b/q;->t:Lcom/myapp/a/b/c;

iget-object v4, v4, Lcom/myapp/a/b/c;->d:Ljava/lang/String;

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

move-result-object v3

const-string v4, "\n\n"

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

move-result-object v3

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

move-result-object v0

const-string v3, "\n\n"

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

move-result-object v0

iget-object v3, v6, Lcom/myapp/a/a/n;->c:Ljava/lang/String;

invoke-static {v3}, Landroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/Spanned;

move-result-object v3

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

move-result-object v0

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

move-result-object v0

invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

.line 515
const-string v0, "text/plain"

invoke-virtual {v1, v0}, Landroid/content/Intent;->setType(Ljava/lang/String;)Landroid/content/Intent;

.line 516
const v0, 0x7f020126

.line 517
invoke-virtual {p0, v0}, Lcom/myapp/c/b/q;->getString(I)Ljava/lang/String;

move-result-object v0

.line 518
invoke-static {v1, v0}, Landroid/content/Intent;->createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent;

move-result-object v0

invoke-virtual {p0, v0}, Lcom/myapp/c/b/q;->startActivity(Landroid/content/Intent;)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
.catch Ljava/lang/Error; {:try_start_0 .. :try_end_0} :catch_1

goto :goto_0

.line 519
:catch_0
move-exception v0

invoke-static {v0}, Lcom/myapp/d/e;->a(Ljava/lang/Exception;)V

goto :goto_0

.line 520
:catch_1
move-exception v0
。第512行
常量字符串v2,“android.intent.action.SEND”
调用虚拟{v1,v2},Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent;
.第513行
常量字符串v2,“android.intent.extra.SUBJECT”
iget对象v3,p0,Lcom/myapp/c/b/q;->t:Lcom/myapp/a/b/c;
iget对象v3、v3,Lcom/myapp/a/b/c;->d:Ljava/lang/String;
调用虚拟{v1,v2,v3},Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
.第514行
常量字符串v2,“android.intent.extra.TEXT”
新实例v3,Ljava/lang/StringBuilder;
调用直接{v3},Ljava/lang/StringBuilder;->()V
iget对象v4,p0,Lcom/myapp/c/b/q;->t:Lcom/myapp/a/b/c;
iget对象v4,v4,Lcom/myapp/a/b/c;->d:Ljava/lang/String;
调用虚拟{v3,v4},Ljava/lang/StringBuilder;->追加(Ljava/lang/String;)Ljava/lang/StringBuilder;
移动结果对象v3
常量字符串v4,“\n\n”
调用虚拟{v3,v4},Ljava/lang/StringBuilder;->追加(Ljava/lang/String;)Ljava/lang/StringBuilder;
移动结果对象v3
调用虚拟{v3,v0},Ljava/lang/StringBuilder;->追加(Ljava/lang/String;)Ljava/lang/StringBuilder;
移动结果对象v0
常量字符串v3,“\n\n”
调用虚拟{v0,v3},Ljava/lang/StringBuilder;->追加(Ljava/lang/String;)Ljava/lang/StringBuilder;
移动结果对象v0
iget对象v3、v6,Lcom/myapp/a/a/n;->c:Ljava/lang/String;
调用静态{v3},Landroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/span;
移动结果对象v3
调用虚拟{v0,v3},Ljava/lang/StringBuilder;->追加(Ljava/lang/Object;)Ljava/lang/StringBuilder;
移动结果对象v0
调用虚拟{v0},Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
移动结果对象v0
调用虚拟{v1,v2,v0},Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
.第515行
常量字符串v0,“文本/普通”
调用虚拟{v1,v0},Landroid/content/Intent;->setType(Ljava/lang/String;)Landroid/content/Intent;
.第516行
常数v0,0x7f020126
.第517行
调用虚拟{p0,v0},Lcom/myapp/c/b/q;->getString(I)Ljava/lang/String;
移动结果对象v0
.第518行
调用静态{v1,v0},Landroid/content/Intent;->createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent;
移动结果对象v0
调用虚拟{p0,v0},Lcom/myapp/c/b/q;->startActivity(Landroid/content/Intent;)V
:重试\u结束\u 0
.catch Ljava/lang/Exception;{:try_start_0..:try_end_0}:catch_0
.catch Ljava/lang/Error;{:try_start_0..:try_end_0}:catch_1
后藤:后藤0
.第519行
:第0条
移动异常v0
调用静态{v0},Lcom/myapp/d/e;->a(Ljava/lang/Exception;)V
后藤:后藤0
.第520行
:第1条
移动异常v0

您代码中的某些类被混淆了,但稍加猜测,我们可以发现连接html文本的部分如下所示:

iget-object v3, v6, Lcom/myapp/a/a/n;->c:Ljava/lang/String;

invoke-static {v3}, Landroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/Spanned;

move-result-object v3

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

move-result-object v0
如果我没有错的话,在v0中有一个字符串将与其他应用程序共享:

invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

你最好的办法是编写一些类似于你在java中所想要的东西,然后编译并反汇编这些东西,并将其作为你想要做的事情的基础。此外,你问什么还不是很清楚:)应用程序中有一个“共享”按钮。当我们单击它时,它会打开其他应用程序,我们可以在其中共享网站url。该应用程序从互联网获取url,当我们单击“共享”时,它将加载该链接,我们可以共享它。但我想问的是,我想分享一些永久性的文本,而不是分享一个抓取的链接。例如,应用程序获取此链接(www.Example.com/abcd),当我们共享时,此链接将被共享。相反,我想一直分享一些文字。每当我单击“共享”并打开其他要共享的应用程序(例如whatsapp)时,我应该能够共享此tex>>“这是应用程序链接”我询问如何在常量字符串v4、“\n\n”字段中放置一些永久值,并禁用从internet获取url。就像这个常量字符串v4,“这是应用程序链接\n\n下载它。”是的,常量字符串是将字符串文本加载到寄存器中的指令。请查看此问题。如果我帮助您,请接受我的回答。顺便说一下,有人已经回答了另一个问题。