Esempio n. 1
0
 public static String run(FTShell shell, boolean debug) throws Exception {
   push(shell.getPath(), GlobalConfig.getProperty("deviceworkdir") + "/" + shell.getName(), false);
   if (debug) MyLogger.getLogger().debug("Running " + shell.getName());
   else MyLogger.getLogger().info("Running " + shell.getName());
   ProcessBuilderWrapper command =
       new ProcessBuilderWrapper(
           new String[] {
             adbpath,
             "shell",
             "sh " + GlobalConfig.getProperty("deviceworkdir") + "/" + shell.getName() + ";exit $?"
           },
           false);
   if (command.getStdOut().contains("FTError"))
     throw new Exception(command.getStdErr() + " " + command.getStdOut());
   return command.getStdOut();
 }
Esempio n. 2
0
 public static boolean hasRootPerms() {
   if (hasRootNative(false)) return true;
   if (rootperms) return true;
   try {
     FTShell shell = new FTShell("checkperms");
     String result = shell.runRoot(false);
     while (result.toLowerCase().contains("segmentation fault")) {
       Thread.sleep(10000);
       result = shell.runRoot(false);
     }
     rootperms = result.contains("uid=0");
     return rootperms;
   } catch (Exception e) {
     return false;
   }
 }
Esempio n. 3
0
 public static String runRoot(FTShell shell, boolean log) throws Exception {
   FTShell s = new FTShell("sysrun");
   s.save();
   push(s.getPath(), GlobalConfig.getProperty("deviceworkdir") + "/sysrun", false);
   s.clean();
   push(shell.getPath(), GlobalConfig.getProperty("deviceworkdir") + "/runscript", false);
   if (log) MyLogger.getLogger().info("Running " + shell.getName() + "  as root thru sysrun");
   else MyLogger.getLogger().debug("Running " + shell.getName() + "  as root thru sysrun");
   ProcessBuilderWrapper command;
   if (rootnative)
     command =
         new ProcessBuilderWrapper(
             new String[] {
               adbpath, "shell", "sh " + GlobalConfig.getProperty("deviceworkdir") + "/sysrun"
             },
             false);
   else
     command =
         new ProcessBuilderWrapper(
             new String[] {
               adbpath,
               "shell",
               "su -c 'sh " + GlobalConfig.getProperty("deviceworkdir") + "/sysrun'"
             },
             false);
   return command.getStdOut();
 }
 protected IStatus run(IProgressMonitor monitor) {
   try {
     AdbUtility.push(bbpath, GlobalConfig.getProperty("deviceworkdir"));
     FTShell shell = new FTShell("busyhelper");
     shell.run(false);
     shell = new FTShell("instbusybox");
     shell.setProperty("BUSYBOXINSTALLPATH", Devices.getCurrent().getBusyBoxInstallPath());
     shell.runRoot();
     MyLogger.getLogger()
         .info(
             "Installed version of busybox : "
                 + Devices.getCurrent().getInstalledBusyboxVersion(true));
     MyLogger.getLogger().info("Finished");
     return Status.OK_STATUS;
   } catch (Exception e) {
     e.printStackTrace();
     MyLogger.getLogger().error(e.getMessage());
     return Status.CANCEL_STATUS;
   }
 }
Esempio n. 5
0
 public static void clearcache() throws Exception {
   MyLogger.getLogger().info("Clearing dalvik cache and rebooting");
   FTShell shell = new FTShell("clearcache");
   shell.runRoot(false);
 }
Esempio n. 6
0
 public static boolean Sysremountrw() throws Exception {
   MyLogger.getLogger().info("Remounting system read-write");
   FTShell shell = new FTShell("remount");
   return !shell.runRoot(false).contains("FTError");
 }
