一起来修仙Y-小绵羊.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import sys
  4. import json
  5. import os
  6. import re
  7. import shutil
  8. import subprocess
  9. import xml.etree.ElementTree as ET
  10. import zipfile
  11. import win32api
  12. import win32con
  13. import yaml
  14. print("一起来修仙Y-小绵羊")
  15. print(sys.argv)
  16. decompile_dir_path = sys.argv[1]
  17. print(decompile_dir_path)
  18. def copy_new_sdk_delay_smali_kf():
  19. promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
  20. delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成就登录\com\yulong\sdk\promoter'
  21. print(promoter_path)
  22. if os.path.exists(promoter_path):
  23. for file_item in os.listdir(delay_login_path):
  24. print(file_item)
  25. smali_file_path = os.path.join(delay_login_path, file_item)
  26. print(smali_file_path)
  27. shutil.copy(smali_file_path, promoter_path)
  28. else:
  29. print('promoter 不在smali文件夹')
  30. shutil.copytree(delay_login_path, promoter_path)
  31. copy_new_sdk_delay_smali_kf()
  32. # 新版sdk取消登录调不起登录
  33. def modify_cancel_login_and_fubiao(decompile_dir):
  34. insert_str_list = [
  35. '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
  36. '\tmove-result-object v0\n\n',
  37. '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
  38. '\tcheck-cast v1, Landroid/content/Context;\n\n',
  39. '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
  40. for dirpath, dirnames, filenames in os.walk(decompile_dir):
  41. if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
  42. smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
  43. print(smali_path)
  44. with open(smali_path, 'r', encoding='utf-8') as f:
  45. smali_str_arr = f.readlines()
  46. index_str = r'sdk\u767b\u9646\u5931\u8d25:'
  47. end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
  48. insert_str = ''.join(insert_str_list)
  49. on_create_index = 0
  50. insert_index = 0
  51. for line in smali_str_arr:
  52. if index_str in line:
  53. on_create_index = smali_str_arr.index(line)
  54. print('on_create_index', on_create_index, line)
  55. break
  56. for index, value in enumerate(smali_str_arr):
  57. if index > on_create_index and end_method_str in value:
  58. insert_index = index
  59. print('insert_index', index)
  60. break
  61. print(on_create_index, insert_index)
  62. smali_str_arr.insert(insert_index+1, insert_str)
  63. with open(smali_path, 'w', encoding='utf-8') as f:
  64. f.write(''.join(smali_str_arr))
  65. if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
  66. smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
  67. with open(smali_path, 'r', encoding='utf-8') as f:
  68. smali_str_arr = f.readlines()
  69. for line in smali_str_arr:
  70. if '0x1f4' in line:
  71. smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
  72. break
  73. with open(smali_path, 'w', encoding='utf-8') as f:
  74. f.write(''.join(smali_str_arr))
  75. if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
  76. smali_path = os.path.join(dirpath, 'UserResult.smali')
  77. with open(smali_path, 'r', encoding='utf-8') as f:
  78. smali_str_arr = f.readlines()
  79. index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
  80. end_method_str = '.end method'
  81. on_create_index = 0
  82. insert_index = 0
  83. for line in smali_str_arr:
  84. if index_str in line:
  85. on_create_index = smali_str_arr.index(line)
  86. print('on_create_index', on_create_index, line)
  87. break
  88. for index, value in enumerate(smali_str_arr):
  89. if index > on_create_index and end_method_str in value:
  90. insert_index = index
  91. print('insert_index', index)
  92. break
  93. for index, value in enumerate(smali_str_arr):
  94. if on_create_index < index < insert_index:
  95. if '0x0' in value:
  96. print(value)
  97. smali_str_arr[index] = value.replace('0x0', '0x1')
  98. break
  99. with open(smali_path, 'w', encoding='utf-8') as f:
  100. f.write(''.join(smali_str_arr))
  101. if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
  102. smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
  103. with open(smali_path, 'r', encoding='utf-8') as f:
  104. smali_str_arr = f.readlines()
  105. index_str = '.method public static isFastDoubleClick(J)Z'
  106. end_method_str = '.end method'
  107. on_create_index = 0
  108. insert_index = 0
  109. for line in smali_str_arr:
  110. if index_str in line:
  111. on_create_index = smali_str_arr.index(line)
  112. print('on_create_index', on_create_index, line)
  113. break
  114. for index, value in enumerate(smali_str_arr):
  115. if index > on_create_index and end_method_str in value:
  116. insert_index = index
  117. print('insert_index', index)
  118. break
  119. for index, value in enumerate(smali_str_arr):
  120. if on_create_index < index < insert_index:
  121. if '0x1' in value:
  122. print(value)
  123. smali_str_arr[index] = value.replace('0x1', '0x0')
  124. break
  125. with open(smali_path, 'w', encoding='utf-8') as f:
  126. f.write(''.join(smali_str_arr))
  127. # modify_cancel_login_and_fubiao(decompile_dir_path)