|
|
@@ -15,6 +15,10 @@ def script(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_in
|
|
|
remove_app_icon(app_icon)
|
|
|
|
|
|
|
|
|
+def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
|
|
|
+ fix_coolyun_application_getinstance_null_bug(decompileDir)
|
|
|
+
|
|
|
+
|
|
|
def remove_app_icon(icon_path):
|
|
|
if not os.path.exists(icon_path):
|
|
|
logging.info('public_xml is null: ' + icon_path)
|
|
|
@@ -22,5 +26,39 @@ def remove_app_icon(icon_path):
|
|
|
os.remove(icon_path)
|
|
|
|
|
|
|
|
|
+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
|
|
|
+
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
|
script('', 'E:/script_test', {}, {}, {})
|