| 70 | class QlLoaderMACHO(QlLoader): |
| 71 | # macho x8664 loader |
| 72 | def __init__(self, ql, dyld_path=None): |
| 73 | super(QlLoaderMACHO, self).__init__(ql) |
| 74 | self.dyld_path = dyld_path |
| 75 | self.ql = ql |
| 76 | |
| 77 | #FIXME: Demigod needs a better way to handle kext file |
| 78 | if os.path.isdir(self.ql.argv[0]): |
| 79 | basename = os.path.basename(self.ql.argv[0]) |
| 80 | self.kext_name = os.path.splitext(basename)[0] |
| 81 | filename = self.ql.argv |
| 82 | self.ql._argv = [self.ql.argv[0] + "/Contents/MacOS/" + self.kext_name] |
| 83 | self.plist = plistlib.load(open(filename[0] + "/Contents/Info.plist", "rb")) |
| 84 | if "IOKitPersonalities" in self.plist: |
| 85 | self.IOKit = True |
| 86 | else: |
| 87 | self.IOKit = False |
| 88 | else: |
| 89 | self.kext_name = None |
| 90 | |
| 91 | def run(self): |
| 92 | self.profile = self.ql.profile |