def move_ids_xml(): # Move the id resources index into the value resource dir try: #windows copy_file(os.path.join(ob_dir(),'ids.xml'), os.path.join(base_dir(),'res','values','ids.xml')) #os.system('cp -R ' + ob_dir() + '/ids.xml ' + base_dir() + '/res/values/ids.xml') #unix except OSError as ex: raise e.OpenToolException(str(ex) + '\nUnable to move Ids xml file')
def clean_apk(sample_file_name): # Clear the temporary apk try: if enable_logging: u.logger('Apk cleaned: ' + sample_file_name) popen('rm -f ' + sample_file_name) except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to clean ' + sample_file_name)
def clean_temp(sample_tf_dir): # Clear the temporary support directory try: if enable_logging: u.logger('Directory cleaned: ' + sample_tf_dir) popen('rm -rf ' + sample_tf_dir + '/app') except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to clean ' + sample_tf_dir)
def clean_apk(apk_path): # Clear the temporary apk try: if enable_logging: u.logger('Apk cleaned: ' + apk_path) #popen('rm -f ' + apk_path) os.remove(apk_path) #os.system("del /f /q {0}".format(apk_path)) except OSError as ex: raise e.OpenToolException(str(ex) + '\nUnable to clean ' + apk_path)
def design_apk(sample_file_name): # Remove a signature from an apk file try: if enable_logging: u.logger('DeSign: ' + sample_file_name) popen('zip -d ' + sample_file_name + ' /META-INF/*') # Delete the META-INF folder from the apk root except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to delete META-INF from ' + sample_file_name)
def move_decrypt_method( ): # Move the decription routine into the apk class tree try: method_name = 'nvlEStringManager.smali' os.system('cp -R ' + ob_dir() + '/' + method_name + ' ' + base_dir() + '/smali/' + method_name) except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to move Decrypytion Method')
def move_decrypt_method( ): # Move the decription routine into the apk class tree try: method_name = 'nvlEStringManager.smali' copy_file(join(ob_dir(), method_name), join(base_dir(), 'smali', method_name)) except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to move Decrypytion Method')
def clean_temp(sample_tf_dir): # Clear the temporary support directory try: if enable_logging: u.logger('Directory cleaned: ' + sample_tf_dir) app_dir = os.path.join(sample_tf_dir, 'app') rm_tree(app_dir) except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to clean ' + sample_tf_dir)
def design_apk(sample_file_name): # Remove a signature from an apk file try: if enable_logging: u.logger('DeSign: ' + sample_file_name) #NOTE: we dont need to remove META-INF because it will be just overwritten during signing #popen("rd /s /q {0}".format(os.path.join(sample_file_name, 'META-INF'))) #popen('zip -d ' + sample_file_name + ' /META-INF/*') # Delete the META-INF folder from the apk root except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to delete META-INF from ' + sample_file_name)
def smali(sample_tf_dir, sample_file_name): # Smali an apk file try: if enable_logging: u.logger('Smali: ' + sample_file_name + ' from ' + sample_tf_dir) popen('apktool b --force-all ' + sample_tf_dir + '/app' + ' ' + sample_file_name) except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to smali ' + sample_file_name + ' from ' + sample_tf_dir)
def zip_align(sample_file_name): # Align the file try: if enable_logging: u.logger('Zip: ' + sample_file_name) popen('cp ' + sample_file_name + ' ' + sample_file_name + '_old.apk') popen('zipalign -f 8 ' + sample_file_name + '_old.apk' + ' ' + sample_file_name) popen('rm -f ' + sample_file_name + '_old.apk') except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to zipalign ' + sample_file_name)
def zip_align(sample_file_name): # Align the file try: if enable_logging: u.logger('Zip: ' + sample_file_name) u.copy_file(sample_file_name, sample_file_name + '_old.apk') popen(config.zipalign_path + ' -f 8 ' + sample_file_name + '_old.apk' + ' ' + sample_file_name) os.remove(sample_file_name + '_old.apk') except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to zipalign ' + sample_file_name)
def sign_apk(sample_file_name): # Sign an apk file with a SHA1 key try: if enable_logging: u.logger('Sign: ' + sample_file_name) popen(config.jarsigner_path + ' -sigalg MD5withRSA -digestalg SHA1 -keystore ' + os.path.join(obfuscator_resource_dir, 'resignKey.keystore') + ' -storepass resignKey ' + sample_file_name + ' resignKey') except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to sign ' + sample_file_name)
def sign_apk(sample_file_name): # Sign an apk file with a SHA1 key try: if enable_logging: u.logger('Sign: ' + sample_file_name) popen('jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore ' + obfuscator_resource_dir + '/resignKey.keystore -storepass resignKey ' + sample_file_name + ' resignKey') #popen('/opt/jdk1.8.0_101/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore ' + obfuscator_resource_dir + '/resignKey.keystore -storepass resignKey ' + sample_file_name + ' resignKey') except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to sign ' + sample_file_name)
def smali(sample_tf_dir, sample_file_name): # Smali an apk file try: if enable_logging: u.logger('Smali: ' + sample_file_name + ' from ' + sample_tf_dir) cmd = "{0} b --force-all -o {1} {2}".format( config.apktool_path, sample_file_name, os.path.join(sample_tf_dir, 'app')) popen(cmd) except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to smali ' + sample_file_name + ' from ' + sample_tf_dir)
def backsmali(sample_tf_dir, sample_file_name): # Backsmali an apk file try: if enable_logging: u.logger('Backsmali: ' + sample_file_name + ' into ' + sample_tf_dir) popen('apktool d --force --no-debug-info ' + sample_file_name + ' ' + sample_tf_dir + '/app') if os.path.isdir(u.base_dir() + '/smali/com'): u.main_exec_dir = 'com' elif os.path.isdir(u.base_dir() + '/smali/org'): u.main_exec_dir = 'org' else: u.main_exec_dir = '' except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to backsmali ' + sample_file_name + ' into ' + sample_tf_dir)
def backsmali(unpack_dir, apk_path): # Backsmali an apk file try: if enable_logging: u.logger('Backsmali: ' + apk_path + ' into ' + unpack_dir) cmd = "{0} d --force --no-debug-info -o {1} {2}".format( config.apktool_path, os.path.join(unpack_dir, 'app'), apk_path) popen(cmd) if os.path.isdir(os.path.join(u.base_dir(), 'smali', 'com')): u.main_exec_dir = 'com' elif os.path.isdir(os.path.join(u.base_dir(), 'smali', 'org')): u.main_exec_dir = 'org' else: u.main_exec_dir = '' except OSError as ex: raise e.OpenToolException( str(ex) + '\nUnable to backsmali ' + sample_file_name + ' into ' + sample_tf_dir)
def move_ids_xml(): # Move the id resources index into the value resource dir try: os.system('cp -R ' + ob_dir() + '/ids.xml ' + base_dir() + '/res/values/ids.xml') except OSError as ex: raise e.OpenToolException(str(ex) + '\nUnable to move Ids xml file')