url = "abc"; Intent intent = Intent.parseUri(url,other_variable);
我想要的是我想要反击的是“网址”而不是“abc”?是否有任何可能的方法来检索传递的变量的名称,而不是使用任何类型的静态代码分析它的值?
没有。
在大多数情况下,Java在编译时不保存局部变量名。它们简称为寄存器:v0 = "abc"
,v1 = new Something()
等。
有时,变量名称会保存为“本地”,但这不是您可以依赖的东西,我相信即使它确实存在也无法检索它。
我说这是在Smali做了大量编码的人。虽然它不是汇编或二进制,但它的级别低于Java,并且表明名称不守恒。例如,以下Java:
String url = "abc";
在Smali会有以下情况:
const-string/jumbo v0, "abc"
没有要检索的变量名称的迹象。
在反编译为Java时可以再次显示它。
String url = "abc";
编译时丢失其变量名称。所以由反编译器给它一个。它通常会选择
String string = "abc";
因为那是最简单,最易读的选择。