script.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. ANDROID_NS = 'http://schemas.android.com/apk/res/android'
  10. from xml.etree import ElementTree as ET
  11. def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  12. fix_coolyun_application_getinstance_null_bug(decompileDir)
  13. return
  14. def fix_coolyun_application_getinstance_null_bug(decompile_dir):
  15. insert_str_list = [
  16. '\n\t.locals 1\n\n',
  17. '\tsget-object v0, Lcom/coolyun/framework/CoolYunApplication;->application:Landroid/content/Context;\n\n',
  18. '\tcheck-cast v0, Lcom/coolyun/framework/CoolYunApplication;\n\n',
  19. '\treturn-object v0\n\n']
  20. for dirpath, dirnames, filenames in os.walk(decompile_dir):
  21. if r'com\coolyun\framework' in dirpath and 'CoolYunApplication.smali' in filenames:
  22. smali_path = os.path.join(dirpath, 'CoolYunApplication.smali')
  23. with open(smali_path, 'r') as f:
  24. smali_str_arr = f.readlines()
  25. index_str = '.method public static getInstance()Lcom/coolyun/framework/CoolYunApplication;'
  26. end_method_str = '.end method'
  27. insert_str = ''.join(insert_str_list)
  28. on_create_index = 0
  29. insert_index = 0
  30. for line in smali_str_arr:
  31. if index_str in line:
  32. on_create_index = smali_str_arr.index(line)
  33. print('on_create_index', on_create_index, line)
  34. break
  35. for index, value in enumerate(smali_str_arr):
  36. if index > on_create_index and end_method_str in value:
  37. insert_index = index
  38. print('insert_index', index)
  39. break
  40. print(on_create_index, insert_index)
  41. del smali_str_arr[on_create_index + 1:insert_index]
  42. smali_str_arr.insert(on_create_index + 1, insert_str)
  43. with open(smali_path, 'w') as f:
  44. f.write(''.join(smali_str_arr))
  45. break
  46. if __name__ == '__main__':
  47. ""