Package modules :: Package packages :: Module jar
[hide private]
[frames] | no frames]

Source Code for Module modules.packages.jar

 1  # Copyright (C) 2010-2014 Cuckoo Foundation. 
 2  # This file is part of Cuckoo Sandbox - http://www.cuckoosandbox.org 
 3  # See the file 'docs/LICENSE' for copying permission. 
 4   
 5  import os 
 6   
 7  from lib.common.abstracts import Package 
 8  from lib.api.process import Process 
 9  from lib.common.exceptions import CuckooPackageError 
10   
11 -class Jar(Package):
12 """Java analysis package.""" 13
14 - def get_path(self):
15 java = os.path.join(os.getenv("ProgramFiles"), "Java") 16 paths = [ 17 os.path.join(java, "jre7", "bin", "java.exe"), 18 os.path.join(java, "jre6", "bin", "java.exe"), 19 ] 20 21 for path in paths: 22 if os.path.exists(path): 23 return path 24 25 return None
26
27 - def start(self, path):
28 java = self.get_path() 29 if not java: 30 raise CuckooPackageError("Unable to find any Java " 31 "executable available") 32 33 dll = self.options.get("dll", None) 34 free = self.options.get("free", False) 35 class_path = self.options.get("class", None) 36 suspended = True 37 if free: 38 suspended = False 39 40 if class_path: 41 args = "-cp \"%s\" %s" % (path, class_path) 42 else: 43 args = "-jar \"%s\"" % path 44 45 p = Process() 46 if not p.execute(path=java, args=args, suspended=suspended): 47 raise CuckooPackageError("Unable to execute initial Java " 48 "process, analysis aborted") 49 50 if not free and suspended: 51 p.inject(dll) 52 p.resume() 53 return p.pid 54 else: 55 return None
56
57 - def check(self):
58 return True
59
60 - def finish(self):
61 if self.options.get("procmemdump", False): 62 for pid in self.pids: 63 p = Process(pid=pid) 64 p.dump_memory() 65 66 return True
67