|
@@ -1,147 +0,0 @@
|
|
|
-# coding:utf8
|
|
|
|
|
-
|
|
|
|
|
-__author__ = 'Snow'
|
|
|
|
|
-
|
|
|
|
|
-import os
|
|
|
|
|
-import logging
|
|
|
|
|
-import xml.dom.minidom
|
|
|
|
|
-import re
|
|
|
|
|
-import shutil
|
|
|
|
|
-import glob
|
|
|
|
|
-import distutils.dir_util
|
|
|
|
|
-import gw_file_system
|
|
|
|
|
-import gw_data_center
|
|
|
|
|
-
|
|
|
|
|
-ANDROID_NS = 'http://schemas.android.com/apk/res/android'
|
|
|
|
|
-from xml.etree import ElementTree as ET
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def script_init(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_info, game_info):
|
|
|
|
|
- sdk_id = channel_sdk_info['id']
|
|
|
|
|
- gw_data_center.pack_small = False
|
|
|
|
|
- logging.info('script_init: ' + str(channel_sdk_info))
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def del_hjr(decompileDir):
|
|
|
|
|
- hjr = os.path.join(decompileDir, 'smali_classes4/com/hjr')
|
|
|
|
|
- if not os.path.exists(hjr):
|
|
|
|
|
- return
|
|
|
|
|
- hjr = os.path.join(decompileDir, 'smali_classes3/com/hjr')
|
|
|
|
|
- if os.path.exists(hjr):
|
|
|
|
|
- shutil.rmtree(hjr)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def script(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
|
|
|
|
|
- sdk_id = channelSdkInfo['id']
|
|
|
|
|
- modify_manifest(decompileDir)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def script_pre(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
|
|
|
|
|
- sdk_id = channelSdkInfo['id']
|
|
|
|
|
- if sdk_id == "549" or sdk_id == "412":
|
|
|
|
|
- modify_manifest(decompileDir)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
|
|
|
|
|
- logging.info('------------channelSdkInfo:' + str(channelSdkInfo))
|
|
|
|
|
- if channelSdkInfo['id'] == '549':
|
|
|
|
|
- del_hjr(decompileDir)
|
|
|
|
|
- # smali_classes4
|
|
|
|
|
- s1 = os.path.join(decompileDir, "smali_classes4", "com/netease")
|
|
|
|
|
- smali_classes2_dir = create_mutil_smali(decompileDir)
|
|
|
|
|
- s3 = smali_classes2_dir
|
|
|
|
|
- list_package = ["game", "messiah", "mpay", "ntunisdk", "screen_recorder", "unisdk", "wyclx", ]
|
|
|
|
|
- if not os.path.exists(s3):
|
|
|
|
|
- distutils.dir_util.mkpath(s3)
|
|
|
|
|
- move_package(s1, s3, list_package)
|
|
|
|
|
-
|
|
|
|
|
- if channelSdkInfo['id'] == '444':
|
|
|
|
|
- s1 = os.path.join(decompileDir, "smali_classes5", "com")
|
|
|
|
|
- smali_classes2_dir = create_mutil_smali(decompileDir)
|
|
|
|
|
- s3 = os.path.join(smali_classes2_dir, "com")
|
|
|
|
|
- list_package = ["kymjs","netease"]
|
|
|
|
|
- if not os.path.exists(s3):
|
|
|
|
|
- distutils.dir_util.mkpath(s3)
|
|
|
|
|
- move_package(s1, s3, list_package)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def modify_manifest(decompileDir):
|
|
|
|
|
- ET.register_namespace('android', ANDROID_NS)
|
|
|
|
|
- xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
|
|
|
|
|
- root_node = ET.parse(xmlparse)
|
|
|
|
|
- root = root_node.getroot()
|
|
|
|
|
- name = '{' + ANDROID_NS + '}name'
|
|
|
|
|
- authorities = '{' + ANDROID_NS + '}foregroundServiceType'
|
|
|
|
|
- package_name = root.attrib.get('package')
|
|
|
|
|
- if package_name == None:
|
|
|
|
|
- return
|
|
|
|
|
- providers = root.findall('./application/service')
|
|
|
|
|
- if providers != None:
|
|
|
|
|
- for provider in providers:
|
|
|
|
|
- providerName = provider.attrib.get(name)
|
|
|
|
|
- if 'com.netease.ntunisdk.CcMomentRecordingForegroundService' == providerName:
|
|
|
|
|
- # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
|
|
|
|
|
- try:
|
|
|
|
|
- del provider.attrib[authorities]
|
|
|
|
|
- except:
|
|
|
|
|
- ""
|
|
|
|
|
-
|
|
|
|
|
- root_node.write(xmlparse, 'utf-8')
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def move_package(s1, s3, list_package):
|
|
|
|
|
- for d in list_package:
|
|
|
|
|
- src = os.path.join(s1, d)
|
|
|
|
|
- if os.path.exists(src):
|
|
|
|
|
- dst = os.path.join(s3, d)
|
|
|
|
|
- distutils.dir_util.copy_tree(src, dst)
|
|
|
|
|
- distutils.dir_util.remove_tree(src)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def create_mutil_smali(decompileDir):
|
|
|
|
|
- f_idx = 2
|
|
|
|
|
- while True:
|
|
|
|
|
- tmp = gw_file_system.get_full_path(os.path.join(decompileDir, 'smali_classes%d' % f_idx))
|
|
|
|
|
- tmp = tmp.replace('\\', '/')
|
|
|
|
|
- tmp = re.sub('/+', '/', tmp)
|
|
|
|
|
-
|
|
|
|
|
- if os.path.exists(tmp):
|
|
|
|
|
- files = os.listdir(tmp)
|
|
|
|
|
- if len(files) == 0:
|
|
|
|
|
- smali_classes2_dir = tmp
|
|
|
|
|
- break
|
|
|
|
|
- f_idx += 1
|
|
|
|
|
- else:
|
|
|
|
|
- smali_classes2_dir = tmp
|
|
|
|
|
- break
|
|
|
|
|
- # endwhile
|
|
|
|
|
- os.mkdir(smali_classes2_dir)
|
|
|
|
|
- return smali_classes2_dir
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-def modify_manifest(decompileDir):
|
|
|
|
|
- ET.register_namespace('android', ANDROID_NS)
|
|
|
|
|
- xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
|
|
|
|
|
- root_node = ET.parse(xmlparse)
|
|
|
|
|
- root = root_node.getroot()
|
|
|
|
|
- name = '{' + ANDROID_NS + '}name'
|
|
|
|
|
- authorities = '{' + ANDROID_NS + '}foregroundServiceType'
|
|
|
|
|
- package_name = root.attrib.get('package')
|
|
|
|
|
- if package_name == None:
|
|
|
|
|
- return
|
|
|
|
|
- providers = root.findall('./application/service')
|
|
|
|
|
- if providers != None:
|
|
|
|
|
- for provider in providers:
|
|
|
|
|
- providerName = provider.attrib.get(name)
|
|
|
|
|
- if 'com.netease.ntunisdk.CcMomentRecordingForegroundService' == providerName:
|
|
|
|
|
- # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
|
|
|
|
|
- try:
|
|
|
|
|
- del provider.attrib[authorities]
|
|
|
|
|
- except:
|
|
|
|
|
- ""
|
|
|
|
|
-
|
|
|
|
|
- root_node.write(xmlparse, 'utf-8')
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-if __name__ == '__main__':
|
|
|
|
|
- del_hjr("C:\\Users\\Administrator\\Desktop\\Shadow")
|
|
|