def so_policy(self): if FileUtils.is_dir_exit(config.jni_path): arm_64 = os.path.join(config.jni_path, "arm64-v8a") x86_64 = os.path.join(config.jni_path, "x86_64") if not FileUtils.is_dir_exit(arm_64) and not FileUtils.is_dir_exit( x86_64): self.so_64 = True else: if FileUtils.is_dir_exit(config.unzip_path): arm_64_2 = os.path.join(config.unzip_path, "arm64-v8a") x86_64_2 = os.path.join(config.unzip_path, "x86_64") self.so_64 = FileUtils.is_dir_empty( arm_64_2) and FileUtils.is_dir_empty(x86_64_2)
def smali_decompile(self, jar_path): dx_path = os.path.join(config.TOOL_PATH, "dx.jar") dex_path = os.path.join(config.unzip_path, "classes.dex") baksmali_jar_path = os.path.join(config.TOOL_PATH, "baksmali.jar") process = subprocess.Popen( ["java", "-jar", dx_path, "--dex", "--output", dex_path, jar_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) process.communicate() if FileUtils.is_file_exit(dex_path): try: command = 'java -jar \"%s\" -o \"%s\" \"%s\"' % ( baksmali_jar_path, config.smali_path, dex_path) p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) ret = p.communicate() if FileUtils.is_dir_empty(config.smali_path): logging.error(u"反编译smali失败") return False except Exception as e: logging.error(u"反编译smali失败,原因:%s", e) return False return True