Android反编译代码求解读
小弟按照网上的经验翻译代码,但是这个函数逆天了,实在看不懂,求助public static boolean init()
{
while (true)
{
try
{
if (os != null)
break label295;
//SLF.v("ProcessUtil init");
bool = false;
try
{
suProcess = Runtime.getRuntime().exec("su\n");
os = new DataOutputStream(suProcess.getOutputStream());
is = new BufferedReader(new InputStreamReader(suProcess.getInputStream()));
String str;
long l;
if ((os != null) && (is != null))
{
os.writeBytes("id\n");
os.flush();
str = null;
l = System.currentTimeMillis();
if (!is.ready())
continue;
if (is.ready())
str = is.readLine();
i = 0;
if (str != null)
continue;
bool = false;
i = 1;
//SLF.d("Can't get Root Access or Root Access denied by user");
if (i != 0)
{
os.writeBytes("exit\n");
os.flush();
os = null;
}
}
return bool;
Thread.sleep(100L);
if (System.currentTimeMillis() - l <= 10000L)
continue;
continue;
if (str.contains("uid=0"))
{
bool = true;
//SLF.d("Root Access Granted");
continue;
}
}
catch (Exception localException)
{
os = null;
bool = false;
//SLF.d("Root access rejected [" + localException.getClass().getName() + "] : " + localException.getMessage());
continue;
}
}
finally
{
}
boolean bool = false;
int i = 1;
SLF.d("Root Access Rejected: " + is.readLine());
continue;
label295: bool = true;
}
} java 反编译 解读 代码 --------------------编程问答-------------------- 先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了label嘛。跳来跳去的,和汇编有点像 --------------------编程问答-------------------- 好像是执行命令Runtime.getRuntime().exec("su\n");
然后读写文件。判断权限。 --------------------编程问答--------------------
感谢您的回复,您能把这段翻译过来吗,我的确没有看懂。。。。。 --------------------编程问答--------------------
感谢您的回复。是的,逻辑是这样的,但是您会翻译它吗,不胜感激! --------------------编程问答--------------------
要怎么翻译啊?就一步一步看循环啊,大体上意思是要获取root权限 --------------------编程问答--------------------
先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了label嘛。跳来跳去的,和汇编有点像
感谢您的回复,您能把这段翻译过来吗,我的确没有看懂。。。。。
要怎么翻译啊?就一步一步看循环啊,大体上意思是要获取root权限
就是写成正常的java代码.......谢过先 --------------------编程问答--------------------
先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了label嘛。跳来跳去的,和汇编有点像
感谢您的回复,您能把这段翻译过来吗,我的确没有看懂。。。。。
要怎么翻译啊?就一步一步看循环啊,大体上意思是要获取root权限
就是写成正常的java代码.......谢过先
这就是正常的代码了 --------------------编程问答--------------------
先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了label嘛。跳来跳去的,和汇编有点像
感谢您的回复,您能把这段翻译过来吗,我的确没有看懂。。。。。
要怎么翻译啊?就一步一步看循环啊,大体上意思是要获取root权限
就是写成正常的java代码.......谢过先
这就是正常的代码了
这可不是正常的哦,编译报错.... --------------------编程问答-------------------- java语法不支持非循环头的标签符 label295
要去掉它.请你参考下面的代码
public static boolean init()
{
boolean bool = false; // add by w_sale
while (true)
{
try //#1
{
if (os != null) {
// break label295; //屏蔽label295
bool = true;
break ;
}
//SLF.v("ProcessUtil init");
bool = false;
try //#2
{
suProcess = Runtime.getRuntime().exec("su\n");
os = new DataOutputStream(suProcess.getOutputStream());
is = new BufferedReader(new putStreamReadersuProcess.getInputStream()));
String str;
long l;
if ((os != null) && (is != null))
{
os.writeBytes("id\n");
os.flush();
str = null;
l = System.currentTimeMillis();
if (!is.ready())
continue;
if (is.ready())
str = is.readLine();
i = 0;
if (str != null)
continue;
bool = false;
i = 1;
//SLF.d("Can't get Root Access or Root Access denied by user");
if (i != 0)
{
os.writeBytes("exit\n");
os.flush();
os = null;
}
}
return bool;
Thread.sleep(100L);
if (System.currentTimeMillis() - l <= 10000L)
continue;
continue;
if (str.contains("uid=0"))
{
bool = true;
//SLF.d("Root Access Granted");
continue;
}
} // end try #2
catch (Exception localException)
{
os = null;
bool = false;
//SLF.d("Root access rejected [" + localException.getClass().getName() + "] : " + localException.getMessage());
continue;
}
} // end try #1
finally
{
}
// boolean bool = false;
bool = false;
int i = 1;
SLF.d("Root Access Rejected: " + is.readLine());
continue;
// label295: bool = true;
} // end while (true)
renturn bool ; // add by w_sale
}
补充:Java , Java相关