1
2
3
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
12 """Java analysis package."""
13
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
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
59
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