| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # coding:utf8
- __author__ = '灌篮高手酷派'
- import os
- import gw_apk_tool
- def script_init(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
- # 删除渠道的so,为保留游戏的so
- list_so = ["libentryexpro.so", "libplugin_phone.so", "libuptsmaddon.so", "libuptsmaddonmi.so"]
- for so in list_so:
- so = os.path.join(SDK, channelSdkInfo["SDKName"], "ForLibs", "armeabi-v7a", so)
- if os.path.exists(so):
- os.remove(so)
- def script_second(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
- handle_same_name_package(decompileDir)
- def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
- fix_coolyun_application_getinstance_null_bug(decompileDir)
- # replace_application_verify_rose_bug(decompileDir)
- def fix_coolyun_application_getinstance_null_bug(decompile_dir):
- insert_str_list = [
- '\n\t.locals 1\n\n',
- '\tsget-object v0, Lcom/coolyun/framework/CoolYunApplication;->application:Landroid/content/Context;\n\n',
- '\tcheck-cast v0, Lcom/coolyun/framework/CoolYunApplication;\n\n',
- '\treturn-object v0\n\n']
- for dirpath, dirnames, filenames in os.walk(decompile_dir):
- if r'com\coolyun\framework' in dirpath and 'CoolYunApplication.smali' in filenames:
- smali_path = os.path.join(dirpath, 'CoolYunApplication.smali')
- with open(smali_path, 'r') as f:
- smali_str_arr = f.readlines()
- index_str = '.method public static getInstance()Lcom/coolyun/framework/CoolYunApplication;'
- end_method_str = '.end method'
- insert_str = ''.join(insert_str_list)
- on_create_index = 0
- insert_index = 0
- for line in smali_str_arr:
- if index_str in line:
- on_create_index = smali_str_arr.index(line)
- print('on_create_index', on_create_index, line)
- break
- for index, value in enumerate(smali_str_arr):
- if index > on_create_index and end_method_str in value:
- insert_index = index
- print('insert_index', index)
- break
- print(on_create_index, insert_index)
- del smali_str_arr[on_create_index + 1:insert_index]
- smali_str_arr.insert(on_create_index + 1, insert_str)
- with open(smali_path, 'w') as f:
- f.write(''.join(smali_str_arr))
- break
- def handle_same_name_package(decompileDir):
- gf_1_path = os.path.join(decompileDir, "smali", "com", "gf.1")
- if not os.path.exists(gf_1_path):
- return
- # 把同名的GF包移走
- new_smali_path = gw_apk_tool.create_mutil_smali(decompileDir)
- source = os.path.join(decompileDir, "smali", "com")
- target = os.path.join(new_smali_path, "com")
- GF_path = os.path.join(source, "GF")
- if os.path.exists(GF_path):
- gw_apk_tool.move_package(source, target, ["GF"])
- # 更改gf.1成gf
- # gf_1_path = os.path.join(decompileDir, "smali", "com", "gf.1")
- gf_path = os.path.join(decompileDir, "smali", "com", "gf")
- if os.path.exists(gf_1_path):
- os.renames(gf_1_path, gf_path)
- if __name__ == '__main__':
- ""
|