script.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # coding:utf8
  2. __author__ = '灌篮高手酷派'
  3. import os
  4. import logging
  5. import xml.dom.minidom
  6. import re
  7. import shutil
  8. import glob
  9. import distutils.dir_util
  10. def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  11. fix_coolyun_application_getinstance_null_bug(decompileDir)
  12. def fix_coolyun_application_getinstance_null_bug(decompile_dir):
  13. insert_str_list = [
  14. '\n\t.locals 1\n\n',
  15. '\tsget-object v0, Lcom/coolyun/framework/CoolYunApplication;->application:Landroid/content/Context;\n\n',
  16. '\tcheck-cast v0, Lcom/coolyun/framework/CoolYunApplication;\n\n',
  17. '\treturn-object v0\n\n']
  18. for dirpath, dirnames, filenames in os.walk(decompile_dir):
  19. if r'com\coolyun\framework' in dirpath and 'CoolYunApplication.smali' in filenames:
  20. smali_path = os.path.join(dirpath, 'CoolYunApplication.smali')
  21. with open(smali_path, 'r') as f:
  22. smali_str_arr = f.readlines()
  23. index_str = '.method public static getInstance()Lcom/coolyun/framework/CoolYunApplication;'
  24. end_method_str = '.end method'
  25. insert_str = ''.join(insert_str_list)
  26. on_create_index = 0
  27. insert_index = 0
  28. for line in smali_str_arr:
  29. if index_str in line:
  30. on_create_index = smali_str_arr.index(line)
  31. print('on_create_index', on_create_index, line)
  32. break
  33. for index, value in enumerate(smali_str_arr):
  34. if index > on_create_index and end_method_str in value:
  35. insert_index = index
  36. print('insert_index', index)
  37. break
  38. print(on_create_index, insert_index)
  39. del smali_str_arr[on_create_index + 1:insert_index]
  40. smali_str_arr.insert(on_create_index + 1, insert_str)
  41. with open(smali_path, 'w') as f:
  42. f.write(''.join(smali_str_arr))
  43. break
  44. if __name__ == '__main__':
  45. ""