|
|
@@ -0,0 +1,54 @@
|
|
|
+# coding:utf8
|
|
|
+
|
|
|
+__author__ = '极无双'
|
|
|
+
|
|
|
+import os
|
|
|
+import logging
|
|
|
+import xml.dom.minidom
|
|
|
+import re
|
|
|
+import shutil
|
|
|
+import glob
|
|
|
+
|
|
|
+ANDROID_NS = 'http://schemas.android.com/apk/res/android'
|
|
|
+from xml.etree import ElementTree as ET
|
|
|
+
|
|
|
+def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
|
|
|
+ fix_coolyun_application_getinstance_null_bug(decompileDir)
|
|
|
+ return
|
|
|
+
|
|
|
+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__':
|
|
|
+ ""
|