| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #!/usr/bin/env python
- # -*- coding: UTF-8 -*-
- import argparse
- import os
- import subprocess
- import shutil
- import tempfile
- def PrintError_RaiseException_StopBuild(err) :
- print("[Error] " + err)
- raise Exception("[Error] " + err)
- def main():
- parser = argparse.ArgumentParser(description='Security library object parser')
- parser.add_argument('--obj_list_file', '-b',
- required=True,
- help='Provide the file path of the object')
- parser.add_argument('--preloader_root_folder', '-r',
- required=True,
- help='Provide the root folder path of preloader')
- parser.add_argument('--preloader_seclib_obj_out_dir', '-p',
- required=True,
- help='Provide the platform source folder path of preloader')
- parser.add_argument('--seclib_path', '-s',
- required=True,
- help='Provide the security library path of preloader')
- parser.add_argument('--preloader_out', '-t',
- required=True,
- help='Provide the preloader out folder path')
- args = parser.parse_args()
- if not os.path.isfile(args.obj_list_file) :
- PrintError_RaiseException_StopBuild("Seclib object list file not found: " + args.obj_list_file)
- if not os.path.isfile(args.seclib_path) :
- PrintError_RaiseException_StopBuild("Seclib file not found: " + args.seclib_path)
- if not os.path.isdir(args.preloader_root_folder) :
- PrintError_RaiseException_StopBuild("Preloader root folder not found: " + args.preloader_root_folder)
- if not os.path.isdir(args.preloader_seclib_obj_out_dir) :
- PrintError_RaiseException_StopBuild("Preloader seclib tmp out folder not found: " + args.preloader_seclib_obj_out_dir)
- lib_obj_file = open(args.obj_list_file, 'r')
- cwd = os.getcwd()
- ar_dir = tempfile.mkdtemp("_", "_", args.preloader_out)
- os.chdir(ar_dir)
- for line in lib_obj_file:
- obj_item = line.replace("\n", "")
- cmd = "ar -x " + args.seclib_path + " " + obj_item
- subprocess.call(cmd, shell=True)
- shutil.move(os.path.join(ar_dir, obj_item), os.path.join(args.preloader_seclib_obj_out_dir, obj_item))
- os.chdir(cwd)
- shutil.rmtree(ar_dir)
- if __name__ == '__main__':
- main()
|