Esempio n. 7
0
 protected IStatus run(IProgressMonitor monitor) {
   try {
     DeviceEntry ent = new DeviceEntry(platform);
     if (!new File(
             ent.getDeviceDir()
                 + File.separator
                 + "blu"
                 + File.separator
                 + "files"
                 + File.separator
                 + "cert.properties")
         .exists()) throw new Exception("cert.properties is missing");
     Properties p = new Properties();
     try {
       p.load(
           new FileInputStream(
               new File(
                   ent.getDeviceDir()
                       + File.separator
                       + "blu"
                       + File.separator
                       + "files"
                       + File.separator
                       + "cert.properties")));
     } catch (Exception ex) {
     }
     String bootwrite = "";
     Enumeration<Object> e = p.keys();
     while (e.hasMoreElements()) {
       String key = (String) e.nextElement();
       if (p.getProperty(key).equals(phonecert)) {
         bootwrite = key;
         break;
       }
     }
     if (bootwrite.length() == 0) throw new Exception("Phone certificate not identified");
     bootwrite = "bootwrite_" + bootwrite + "SL";
     if (!new File(
             ent.getDeviceDir()
                 + File.separator
                 + "blu"
                 + File.separator
                 + "files"
                 + File.separator
                 + bootwrite)
         .exists()) throw new Exception(bootwrite + " is missing");
     if (!new File(
             ent.getDeviceDir()
                 + File.separator
                 + "blu"
                 + File.separator
                 + "files"
                 + File.separator
                 + "fixPart")
         .exists()) throw new Exception("fixPart is missing");
     if (!new File(
             ent.getDeviceDir()
                 + File.separator
                 + "blu"
                 + File.separator
                 + "files"
                 + File.separator
                 + "mapper_2.6.29.ko")
         .exists()) throw new Exception("mapper_2.6.29.ko is missing");
     if (platform.equals("X10"))
       if (!new File(
               ent.getDeviceDir()
                   + File.separator
                   + "blu"
                   + File.separator
                   + "files"
                   + File.separator
                   + "mapper_2.6.29-00054-g5f01537.ko")
           .exists()) throw new Exception("mapper_2.6.29-00054-g5f01537.ko is missing");
     MyLogger.getLogger().info("Waiting for device to reboot");
     Devices.waitForReboot(false);
     if (!Devices.getCurrent().getKernelVersion().equals("2.6.29-00054-g5f01537")
         && !Devices.getCurrent().getKernelVersion().equals("2.6.29"))
       throw new Exception("Kernel does not match a compatible one");
     if (!Devices.getCurrent().hasRoot()) throw new Exception("Device must be rooted first");
     String mapper = "mapper_" + Devices.getCurrent().getKernelVersion() + ".ko";
     AdbUtility.push(
         ent.getDeviceDir()
             + File.separator
             + "blu"
             + File.separator
             + "files"
             + File.separator
             + "fixPart",
         GlobalConfig.getProperty("deviceworkdir"));
     FTShell fixpart =
         new FTShell(
             new File(
                 ent.getDeviceDir()
                     + File.separator
                     + "blu"
                     + File.separator
                     + "shells"
                     + File.separator
                     + "runfixPart"));
     String output = fixpart.runRoot();
     if (!output.contains("success")) throw new Exception("Error applying fixpart: " + output);
     MyLogger.getLogger().info("Successfully applied fixPart. Rebooting");
     Devices.getCurrent().reboot();
     Devices.waitForReboot(false);
     AdbUtility.push(
         ent.getDeviceDir()
             + File.separator
             + "blu"
             + File.separator
             + "files"
             + File.separator
             + mapper,
         GlobalConfig.getProperty("deviceworkdir"));
     AdbUtility.push(
         ent.getDeviceDir()
             + File.separator
             + "blu"
             + File.separator
             + "files"
             + File.separator
             + bootwrite,
         GlobalConfig.getProperty("deviceworkdir"));
     FTShell runbootwrite =
         new FTShell(
             new File(
                 ent.getDeviceDir()
                     + File.separator
                     + "blu"
                     + File.separator
                     + "shells"
                     + File.separator
                     + "runbootwrite"));
     runbootwrite.setProperty("KVER", Devices.getCurrent().getKernelVersion());
     runbootwrite.setProperty("BOOTWRITEBIN", bootwrite);
     output = runbootwrite.runRoot();
     if (!output.contains("success")) throw new Exception("Error applying fixpart: " + output);
     MyLogger.getLogger()
         .info("Successfully applied bootwrite. Bootloader should be unlocked. Rebooting");
     Devices.getCurrent().reboot();
     return Status.OK_STATUS;
   } catch (Exception e) {
     e.printStackTrace();
     MyLogger.getLogger().error(e.getMessage());
     return Status.CANCEL_STATUS;
   }
 }