当前位置:编程学习 > JAVA >>

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");
然后读写文件。判断权限。 --------------------编程问答--------------------
引用 1 楼 huxiweng 的回复:
先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了label嘛。跳来跳去的,和汇编有点像

感谢您的回复,您能把这段翻译过来吗,我的确没有看懂。。。。。 --------------------编程问答--------------------
引用 2 楼 rui888 的回复:
好像是执行命令Runtime.getRuntime().exec("su\n");
然后读写文件。判断权限。

感谢您的回复。是的,逻辑是这样的,但是您会翻译它吗,不胜感激! --------------------编程问答--------------------
引用 3 楼 licongf18 的回复:
Quote: 引用 1 楼 huxiweng 的回复:

先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了label嘛。跳来跳去的,和汇编有点像

感谢您的回复,您能把这段翻译过来吗,我的确没有看懂。。。。。

要怎么翻译啊?就一步一步看循环啊,大体上意思是要获取root权限 --------------------编程问答--------------------
引用 5 楼 huxiweng 的回复:
Quote: 引用 3 楼 licongf18 的回复:

Quote: 引用 1 楼 huxiweng 的回复:

先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了label嘛。跳来跳去的,和汇编有点像

感谢您的回复,您能把这段翻译过来吗,我的确没有看懂。。。。。

要怎么翻译啊?就一步一步看循环啊,大体上意思是要获取root权限

就是写成正常的java代码.......谢过先 --------------------编程问答--------------------
引用 6 楼 licongf18 的回复:
Quote: 引用 5 楼 huxiweng 的回复:

Quote: 引用 3 楼 licongf18 的回复:

Quote: 引用 1 楼 huxiweng 的回复:

先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了label嘛。跳来跳去的,和汇编有点像

感谢您的回复,您能把这段翻译过来吗,我的确没有看懂。。。。。

要怎么翻译啊?就一步一步看循环啊,大体上意思是要获取root权限

就是写成正常的java代码.......谢过先

这就是正常的代码了 --------------------编程问答--------------------
引用 7 楼 huxiweng 的回复:
Quote: 引用 6 楼 licongf18 的回复:

Quote: 引用 5 楼 huxiweng 的回复:

Quote: 引用 3 楼 licongf18 的回复:

Quote: 引用 1 楼 huxiweng 的回复:

先说一下反编译出来的代码不是完全还原原始代码的!
其次稍微看了下,感觉还可以理解啊。不就是用了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相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,