script.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # coding:utf8
  2. __author__ = 'dong'
  3. import os
  4. import logging
  5. import xml.dom.minidom
  6. import re
  7. import shutil
  8. import glob
  9. from xml.etree.ElementTree import ElementTree, Element
  10. import distutils.dir_util
  11. import gw_file_system
  12. ANDROID_NS = 'http://schemas.android.com/apk/res/android'
  13. from xml.etree import ElementTree as ET
  14. def script(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  15. sdk_id = channelSdkInfo['id']
  16. if sdk_id == "323":
  17. modify_manifest(decompileDir)
  18. def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  19. s1 = os.path.join(decompileDir, "smali_classes5", "com")
  20. smali_classes2_dir = create_mutil_smali(decompileDir)
  21. s3 = os.path.join(smali_classes2_dir, "com")
  22. list_package = ["iapppay", "ipaynow", "nearme", "netease", "nostra13", "oppo", "qihoo"]
  23. if not os.path.exists(s3):
  24. distutils.dir_util.mkpath(s3)
  25. move_package(s1, s3, list_package)
  26. logging.info("-----script_last_debug-----")
  27. def modify_manifest(decompileDir):
  28. ET.register_namespace('android', ANDROID_NS)
  29. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  30. root_node = ET.parse(xmlparse)
  31. root = root_node.getroot()
  32. name = '{' + ANDROID_NS + '}name'
  33. authorities = '{' + ANDROID_NS + '}foregroundServiceType'
  34. package_name = root.attrib.get('package')
  35. if package_name == None:
  36. return
  37. providers = root.findall('./application/service')
  38. if providers != None:
  39. for provider in providers:
  40. providerName = provider.attrib.get(name)
  41. if 'com.netease.ntunisdk.CcMomentRecordingForegroundService' == providerName:
  42. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  43. try:
  44. del provider.attrib[authorities]
  45. except:
  46. ""
  47. root_node.write(xmlparse, 'utf-8')
  48. def create_mutil_smali(decompileDir):
  49. f_idx = 2
  50. while True:
  51. tmp = gw_file_system.get_full_path(os.path.join(decompileDir, 'smali_classes%d' % f_idx))
  52. tmp = tmp.replace('\\', '/')
  53. tmp = re.sub('/+', '/', tmp)
  54. if os.path.exists(tmp):
  55. f_idx += 1
  56. else:
  57. smali_classes2_dir = tmp
  58. break
  59. # endwhile
  60. os.mkdir(smali_classes2_dir)
  61. return smali_classes2_dir
  62. def move_package(s1, s3, list_package):
  63. for d in list_package:
  64. src = os.path.join(s1, d)
  65. if os.path.exists(src):
  66. dst = os.path.join(s3, d)
  67. distutils.dir_util.copy_tree(src, dst)
  68. distutils.dir_util.remove_tree(src)
  69. if __name__ == '__main__':
  70. script("", "E:\\apk\\youhua\\LYJY360_12412_360逆向_1.23.00", "", "", "")