script.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # -*- coding:utf-8 -*-
  2. __author__ = 'ALIXie'
  3. import logging
  4. import shutil
  5. import os
  6. import re
  7. import distutils.dir_util
  8. import gw_file_system
  9. import gw_data_center
  10. def script_init(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_info, game_info):
  11. gw_data_center.pack_small = False
  12. def script_pre(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_info, game_info):
  13. logging.info('method_proceed: ' + 'script_pre')
  14. def script(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_info, game_info):
  15. logging.info('method_proceed: ' + 'script')
  16. logging.info('channel_sdk_info: ' + str(channel_sdk_info))
  17. # 遥望
  18. if channel_sdk_info['id'] == "412":
  19. add_hjr_checkSelfPermission(extract_dir)
  20. if channel_sdk_info['id'] == "521" or channel_sdk_info['id'] == "535" or channel_sdk_info['id'] == "558":
  21. add_checkSelfPermission(extract_dir)
  22. def script_last(workspace_sdk_dir, decompileDir, channel_sdk_info, new_game_channel_info, game_info):
  23. if channel_sdk_info['id'] == "549":
  24. s1 = os.path.join(decompileDir, "smali_classes3/com")
  25. smali_classes_new = create_mutil_smali(decompileDir)
  26. s3 = os.path.join(decompileDir, smali_classes_new)
  27. list_package = ["netease"]
  28. if not os.path.exists(s3):
  29. distutils.dir_util.mkpath(s3)
  30. move_package(s1, s3, list_package)
  31. return
  32. def add_checkSelfPermission(extract_dir):
  33. goal_file = os.path.join(extract_dir, 'smali/android/support/v4/content/ContextCompat.smali')
  34. add_method(goal_file)
  35. def add_hjr_checkSelfPermission(extract_dir):
  36. goal_file = os.path.join(extract_dir, 'smali/android/support/haojieru/v4/content/ContextCompat.smali')
  37. add_method(goal_file)
  38. def add_method(goal_file):
  39. if os.path.isfile(goal_file):
  40. with open(goal_file, 'r+') as f:
  41. lines = f.readlines()
  42. method = ['.method public static checkSelfPermission(Landroid/content/Context;Ljava/lang/String;)I\n',
  43. ' .locals 2\n',
  44. ' .param p0, "context" # Landroid/content/Context;\n',
  45. ' .annotation build Landroid/support/annotation/NonNull;\n',
  46. ' .end annotation\n',
  47. ' .end param\n',
  48. ' .param p1, "permission" # Ljava/lang/String;\n',
  49. ' .annotation build Landroid/support/annotation/NonNull;\n',
  50. ' .end annotation\n',
  51. ' .end param\n',
  52. ' if-eqz p1, :cond_0\n',
  53. ' invoke-static {}, Landroid/os/Process;->myPid()I\n',
  54. ' move-result v0\n',
  55. ' invoke-static {}, Landroid/os/Process;->myUid()I\n',
  56. ' move-result v1\n',
  57. ' invoke-virtual {p0, p1, v0, v1}, Landroid/content/Context;->checkPermission(Ljava/lang/String;II)I\n',
  58. ' move-result v0\n',
  59. ' return v0\n',
  60. ' :cond_0\n',
  61. ' new-instance v0, Ljava/lang/IllegalArgumentException;\n',
  62. ' const-string v1, "permission is null"\n',
  63. ' invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V\n',
  64. ' throw v0\n',
  65. '.end method']
  66. for i in method:
  67. lines.append(i)
  68. with open(goal_file, 'w') as fl:
  69. fl.write(''.join(lines))
  70. def move_package(s1, s3, list_package):
  71. for d in list_package:
  72. src = os.path.join(s1, d)
  73. if os.path.exists(src):
  74. dst = os.path.join(s3, d)
  75. distutils.dir_util.copy_tree(src, dst)
  76. distutils.dir_util.remove_tree(src)
  77. def create_mutil_smali(decompileDir):
  78. f_idx = 2
  79. while True:
  80. tmp = gw_file_system.get_full_path(os.path.join(decompileDir, 'smali_classes%d' % f_idx))
  81. tmp = tmp.replace('\\', '/')
  82. tmp = re.sub('/+', '/', tmp)
  83. if os.path.exists(tmp):
  84. f_idx += 1
  85. else:
  86. smali_classes2_dir = tmp
  87. break
  88. # endwhile
  89. os.mkdir(smali_classes2_dir)
  90. return smali_classes2_dir
  91. if __name__ == "__main__":
  92. add_hjr_checkSelfPermission("C:\\Users\\Administrator\\Desktop\\dtws")