huangxi пре 1 година
родитељ
комит
17d24b496a
100 измењених фајлова са 9258 додато и 1 уклоњено
  1. 0 1
      script
  2. 188 0
      script/66小鸭鸭Y-小绵羊.py
  3. 0 0
      script/__init__.py
  4. BIN
      script/__pycache__/__init__.cpython-38.pyc
  5. 19 0
      script/template.py
  6. 83 0
      script/一拳超人Y-FAKE.py
  7. 183 0
      script/一拳超人Y-小绵羊.py
  8. 83 0
      script/一拳超人Y-朱雀.py
  9. 166 0
      script/一梦江湖Y-小绵羊.py
  10. 14 0
      script/一梦江湖网易-小绵羊.py
  11. 135 0
      script/一起来修仙Y-小绵羊.py
  12. 146 0
      script/七七捕鱼Y-FAKE.py
  13. 146 0
      script/七七捕鱼Y-小绵羊.py
  14. 146 0
      script/七七捕鱼Y-朱雀.py
  15. 47 0
      script/万世镜Y-FAKE.py
  16. 63 0
      script/万世镜Y-小绵羊.py
  17. 47 0
      script/万世镜Y-朱雀.py
  18. 114 0
      script/三国云梦录Y-FAKE.py
  19. 115 0
      script/三国云梦录Y-小绵羊.py
  20. 114 0
      script/三国云梦录Y-朱雀.py
  21. 56 0
      script/三国吧兄弟Y-FAKE.py
  22. 88 0
      script/三国吧兄弟Y-小绵羊.py
  23. 73 0
      script/三国吧兄弟Y-朱雀.py
  24. 144 0
      script/三国战纪2Y-FAKE.py
  25. 234 0
      script/三国战纪2Y-小绵羊.py
  26. 144 0
      script/三国战纪2Y-朱雀.py
  27. 47 0
      script/三国杀Y-九狐.py
  28. 208 0
      script/三国杀Y-小绵羊.py
  29. 47 0
      script/三国杀Y-朱雀.py
  30. 173 0
      script/三国杀名将传Y-小绵羊.py
  31. 173 0
      script/三国杀名将传Y-朱雀.py
  32. 55 0
      script/三国计Y-FAKE.py
  33. 54 0
      script/三国计Y-小绵羊.py
  34. 92 0
      script/三国计Y-朱雀.py
  35. 52 0
      script/不朽大陆Y-小绵羊.py
  36. 180 0
      script/不良人3Y-小绵羊.py
  37. 41 0
      script/不良人3Y-朱雀.py
  38. 170 0
      script/东方归言录Y-小绵羊.py
  39. 35 0
      script/中职篮全力以赴Y-小绵羊.py
  40. 159 0
      script/九天封神Y-小绵羊.py
  41. 59 0
      script/九天封神Y-朱雀.py
  42. 128 0
      script/九州仙剑传Y-小绵羊.py
  43. 97 0
      script/九州仙剑传Y-朱雀.py
  44. 28 0
      script/九州天空城Y-小绵羊.py
  45. 24 0
      script/九州天空城Y-朱雀.py
  46. 169 0
      script/九灵神域Y-小绵羊.py
  47. 58 0
      script/九灵神域Y-朱雀.py
  48. 115 0
      script/九阴-朱雀.py
  49. 51 0
      script/九阴真经3D-遥望.py
  50. 51 0
      script/九阴真经3D其他CP-小绵羊.py
  51. 54 0
      script/乱世终结战Y-小绵羊.py
  52. 37 0
      script/乱世终结战Y-朱雀.py
  53. 19 0
      script/乱世终结战Y-酷派FAKE.py
  54. 51 0
      script/云上城之歌其他cp-朱雀.py
  55. 94 0
      script/云海寻仙记Y-FAKE.py
  56. 54 0
      script/云海寻仙记Y-小绵羊.py
  57. 94 0
      script/云海寻仙记Y-朱雀.py
  58. 49 0
      script/仗剑封魔Y-小绵羊.py
  59. 35 0
      script/仙剑奇侠传:新的开始Y-小绵羊.py
  60. 80 0
      script/仙圣奇缘Y-小绵羊.py
  61. 47 0
      script/仙宗大掌门Y-九狐.py
  62. 47 0
      script/仙宗大掌门Y-小绵羊.py
  63. 47 0
      script/仙宗大掌门Y-朱雀.py
  64. 19 0
      script/传说之城Y-酷派FAKE.py
  65. 86 0
      script/作妖记D-朱雀.py
  66. 94 0
      script/倩女幽魂Y-FAKE.py
  67. 238 0
      script/倩女幽魂Y-小绵羊.py
  68. 182 0
      script/倩女幽魂Y-朱雀.py
  69. 175 0
      script/元气骑士Y-小绵羊.py
  70. 73 0
      script/元气骑士Y-朱雀.py
  71. 47 0
      script/元气骑士前传Y-fake.py
  72. 83 0
      script/元气骑士前传Y-小绵羊.py
  73. 47 0
      script/元气骑士前传Y-朱雀.py
  74. 129 0
      script/光明冒险Y-小绵羊.py
  75. 37 0
      script/光明冒险Y-朱雀.py
  76. 30 0
      script/光明勇士Y-小绵羊.py
  77. 187 0
      script/全明星激斗Y-小绵羊.py
  78. 29 0
      script/全明星激斗Y-朱雀.py
  79. 119 0
      script/全民口袋麻将Y-小绵羊.py
  80. 82 0
      script/全民江湖Y-小绵羊.py
  81. 265 0
      script/全民泡泡超人Y-FAKE.py
  82. 358 0
      script/全民泡泡超人Y-小绵羊.py
  83. 293 0
      script/全民泡泡超人Y-朱雀.py
  84. 38 0
      script/全能斗士Y-FAKE.py
  85. 68 0
      script/全能斗士Y-小绵羊.py
  86. 72 0
      script/全能斗士Y-朱雀.py
  87. 94 0
      script/兽王降临Y-小绵羊.py
  88. 48 0
      script/兽王降临Y-朱雀.py
  89. 65 0
      script/冒险与召唤Y-小绵羊.py
  90. 207 0
      script/凡人神将传Y-小绵羊.py
  91. 109 0
      script/凡人神将传Y-朱雀.py
  92. 20 0
      script/凹凸世界Y-小绵羊.py
  93. 49 0
      script/切菜狂人Y-小绵羊.py
  94. 35 0
      script/创造与魔法D-小绵羊.py
  95. 47 0
      script/剑侠世界:起源Y-小绵羊.py
  96. 47 0
      script/剑侠世界:起源Y-朱雀.py
  97. 47 0
      script/剑侠世界:起源Y-酷派FAKE.py
  98. 175 0
      script/剑灭逍遥Y-小绵羊.py
  99. 42 0
      script/剑灭逍遥Y-朱雀.py
  100. 0 0
      script/劲舞时代Y-小绵羊.py

+ 0 - 1
script

@@ -1 +0,0 @@
-Subproject commit e5896f41fdf8dbd052e107d9d15bdf410f04d0ac

+ 188 - 0
script/66小鸭鸭Y-小绵羊.py

@@ -0,0 +1,188 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("66小鸭鸭Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_kf_replace_application(line):
+    return '.super Lcom/kf/framework/KFApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/kf/framework/KFApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onCreate()V' in line
+
+def replace_application_verify_xmy_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\merge\sdk' in dirpath and 'MergeApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "MergeApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_kf_replace_application(line) and 'Lcom/kf/framework/KFApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/kf/framework/KFApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/kf/framework/KFApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+replace_application_verify_xmy_bug(decompile_dir_path)

+ 0 - 0
script/__init__.py


BIN
script/__pycache__/__init__.cpython-38.pyc


+ 19 - 0
script/template.py

@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("template脚本")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)

+ 83 - 0
script/一拳超人Y-FAKE.py

@@ -0,0 +1,83 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+
+print("一拳超人Y-FAKE")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'ourpalm\android\channels\Info' in dirpath and 'Ourpalm_Channels_Application.smali' in filenames:
+            application_path = os.path.join(dirpath, "Ourpalm_Channels_Application.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+replace_application_verify_rose_bug(decompile_dir_path)
+
+# def fix_kupai_android6_crash(decompile_dir):
+#     insert_str_list = [
+#         '\n\t.locals 0\n\n',
+#         '\tinvoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;\n\n',
+#         '\tmove-result-object p0\n\n',
+#         '\treturn-object p0\n\n']
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir):
+#         if r'com\yulong\appdata\a' in dirpath and 'e.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'e.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public static d(Landroid/content/Context;)Ljava/util/Locale;'
+#                 end_method_str = '.end method'
+#                 insert_str = ''.join(insert_str_list)
+#                 on_create_index = 0
+#                 insert_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         insert_index = index
+#                         print('insert_index', index)
+#                         break
+#                 print(on_create_index, insert_index)
+#                 del smali_str_arr[on_create_index + 1:insert_index]
+#                 smali_str_arr.insert(on_create_index + 1, insert_str)
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#                 break
+#
+# fix_kupai_android6_crash(decompile_dir_path)

+ 183 - 0
script/一拳超人Y-小绵羊.py

@@ -0,0 +1,183 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+
+print("一拳超人Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_kf_replace_application(line):
+    return '.super Lcom/kf/framework/KFApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/kf/framework/KFApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onCreate()V' in line
+
+def replace_application_verify_xmy_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'ourpalm\android\channels\Info' in dirpath and 'Ourpalm_Channels_Application.smali' in filenames:
+            application_path = os.path.join(dirpath, "Ourpalm_Channels_Application.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_kf_replace_application(line) and 'Lcom/kf/framework/KFApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/kf/framework/KFApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/kf/framework/KFApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+replace_application_verify_xmy_bug(decompile_dir_path)
+
+# def fix_kupai_android6_crash(decompile_dir):
+#     insert_str_list = [
+#         '\n\t.locals 0\n\n',
+#         '\tinvoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;\n\n',
+#         '\tmove-result-object p0\n\n',
+#         '\treturn-object p0\n\n']
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir):
+#         if r'com\yulong\appdata\a' in dirpath and 'e.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'e.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public static d(Landroid/content/Context;)Ljava/util/Locale;'
+#                 end_method_str = '.end method'
+#                 insert_str = ''.join(insert_str_list)
+#                 on_create_index = 0
+#                 insert_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         insert_index = index
+#                         print('insert_index', index)
+#                         break
+#                 print(on_create_index, insert_index)
+#                 del smali_str_arr[on_create_index + 1:insert_index]
+#                 smali_str_arr.insert(on_create_index + 1, insert_str)
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#                 break
+#
+# fix_kupai_android6_crash(decompile_dir_path)
+
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 83 - 0
script/一拳超人Y-朱雀.py

@@ -0,0 +1,83 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+
+print("一拳超人Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'ourpalm\android\channels\Info' in dirpath and 'Ourpalm_Channels_Application.smali' in filenames:
+            application_path = os.path.join(dirpath, "Ourpalm_Channels_Application.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+replace_application_verify_rose_bug(decompile_dir_path)
+
+# def fix_kupai_android6_crash(decompile_dir):
+#     insert_str_list = [
+#         '\n\t.locals 0\n\n',
+#         '\tinvoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;\n\n',
+#         '\tmove-result-object p0\n\n',
+#         '\treturn-object p0\n\n']
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir):
+#         if r'com\yulong\appdata\a' in dirpath and 'e.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'e.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public static d(Landroid/content/Context;)Ljava/util/Locale;'
+#                 end_method_str = '.end method'
+#                 insert_str = ''.join(insert_str_list)
+#                 on_create_index = 0
+#                 insert_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         insert_index = index
+#                         print('insert_index', index)
+#                         break
+#                 print(on_create_index, insert_index)
+#                 del smali_str_arr[on_create_index + 1:insert_index]
+#                 smali_str_arr.insert(on_create_index + 1, insert_str)
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#                 break
+#
+# fix_kupai_android6_crash(decompile_dir_path)

+ 166 - 0
script/一梦江湖Y-小绵羊.py

@@ -0,0 +1,166 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+
+print("一梦江湖Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+def add_lifecycle_method_for_xmy_fubiao(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\netease\game' in dirpath and 'MessiahNativeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'MessiahNativeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_index_str = r'.method public onResume()V'
+                resume_protected_index_str = r'.method protected onResume()V'
+                resume_insert_str = '\n\tinvoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onResume()V\n\n'
+                pause_insert_str = '\n\tinvoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onPause()V\n\n'
+                pause_index_str = r'.method public onPause()V'
+                pause_protected_index_str = r'.method protected onPause()V'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_index_str in value or resume_protected_index_str in value:
+                        smali_str_arr.insert(index + 2, resume_insert_str)
+                    if pause_index_str in value or pause_protected_index_str in value:
+                        smali_str_arr.insert(index + 2, pause_insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+#解决新版酷派sdk小于3.0版本Android6上闪退问题
+def fix_coolpad_newsdk_lt_3_android6_crash_bug(decompile_dir_path):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tinvoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yulong\appdata\a' in dirpath and 'e.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'e.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static d(Landroid/content/Context;)Ljava/util/Locale;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_coolpad_newsdk_lt_3_android6_crash_bug(decompile_dir_path)
+add_lifecycle_method_for_xmy_fubiao(decompile_dir_path)
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 14 - 0
script/一梦江湖网易-小绵羊.py

@@ -0,0 +1,14 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os.path
+import shutil
+import sys
+
+print("一梦江湖网易-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+support_path = os.path.join(decompile_dir_path, 'smali\\android\\support')
+if 'multidex' not in os.listdir(support_path):
+    shutil.copytree(os.path.join(r'D:\special_problem\multidex'), os.path.join(support_path, 'multidex'))

+ 135 - 0
script/一起来修仙Y-小绵羊.py

@@ -0,0 +1,135 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("一起来修仙Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def copy_new_sdk_delay_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_smali_kf()
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 146 - 0
script/七七捕鱼Y-FAKE.py

@@ -0,0 +1,146 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("七七捕鱼Y-酷派fake")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_install_fail_bug(decompile_dir_path)
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 146 - 0
script/七七捕鱼Y-小绵羊.py

@@ -0,0 +1,146 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("七七捕鱼Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_install_fail_bug(decompile_dir_path)
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 146 - 0
script/七七捕鱼Y-朱雀.py

@@ -0,0 +1,146 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("七七捕鱼Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_install_fail_bug(decompile_dir_path)
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 47 - 0
script/万世镜Y-FAKE.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("万世镜Y-酷派FAKE")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 63 - 0
script/万世镜Y-小绵羊.py

@@ -0,0 +1,63 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("万世镜Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+def copy_new_sdk_delay_fail_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成延迟还是不行就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_fail_smali_kf()

+ 47 - 0
script/万世镜Y-朱雀.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("万世镜Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 114 - 0
script/三国云梦录Y-FAKE.py

@@ -0,0 +1,114 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import os
+import shutil
+import sys
+import xml.etree.ElementTree as ET
+import yaml
+
+print("三国云梦录Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_android8_bug_fake(decompile_dir):
+    style_xml_path = os.path.join(decompile_dir, 'res', 'values', 'styles.xml')
+    xml_tree = ET.parse(style_xml_path)
+    xml_root = xml_tree.getroot()
+    style_roots = xml_root.findall('./style')
+    for style_root in style_roots:
+        if style_root.get('name') == 'ydzs_splash_translucent':
+            items = style_root.findall('./item')
+            for item in items:
+                print('item name', item.get('name'))
+                print(item.findtext('.'))
+                if item.get('name') == 'android:windowIsTranslucent':
+                    item.text = 'false'
+            xml_tree.write(style_xml_path, encoding='utf-8', xml_declaration=True)
+            break
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    act_list = xml_root.findall('.//activity')
+    for act in act_list:
+        act_name = act.get(f'{namespace}name')
+        print(act_name)
+        if 'com.wanwu.sdkkit.gameplatform.paysdk.view.activity.CoolPaySDKActivity' == act_name:
+            act_theme = act.get(f'{namespace}theme')
+            print('act_theme', act_theme)
+            act.set(f'{namespace}theme', '@style/ydzs_splash_translucent')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_android8_bug_fake(decompile_dir_path)
+
+# 删除arm64
+lib_path = os.path.join(decompile_dir_path, 'res','drawable-anydpi-v26')
+if os.path.exists(lib_path):
+    print(lib_path)
+    shutil.rmtree(lib_path)
+
+lib_path = os.path.join(decompile_dir_path, 'res','mipmap-anydpi-v26')
+if os.path.exists(lib_path):
+    print(lib_path)
+    shutil.rmtree(lib_path)
+
+def fix_roundIcon():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}roundIcon')
+    if etract_value is not None:
+        print("roundIcon:", etract_value)
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}roundIcon', '@mipmap/icon')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_roundIcon()
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+for dirpath,dirnames,filenames in os.walk(decompile_dir_path):
+    if r'com\youzu\gamexy' in dirpath and 'Game.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'Game.smali')
+        print(smali_path)
+        with open(smali_path,'r') as f:
+            smali_str_arr = f.readlines()
+            for line in smali_str_arr:
+                if 'invoke-static {p0}, Lcom/youzu/gamexy/Game;->Init(Landroid/content/Context;)V' in line:
+                    smali_str_arr[smali_str_arr.index(line)] = '\t#invoke-static {p0}, Lcom/youzu/gamexy/Game;->Init(Landroid/content/Context;)V\n'
+
+        with open(smali_path,'w') as f:
+            f.write(''.join(smali_str_arr))

+ 115 - 0
script/三国云梦录Y-小绵羊.py

@@ -0,0 +1,115 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import os
+import shutil
+import sys
+import xml.etree.ElementTree as ET
+import yaml
+
+print("三国云梦录Y-")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# Android8.0闪退  Only fullscreen opaque activities can request orientation
+def fix_android8_bug(decompile_dir):
+    style_xml_path = os.path.join(decompile_dir, 'res', 'values', 'styles.xml')
+    xml_tree = ET.parse(style_xml_path)
+    xml_root = xml_tree.getroot()
+    style_roots = xml_root.findall('./style')
+    for style_root in style_roots:
+        if style_root.get('name') == 'kf_splash_translucent':
+            items = style_root.findall('./item')
+            for item in items:
+                print('item name', item.get('name'))
+                print(item.findtext('.'))
+                if item.get('name') == 'android:windowIsTranslucent':
+                    item.text = 'false'
+            xml_tree.write(style_xml_path, encoding='utf-8', xml_declaration=True)
+            break
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    act_list = xml_root.findall('.//activity')
+    for act in act_list:
+        act_name = act.get(f'{namespace}name')
+        print(act_name)
+        if 'com.yog.kothoth.view.activity.SSShoppingMallActivity' == act_name or 'com.yog.kothoth.view.activity.SSRechargeActivity' == act_name:
+            act_theme = act.get(f'{namespace}theme')
+            print('act_theme', act_theme)
+            act.set(f'{namespace}theme', '@style/kf_splash_translucent')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_android8_bug(decompile_dir_path)
+
+# 删除arm64
+lib_path = os.path.join(decompile_dir_path, 'res','drawable-anydpi-v26')
+if os.path.exists(lib_path):
+    print(lib_path)
+    shutil.rmtree(lib_path)
+
+lib_path = os.path.join(decompile_dir_path, 'res','mipmap-anydpi-v26')
+if os.path.exists(lib_path):
+    print(lib_path)
+    shutil.rmtree(lib_path)
+
+def fix_roundIcon():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}roundIcon')
+    if etract_value is not None:
+        print("roundIcon:", etract_value)
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}roundIcon', '@mipmap/icon')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_roundIcon()
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+for dirpath,dirnames,filenames in os.walk(decompile_dir_path):
+    if r'com\youzu\gamexy' in dirpath and 'Game.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'Game.smali')
+        print(smali_path)
+        with open(smali_path,'r') as f:
+            smali_str_arr = f.readlines()
+            for line in smali_str_arr:
+                if 'invoke-static {p0}, Lcom/youzu/gamexy/Game;->Init(Landroid/content/Context;)V' in line:
+                    smali_str_arr[smali_str_arr.index(line)] = '\t#invoke-static {p0}, Lcom/youzu/gamexy/Game;->Init(Landroid/content/Context;)V\n'
+
+        with open(smali_path,'w') as f:
+            f.write(''.join(smali_str_arr))

+ 114 - 0
script/三国云梦录Y-朱雀.py

@@ -0,0 +1,114 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import os
+import shutil
+import sys
+import xml.etree.ElementTree as ET
+import yaml
+
+print("三国云梦录Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_android8_bug_rose(decompile_dir):
+    style_xml_path = os.path.join(decompile_dir, 'res', 'values', 'styles.xml')
+    xml_tree = ET.parse(style_xml_path)
+    xml_root = xml_tree.getroot()
+    style_roots = xml_root.findall('./style')
+    for style_root in style_roots:
+        if style_root.get('name') == 'ydzs_splash_translucent':
+            items = style_root.findall('./item')
+            for item in items:
+                print('item name', item.get('name'))
+                print(item.findtext('.'))
+                if item.get('name') == 'android:windowIsTranslucent':
+                    item.text = 'false'
+            xml_tree.write(style_xml_path, encoding='utf-8', xml_declaration=True)
+            break
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    act_list = xml_root.findall('.//activity')
+    for act in act_list:
+        act_name = act.get(f'{namespace}name')
+        print(act_name)
+        if 'com.wanwu.sdkkit.gameplatform.activity.RechargeActivity' == act_name:
+            act_theme = act.get(f'{namespace}theme')
+            print('act_theme', act_theme)
+            act.set(f'{namespace}theme', '@style/ydzs_splash_translucent')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_android8_bug_rose(decompile_dir_path)
+
+# 删除arm64
+lib_path = os.path.join(decompile_dir_path, 'res','drawable-anydpi-v26')
+if os.path.exists(lib_path):
+    print(lib_path)
+    shutil.rmtree(lib_path)
+
+lib_path = os.path.join(decompile_dir_path, 'res','mipmap-anydpi-v26')
+if os.path.exists(lib_path):
+    print(lib_path)
+    shutil.rmtree(lib_path)
+
+def fix_roundIcon():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}roundIcon')
+    if etract_value is not None:
+        print("roundIcon:", etract_value)
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}roundIcon', '@mipmap/icon')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_roundIcon()
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+for dirpath,dirnames,filenames in os.walk(decompile_dir_path):
+    if r'com\youzu\gamexy' in dirpath and 'Game.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'Game.smali')
+        print(smali_path)
+        with open(smali_path,'r') as f:
+            smali_str_arr = f.readlines()
+            for line in smali_str_arr:
+                if 'invoke-static {p0}, Lcom/youzu/gamexy/Game;->Init(Landroid/content/Context;)V' in line:
+                    smali_str_arr[smali_str_arr.index(line)] = '\t#invoke-static {p0}, Lcom/youzu/gamexy/Game;->Init(Landroid/content/Context;)V\n'
+
+        with open(smali_path,'w') as f:
+            f.write(''.join(smali_str_arr))

+ 56 - 0
script/三国吧兄弟Y-FAKE.py

@@ -0,0 +1,56 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("三国吧兄弟Y-酷派fake")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_cleartexttraffic():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}usesCleartextTraffic')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}usesClearextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+    elif etract_value is None:
+        application_node.set(f'{namespace}usesCleartextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+
+fix_cleartexttraffic()
+def fix_fake_recharge_screen_orientation_portrait(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    activity_nodes = xml_root.findall('.//activity')
+    print(activity_nodes)
+    for activity_node in activity_nodes:
+        print(activity_node.attrib)
+        activity_name = activity_node.get(f'{namespace}name')
+        print(activity_name)
+        if 'com.wanwu.sdkkit.gameplatform.paysdk.view.activity.CoolPaySDKActivity' == activity_name:
+            activity_node.set(f'{namespace}screenOrientation', 'portrait')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_fake_recharge_screen_orientation_portrait(decompile_dir_path)

+ 88 - 0
script/三国吧兄弟Y-小绵羊.py

@@ -0,0 +1,88 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("三国吧兄弟Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+def fix_kf_not_show_fubiao_permission(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity.smali'),
+                        htprotect_dir_path)
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity$1.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity$1.smali'),
+                        htprotect_dir_path)
+
+fix_kf_not_show_fubiao_permission(decompile_dir_path)
+
+def fix_cleartexttraffic():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}usesCleartextTraffic')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}usesClearextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+    elif etract_value is None:
+        application_node.set(f'{namespace}usesCleartextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+
+fix_cleartexttraffic()
+
+def copy_new_sdk_delay_fail_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成延迟还是不行就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+# copy_new_sdk_delay_fail_smali_kf()
+
+def fix_xmy_recharge_screen_orientation_portrait(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    activity_nodes = xml_root.findall('.//activity')
+    print(activity_nodes)
+    for activity_node in activity_nodes:
+        print(activity_node.attrib)
+        activity_name = activity_node.get(f'{namespace}name')
+        print(activity_name)
+        if 'com.yog.kothoth.view.activity.SSRechargeActivity' == activity_name:
+            activity_node.set(f'{namespace}screenOrientation', 'portrait')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_xmy_recharge_screen_orientation_portrait(decompile_dir_path)

+ 73 - 0
script/三国吧兄弟Y-朱雀.py

@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("三国吧兄弟Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_cleartexttraffic():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}usesCleartextTraffic')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}usesClearextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+    elif etract_value is None:
+        application_node.set(f'{namespace}usesCleartextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_cleartexttraffic()
+
+# 拷贝新版酷派延迟
+def copy_new_sdk_delay_smali_rose():
+    promoter_path = os.path.join(decompile_dir_path, 'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派云端初始化未完成就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        # os.makedirs(promoter_path)
+        shutil.copytree(delay_login_path, promoter_path)
+
+# copy_new_sdk_delay_smali_rose()
+def fix_rose_recharge_screen_orientation_portrait(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    activity_nodes = xml_root.findall('.//activity')
+    print(activity_nodes)
+    for activity_node in activity_nodes:
+        print(activity_node.attrib)
+        activity_name = activity_node.get(f'{namespace}name')
+        print(activity_name)
+        if 'com.wanwu.sdkkit.gameplatform.activity.RechargeActivity' == activity_name:
+            activity_node.set(f'{namespace}screenOrientation', 'portrait')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_rose_recharge_screen_orientation_portrait(decompile_dir_path)

Разлика између датотеке није приказан због своје велике величине
+ 144 - 0
script/三国战纪2Y-FAKE.py


Разлика између датотеке није приказан због своје велике величине
+ 234 - 0
script/三国战纪2Y-小绵羊.py


Разлика између датотеке није приказан због своје велике величине
+ 144 - 0
script/三国战纪2Y-朱雀.py


+ 47 - 0
script/三国杀Y-九狐.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("三国杀Y-九狐")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

Разлика између датотеке није приказан због своје велике величине
+ 208 - 0
script/三国杀Y-小绵羊.py


+ 47 - 0
script/三国杀Y-朱雀.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("三国杀Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 173 - 0
script/三国杀名将传Y-小绵羊.py

@@ -0,0 +1,173 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import shutil
+import sys
+import zipfile
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+
+print("三国杀名将传Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+game_dir = sys.argv[2]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)
+
+
+def un_zip_and_copy_39285EFA(game_dir):
+    game_name = ''
+    for name in os.listdir(game_dir):
+        if '小绵羊' not in name and '朱雀' not in name:
+            game_name = name
+            print(game_name)
+    if game_name == '':
+        raise Exception('让客服放入原包')
+    file_name = os.path.join(game_dir, game_name)
+    print(file_name)
+    yb_unzip_path = r"D:\work\yb_files"
+    zip_file = zipfile.ZipFile(file_name)
+    if os.path.isdir(file_name + "_files"):
+        pass
+    else:
+        print('Problem occurred during generating libdoc for', os.mkdir(yb_unzip_path))
+    for names in zip_file.namelist():
+        zip_file.extract(names, yb_unzip_path)
+    zip_file.close()
+    shutil.copy(os.path.join(yb_unzip_path, 'assets', '39285EFA.dex'), os.path.join(decompile_dir_path, 'assets'))
+    shutil.rmtree(yb_unzip_path)
+
+
+# un_zip_and_copy_39285EFA(game_dir)
+

+ 173 - 0
script/三国杀名将传Y-朱雀.py

@@ -0,0 +1,173 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import shutil
+import sys
+import zipfile
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+
+print("三国杀名将传Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+game_dir = sys.argv[2]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)
+
+
+def un_zip_and_copy_39285EFA(game_dir):
+    game_name = ''
+    for name in os.listdir(game_dir):
+        if '小绵羊' not in name and '朱雀' not in name:
+            game_name = name
+            print(game_name)
+    if game_name == '':
+        raise Exception('让客服放入原包')
+    file_name = os.path.join(game_dir, game_name)
+    print(file_name)
+    yb_unzip_path = r"D:\work\yb_files"
+    zip_file = zipfile.ZipFile(file_name)
+    if os.path.isdir(file_name + "_files"):
+        pass
+    else:
+        print('Problem occurred during generating libdoc for', os.mkdir(yb_unzip_path))
+    for names in zip_file.namelist():
+        zip_file.extract(names, yb_unzip_path)
+    zip_file.close()
+    shutil.copy(os.path.join(yb_unzip_path, 'assets', '39285EFA.dex'), os.path.join(decompile_dir_path, 'assets'))
+    shutil.rmtree(yb_unzip_path)
+
+
+# un_zip_and_copy_39285EFA(game_dir)
+

+ 55 - 0
script/三国计Y-FAKE.py

@@ -0,0 +1,55 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("三国计Y-FAKE")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_ydzs_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/ydzs/framework/YDZSApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/ydzs/framework/YDZSApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\ydzs\framework' in dirpath and 'YDZSApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YDZSApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/ydzs/framework/YDZSApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+
+fix_ydzs_application_getinstance_null_bug(decompile_dir_path)

+ 54 - 0
script/三国计Y-小绵羊.py

@@ -0,0 +1,54 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("三国计Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_kf_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/kf/framework/KFApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/kf/framework/KFApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\kf\framework' in dirpath and 'KFApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'KFApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/kf/framework/KFApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_kf_application_getinstance_null_bug(decompile_dir_path)

+ 92 - 0
script/三国计Y-朱雀.py

@@ -0,0 +1,92 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("三国计Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yyh\sdk' in dirpath and 'YYHApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "YYHApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+replace_application_verify_rose_bug(decompile_dir_path)
+
+def fix_ydzs_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/ydzs/framework/YDZSApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/ydzs/framework/YDZSApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\ydzs\framework' in dirpath and 'YDZSApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YDZSApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/ydzs/framework/YDZSApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_ydzs_application_getinstance_null_bug(decompile_dir_path)

+ 52 - 0
script/不朽大陆Y-小绵羊.py

@@ -0,0 +1,52 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("不朽大陆Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def delete_logout_method():
+    insert_str_list = [
+        '\n\t.locals 0\n\n',
+        '\treturn-void\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public logout()V'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+delete_logout_method()

+ 180 - 0
script/不良人3Y-小绵羊.py

@@ -0,0 +1,180 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import os
+import shutil
+import sys
+import xml.etree.ElementTree as ET
+
+import yaml
+
+print("不良人3Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+plyog_path = os.path.join(decompile_dir_path, 'assets', 'plyog')
+if os.path.exists(plyog_path):
+    shutil.rmtree(plyog_path)
+
+# 注释掉Lcom/denachina/kupai/KuPaiUtility$1中的onError方法里面的内容
+def delete_logout_method():
+    insert_str_list = [
+        '\n\t.locals 0\n\n',
+        '\treturn-void\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public logout()V'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+delete_logout_method()
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 41 - 0
script/不良人3Y-朱雀.py

@@ -0,0 +1,41 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import os
+import sys
+import xml.etree.ElementTree as ET
+
+import yaml
+
+print("不良人3Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 170 - 0
script/东方归言录Y-小绵羊.py

@@ -0,0 +1,170 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("东方归言录Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)
+
+def add_lifecycle_method_for_xmy_fubiao(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\unity3d\player' in dirpath and 'UnityPlayerActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UnityPlayerActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_index_str = r'.method public onResume()V'
+                resume_protected_index_str = r'.method protected onResume()V'
+                resume_insert_str = '\n\tinvoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onResume()V\n\n'
+                pause_insert_str = '\n\tinvoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onPause()V\n\n'
+                pause_index_str = r'.method public onPause()V'
+                pause_protected_index_str = r'.method protected onPause()V'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_index_str in value or resume_protected_index_str in value:
+                        smali_str_arr.insert(index+2, resume_insert_str)
+                    if pause_index_str in value or pause_protected_index_str in value:
+                        smali_str_arr.insert(index+2, pause_insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+add_lifecycle_method_for_xmy_fubiao(decompile_dir_path)

+ 35 - 0
script/中职篮全力以赴Y-小绵羊.py

@@ -0,0 +1,35 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("中职篮全力以赴Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_kf_not_show_fubiao_permission(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity.smali'),
+                        htprotect_dir_path)
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity$1.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity$1.smali'),
+                        htprotect_dir_path)
+
+fix_kf_not_show_fubiao_permission(decompile_dir_path)

+ 159 - 0
script/九天封神Y-小绵羊.py

@@ -0,0 +1,159 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("九天封神Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_kf_replace_application(line):
+    return '.super Lcom/kf/framework/KFApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/kf/framework/KFApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onCreate()V' in line
+
+def replace_application_verify_xmy_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\quicksdk\apiadapter\kupai' in dirpath and 'ChannelApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "ChannelApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_kf_replace_application(line) and 'Lcom/kf/framework/KFApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/kf/framework/KFApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/kf/framework/KFApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+replace_application_verify_xmy_bug(decompile_dir_path)
+
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 59 - 0
script/九天封神Y-朱雀.py

@@ -0,0 +1,59 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("九天封神Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\quicksdk\apiadapter\kupai' in dirpath and 'ChannelApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "ChannelApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+
+replace_application_verify_rose_bug(decompile_dir_path)

+ 128 - 0
script/九州仙剑传Y-小绵羊.py

@@ -0,0 +1,128 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("九州仙剑传Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)
+
+
+
+def del_old_coolcloud_fix_login_fail(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        # print(dirnames)
+        for dirname in dirnames:
+            if dirname == 'coolcloud':
+                coolcloud_path = os.path.join(dirpath,dirname)
+                print(coolcloud_path)
+                shutil.rmtree(coolcloud_path)
+                shutil.copytree(r'D:\special_problem\老版本酷派快发初始化未完成就登录\coolcloud', coolcloud_path)
+
+del_old_coolcloud_fix_login_fail(decompile_dir_path)
+
+def open_old_coolcloud_accesstoken():
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\coolcloud\uac\android\api' in dirpath and 'Coolcloud.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'Coolcloud.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method static constructor <clinit>()V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+open_old_coolcloud_accesstoken()
+
+def fix_old_kupai_recharge_phone_permission_crash(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tconst-string v0, ""\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\android\paysdk\base\b\c' in dirpath and 'e.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'e.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static b(Landroid/content/Context;)Ljava/lang/String;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_old_kupai_recharge_phone_permission_crash(decompile_dir_path)

+ 97 - 0
script/九州仙剑传Y-朱雀.py

@@ -0,0 +1,97 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("九州仙剑传Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+
+def del_old_coolcloud_fix_login_fail(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        # print(dirnames)
+        for dirname in dirnames:
+            if dirname == 'coolcloud':
+                coolcloud_path = os.path.join(dirpath,dirname)
+                print(coolcloud_path)
+                shutil.rmtree(coolcloud_path)
+                shutil.copytree(r'D:\special_problem\老版本酷派云端初始化未完成就登录\coolcloud', coolcloud_path)
+
+del_old_coolcloud_fix_login_fail(decompile_dir_path)
+
+def open_old_coolcloud_accesstoken():
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\coolcloud\uac\android\api' in dirpath and 'Coolcloud.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'Coolcloud.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method static constructor <clinit>()V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+open_old_coolcloud_accesstoken()
+
+def fix_old_kupai_recharge_phone_permission_crash(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tconst-string v0, ""\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\android\paysdk\base\b\c' in dirpath and 'e.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'e.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static b(Landroid/content/Context;)Ljava/lang/String;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_old_kupai_recharge_phone_permission_crash(decompile_dir_path)

+ 28 - 0
script/九州天空城Y-小绵羊.py

@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import shutil
+import sys
+
+import yaml
+
+print("九州天空城Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+support_path = os.path.join(decompile_dir_path, 'smali\\android\\support')
+if 'multidex' not in os.listdir(support_path):
+    shutil.copytree(os.path.join(r'D:\special_problem\multidex'), os.path.join(support_path, 'multidex'))
+
+yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+file = open(yaml_path, 'r', encoding='utf-8')
+yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+sdk_info = yaml_result['sdkInfo']
+yaml_result['packageInfo']['renameManifestPackage'] = None
+print(sdk_info)
+sdk_info['targetSdkVersion'] = '25'
+print(sdk_info)
+file.close()
+with open(yaml_path, 'w', encoding='utf-8') as f:
+    yaml.dump(yaml_result, f)

+ 24 - 0
script/九州天空城Y-朱雀.py

@@ -0,0 +1,24 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+import shutil
+
+import yaml
+
+print("九州天空城Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+file = open(yaml_path, 'r', encoding='utf-8')
+yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+sdk_info = yaml_result['sdkInfo']
+yaml_result['packageInfo']['renameManifestPackage'] = None
+print(sdk_info)
+sdk_info['targetSdkVersion'] = '25'
+print(sdk_info)
+file.close()
+with open(yaml_path, 'w', encoding='utf-8') as f:
+    yaml.dump(yaml_result, f)

+ 169 - 0
script/九灵神域Y-小绵羊.py

@@ -0,0 +1,169 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("九灵神域Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+developer_path = os.path.join(decompile_dir_path, 'assets', 'developer.properties')
+print(developer_path)
+with open(developer_path, 'r', encoding='utf-8') as f:
+    smali_str_arr = f.readlines()
+    for line in smali_str_arr:
+        if 'isRealname' in line:
+            smali_str_arr[smali_str_arr.index(line)] = line.replace('1', '0')
+            break
+with open(developer_path, 'w', encoding='utf-8') as f:
+    f.write(''.join(smali_str_arr))
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_kf_replace_application(line):
+    return '.super Lcom/kf/framework/KFApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/kf/framework/KFApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onCreate()V' in line
+
+def replace_application_verify_xmy_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\leniu\coolpad' in dirpath and 'CoolpadApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "CoolpadApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_kf_replace_application(line) and 'Lcom/kf/framework/KFApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/kf/framework/KFApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/kf/framework/KFApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+replace_application_verify_xmy_bug(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 58 - 0
script/九灵神域Y-朱雀.py

@@ -0,0 +1,58 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("九灵神域Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\leniu\coolpad' in dirpath and 'CoolpadApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "CoolpadApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+replace_application_verify_rose_bug(decompile_dir_path)

+ 115 - 0
script/九阴-朱雀.py

@@ -0,0 +1,115 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import logging
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("九阴-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+
+def bat_rename(cur_dir, pairs):
+    if os.path.isdir(cur_dir):
+        for fn in os.listdir(cur_dir):
+            # newfn = multi_replace(fn, pairs)
+            # if newfn != fn:
+            #     if "assets" not in cur_dir \
+            #             or ("com" in cur_dir and "kfsdk" in cur_dir) \
+            #             or ("com" in cur_dir and "kf" in cur_dir and "framework" in cur_dir) \
+            #             or ("com" in cur_dir and "kf" in cur_dir and "utils" in cur_dir) \
+            #             or ("com" in cur_dir and "kf" in cur_dir and "widget" in cur_dir) \
+            #             or ("com" in cur_dir and "android" in cur_dir) \
+            #             or ("com" in cur_dir and "hyzh" in cur_dir) \
+            #             or ("res" in cur_dir and "assets" not in cur_dir):
+            #         str_rename_info = "Renames %s to %s in %s." % (fn, newfn, cur_dir)
+            #         print_and_store_info(str_rename_info)
+                    # if not os.path.exists(os.path.join(cur_dir, newfn)):
+                    #     os.rename(os.path.join(cur_dir, fn), os.path.join(cur_dir, newfn))
+            file_catch = os.path.join(cur_dir, fn)
+            if os.path.isdir(file_catch):
+                bat_rename(file_catch, pairs)
+                continue
+            if (not file_catch.endswith('.smali') and not file_catch.endswith('.xml') and not file_catch.endswith(
+                    ".properties")) \
+                    or 'neox_g18.xml' in file_catch \
+                    or ('original' in file_catch and 'AndroidManifest.xml' in file_catch):
+                continue
+            text = open(file_catch, "r", encoding='utf-8').read()
+            new_text = multi_replace(text, pairs)
+            if new_text != text:
+                if "SdkKuaiFa" in file_catch \
+                        or "NtSdkApplication" in file_catch\
+                        or "CPlatformSupport" in file_catch\
+                        or "SnailApplication" in file_catch:
+                    str_rename_text = "Renames %s." % (file_catch,)
+                    print_and_store_info(str_rename_text)
+                    open(file_catch, 'w', encoding='utf-8').write(new_text)
+
+    else:
+        if not os.path.exists(cur_dir):
+            return
+        if not cur_dir.endswith('.smali') and not cur_dir.endswith('.xml') and not cur_dir.endswith(".properties"):
+            return
+        text = open(cur_dir, "r", encoding='utf-8').read()
+        new_text = multi_replace(text, pairs)
+        if new_text != text:
+            if ("com" in cur_dir and "ydzssdk" in cur_dir) \
+                    or ("com" in cur_dir and ("ydzs" in cur_dir or "kf" in cur_dir) and "framework" in cur_dir) \
+                    or ("com" in cur_dir and ("ydzs" in cur_dir or "kf" in cur_dir) and "utils" in cur_dir) \
+                    or ("com" in cur_dir and ("ydzs" in cur_dir or "kf" in cur_dir) and "widget" in cur_dir) \
+                    or ("com" in cur_dir and "android" in cur_dir) \
+                    or ("res" in cur_dir and "assets" not in cur_dir) \
+                    or "SdkKuaiFa" in cur_dir \
+                    or "NtSdkApplication" in cur_dir \
+                    or "SnailApplication" in cur_dir \
+                    or "CPlatformSupport" in cur_dir \
+                    or "AndroidManifest" in cur_dir \
+                    or "developer" in cur_dir:
+                str_rename_text = "Renames %s." % (cur_dir,)
+                print_and_store_info(str_rename_text)
+                open(cur_dir, 'w').write(new_text)
+
+
+def code_rename(target_dir):
+    print_and_store_info('start code_rename')
+    if not os.listdir(target_dir):
+        print('error mother package is empty!')
+        logging.error('Error mother package is empty exit!')
+        return False
+    bat_rename(target_dir, {'HJR_GAMEKEY': 'LY_GAMEKEY'})
+    bat_rename(target_dir, {'HJR_CHANNEL': 'LY_CHANNEL'})
+    bat_rename(target_dir, {'kf': 'ydzs'})
+    bat_rename(target_dir, {'KF': 'YDZS'})
+    bat_rename(target_dir, {'kf': 'ydzs'})
+    bat_rename(target_dir, {'KF': 'YDZS'})
+    bat_rename(target_dir, {'http://z.kuaifazs.com': 'http://z.nkfzs.com'})
+    bat_rename(target_dir, {'http://d.kuaifazs.com': 'http://d.nkfzs.com'})
+    bat_rename(target_dir, {'ydzstoydzs': 'YDZS'})
+    print_and_store_info('end code_rename')
+
+
+def print_and_store_info(info=str):
+    print(info)
+    logging.info(info)
+
+
+def multi_replace(text, adict):
+    rx = re.compile('|'.join(map(re.escape, adict)))
+
+    def xlat(match):
+        return adict[match.group(0)]
+
+    return rx.sub(xlat, text)
+
+code_rename(decompile_dir_path)

+ 51 - 0
script/九阴真经3D-遥望.py

@@ -0,0 +1,51 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+
+import yaml
+
+print("九阴真经3D-遥望")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+arm64_path = os.path.join(decompile_dir_path, 'lib', 'arm64-v8a')
+cmd_copy_arm64 = rf'copy D:\special_problem\小绵羊arm64\libkuaifa.so {arm64_path}'
+os.system(cmd_copy_arm64)
+
+# 修改minSdkVersion
+yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+file = open(yaml_path, 'r', encoding='utf-8')
+yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+sdk_info = yaml_result['sdkInfo']
+yaml_result['packageInfo']['renameManifestPackage'] = None
+print(sdk_info)
+sdk_info['targetSdkVersion'] = '26'
+print(sdk_info)
+file.close()
+with open(yaml_path, 'w', encoding='utf-8') as f:
+    yaml.dump(yaml_result, f)
+
+insert_str_list = [
+        '\n\tinvoke-static {}, Ljava/lang/System;->currentTimeMillis()J\n\n',
+        '\tmove-result-wide v0\n\n',
+        '\tsput-wide v0, Lcom/kf/framework/AgentOfyaodian;->lastClickTime:J\n']
+for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+    if r'com\kf\framework' in dirpath and 'AgentOfyaodian.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'AgentOfyaodian.smali')
+        print(smali_path)
+        with open(smali_path, 'r', encoding='utf-8') as f:
+            smali_str_arr = f.readlines()
+            index_str = r'postDelayed'
+            insert_str = ''.join(insert_str_list)
+            on_create_index = 0
+            for line in smali_str_arr:
+                if index_str in line:
+                    on_create_index = smali_str_arr.index(line)
+                    print('on_create_index', on_create_index, line)
+                    break
+            print(on_create_index)
+            smali_str_arr.insert(on_create_index + 1, insert_str)
+        with open(smali_path, 'w', encoding='utf-8') as f:
+            f.write(''.join(smali_str_arr))

+ 51 - 0
script/九阴真经3D其他CP-小绵羊.py

@@ -0,0 +1,51 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+
+print("九阴真经3D其他CP-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def add_lifecycle_method_for_fubiao(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\snailgames\templateapplication' in dirpath and 'MainActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'MainActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_index_str = r'.method public onResume()V'
+                resume_insert_str = '\n\tinvoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onResume()V\n\n'
+                pause_insert_str = '\n\tinvoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onPause()V\n\n'
+                pause_index_str = r'.method public onPause()V'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_index_str in value:
+                        smali_str_arr.insert(index+2, resume_insert_str)
+                    if pause_index_str in value:
+                        smali_str_arr.insert(index+2, pause_insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+add_lifecycle_method_for_fubiao(decompile_dir_path)
+
+insert_str_list = [
+        '\n\tconst/4 v1, 0x7\n']
+for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+    if r'com\kf\framework' in dirpath and 'AgentOfsmallsheep$1.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'AgentOfsmallsheep$1.smali')
+        print(smali_path)
+        with open(smali_path, 'r', encoding='utf-8') as f:
+            smali_str_arr = f.readlines()
+            index_str = r'\u6ce8\u9500\u6210\u529f!'
+            insert_str = ''.join(insert_str_list)
+            on_create_index = 0
+            for line in smali_str_arr:
+                if index_str in line:
+                    on_create_index = smali_str_arr.index(line)
+                    print('on_create_index', on_create_index, line)
+                    break
+            print(on_create_index)
+            smali_str_arr.insert(on_create_index + 1, insert_str)
+        with open(smali_path, 'w', encoding='utf-8') as f:
+            f.write(''.join(smali_str_arr))

+ 54 - 0
script/乱世终结战Y-小绵羊.py

@@ -0,0 +1,54 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("乱世终结战Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_kf_not_show_fubiao_permission(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity.smali'),
+                        htprotect_dir_path)
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity$1.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity$1.smali'),
+                        htprotect_dir_path)
+
+fix_kf_not_show_fubiao_permission(decompile_dir_path)
+
+# 拷贝新版酷派sdk小绵羊浮标不显示
+def copy_new_sdk_kf_float_not_display():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派SDK小绵羊浮标不显示\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        # os.makedirs(promoter_path)
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_kf_float_not_display()
+

+ 37 - 0
script/乱世终结战Y-朱雀.py

@@ -0,0 +1,37 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("乱世终结战Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+
+def copy_new_sdk_rose_float_not_display():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派SDK朱雀浮标不显示\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        # os.makedirs(promoter_path)
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_rose_float_not_display()

+ 19 - 0
script/乱世终结战Y-酷派FAKE.py

@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("template脚本")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)

+ 51 - 0
script/云上城之歌其他cp-朱雀.py

@@ -0,0 +1,51 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("云上城之歌其他cp-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31():
+    game_dir = sys.argv[2]
+    yb_decode_path = r'D:\work\game_yb'
+    game_name = ''
+    if not os.path.exists(yb_decode_path):
+        for name in os.listdir(game_dir):
+            if '小绵羊' not in name and '朱雀' not in name and 'FAKE' not in name:
+                game_name = name
+                print(game_name)
+        if game_name == '':
+            raise Exception('让客服放入原包')
+        yb_path = os.path.join(game_dir, game_name)
+        print(yb_path)
+        cmd_decode_yb = f'apktool d {yb_path} -f -o {yb_decode_path} --only-main-classes'
+        os.system(cmd_decode_yb)
+    else:
+        print('yb_decode_path is exists', yb_decode_path)
+    # 用原包中的abc_screen_simple、abc_screen_content_include、abc_action_menu_item_layout.xml替换小绵包中的
+    # shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    # shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_content_include.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    # shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_action_menu_item_layout.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+
+    yb_public_path = os.path.join(yb_decode_path, "res", "values", "public.xml")
+    build_public_path = os.path.join(decompile_dir_path,  "res", "values", "public.xml")
+    cmd_run_refresh_resource = rf'python F:\python_learn\day_1\learn\refresh_resource_qmpp_rose.py {yb_public_path} {build_public_path} {decompile_dir_path}'
+    print(cmd_run_refresh_resource)
+    os.system(cmd_run_refresh_resource)
+
+    shutil.rmtree(yb_decode_path)
+
+decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31()

+ 94 - 0
script/云海寻仙记Y-FAKE.py

@@ -0,0 +1,94 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("云海寻仙记Y-酷派fake")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\quicksdk\apiadapter\kupai' in dirpath and 'ChannelApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "ChannelApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+
+replace_application_verify_rose_bug(decompile_dir_path)
+
+def fix_ydzs_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/ydzs/framework/YDZSApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/ydzs/framework/YDZSApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\ydzs\framework' in dirpath and 'YDZSApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YDZSApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/ydzs/framework/YDZSApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_ydzs_application_getinstance_null_bug(decompile_dir_path)

+ 54 - 0
script/云海寻仙记Y-小绵羊.py

@@ -0,0 +1,54 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("云海寻仙记Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_kf_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/kf/framework/KFApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/kf/framework/KFApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\kf\framework' in dirpath and 'KFApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'KFApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/kf/framework/KFApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_kf_application_getinstance_null_bug(decompile_dir_path)

+ 94 - 0
script/云海寻仙记Y-朱雀.py

@@ -0,0 +1,94 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("云海寻仙记Y-酷派fake")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\quicksdk\apiadapter\kupai' in dirpath and 'ChannelApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "ChannelApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+
+replace_application_verify_rose_bug(decompile_dir_path)
+
+def fix_ydzs_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/ydzs/framework/YDZSApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/ydzs/framework/YDZSApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\ydzs\framework' in dirpath and 'YDZSApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YDZSApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/ydzs/framework/YDZSApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_ydzs_application_getinstance_null_bug(decompile_dir_path)

+ 49 - 0
script/仗剑封魔Y-小绵羊.py

@@ -0,0 +1,49 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("仗剑封魔Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)

+ 35 - 0
script/仙剑奇侠传:新的开始Y-小绵羊.py

@@ -0,0 +1,35 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("仙剑奇侠传:新的开始Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def copy_new_sdk_delay_fail_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成延迟还是不行就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_fail_smali_kf()

+ 80 - 0
script/仙圣奇缘Y-小绵羊.py

@@ -0,0 +1,80 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("仙圣奇缘Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def copy_new_sdk_delay_fail_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成延迟还是不行就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_fail_smali_kf()
+def fix_kf_not_show_fubiao_permission(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity.smali'),
+                        htprotect_dir_path)
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity$1.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity$1.smali'),
+                        htprotect_dir_path)
+
+fix_kf_not_show_fubiao_permission(decompile_dir_path)
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)

+ 47 - 0
script/仙宗大掌门Y-九狐.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("仙宗大掌门Y-九狐")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 47 - 0
script/仙宗大掌门Y-小绵羊.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("仙宗大掌门Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 47 - 0
script/仙宗大掌门Y-朱雀.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("仙宗大掌门Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 19 - 0
script/传说之城Y-酷派FAKE.py

@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("传说之城Y-酷派FAKE")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)

+ 86 - 0
script/作妖记D-朱雀.py

@@ -0,0 +1,86 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("作妖记D-青雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31():
+    game_dir = sys.argv[2]
+    yb_decode_path = r'D:\work\game_yb_rose'
+    aapt2_output_dir = r'D:\work\output_rose'
+    game_name = ''
+    for name in os.listdir(game_dir):
+        if '小绵羊' not in name and '朱雀' not in name:
+            game_name = name
+            print(game_name)
+    if game_name == '':
+        raise Exception('让客服放入原包')
+    yb_path = os.path.join(game_dir, game_name)
+    print(yb_path)
+    cmd_decode_yb = f'apktool d {yb_path} -f -o {yb_decode_path} --only-main-classes'
+    os.system(cmd_decode_yb)
+    # 用原包中的abc_screen_simple、abc_screen_content_include、abc_action_menu_item_layout.xml替换小绵包中的
+    # shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    # shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_content_include.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    # shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_action_menu_item_layout.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    # shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple_overlay_action_mode.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    #删除drawable-v4、mipmap-v4等含有v4的文件夹
+    for res_dir_name in os.listdir(os.path.join(decompile_dir_path, 'res')):
+        if 'v4' in res_dir_name and ('drawable' in res_dir_name or 'mipmap' in res_dir_name):
+            drawable_v4_path = os.path.join(decompile_dir_path, 'res', res_dir_name)
+            print('delete:', drawable_v4_path)
+            shutil.rmtree(drawable_v4_path)
+    # #
+    # colors_xml_path = os.path.join(decompile_dir_path, 'res', 'values-v31', 'colors.xml')
+    # xml_tree = ET.parse(colors_xml_path)
+    # xml_root = xml_tree.getroot()
+    # color_roots = xml_root.findall('./color')
+    # for style_root in color_roots:
+    #     style_root.text = '@android:color/white'
+    # xml_tree.write(colors_xml_path, encoding='utf-8', xml_declaration=True)
+
+    if not os.path.exists(aapt2_output_dir):
+        os.makedirs(aapt2_output_dir)
+        print("make dir:", aapt2_output_dir)
+    # aapt2不支持中文路径,拷贝渠道包res到output
+    shutil.copytree(os.path.join(decompile_dir_path, "res"), os.path.join(aapt2_output_dir, "res"))
+    # 重新编译资源
+    channel_apk_res_path = os.path.join(aapt2_output_dir, "res")
+    aapt2_res_zip_path = os.path.join(aapt2_output_dir, "res.zip")
+    cmd_aapt2_compile = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe compile --dir {channel_apk_res_path} -o {aapt2_res_zip_path} -v'
+    print(cmd_aapt2_compile)
+    os.system(cmd_aapt2_compile)
+    aapt2_apk_path = os.path.join(aapt2_output_dir, "aapt.apk")
+    cmd_aapt2_link = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe link {aapt2_res_zip_path} -I F:\Android\as_sdk\platforms\android-30\android.jar -o {aapt2_apk_path} --manifest {os.path.join(decompile_dir_path, "AndroidManifest.xml")} -v'
+    print(cmd_aapt2_link)
+    os.system(cmd_aapt2_link)
+    cmd_decode_output_apk = rf'apktool d {os.path.join(aapt2_output_dir, "aapt.apk")} -f -o {os.path.join(aapt2_output_dir, "aapt")} --only-main-classes'
+    print(cmd_decode_output_apk)
+    os.system(cmd_decode_output_apk)
+
+    yb_public_path = os.path.join(yb_decode_path, "res", "values", "public.xml")
+    build_public_path = os.path.join(aapt2_output_dir, "aapt", "res", "values", "public.xml")
+    apk_path = decompile_dir_path
+    cmd_run_refresh_resource = rf'python F:\python_learn\day_1\learn\refresh_resource.py {yb_public_path} {build_public_path} {apk_path}'
+    print(cmd_run_refresh_resource)
+    os.system(cmd_run_refresh_resource)
+    shutil.copy(build_public_path, os.path.join(decompile_dir_path, "res", "values"))
+
+    shutil.rmtree(aapt2_output_dir)
+    shutil.rmtree(yb_decode_path)
+
+decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31()

+ 94 - 0
script/倩女幽魂Y-FAKE.py

@@ -0,0 +1,94 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+import xml.etree.ElementTree as ET
+print("倩女幽魂Y-FAKE")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_android8_bug_fake(decompile_dir):
+    style_xml_path = os.path.join(decompile_dir, 'res', 'values', 'styles.xml')
+    xml_tree = ET.parse(style_xml_path)
+    xml_root = xml_tree.getroot()
+    style_roots = xml_root.findall('./style')
+    for style_root in style_roots:
+        if style_root.get('name') == 'ydzs_splash_translucent':
+            items = style_root.findall('./item')
+            for item in items:
+                print('item name', item.get('name'))
+                print(item.findtext('.'))
+                if item.get('name') == 'android:windowIsTranslucent':
+                    item.text = 'false'
+            xml_tree.write(style_xml_path, encoding='utf-8', xml_declaration=True)
+            break
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    act_list = xml_root.findall('.//activity')
+    for act in act_list:
+        act_name = act.get(f'{namespace}name')
+        print(act_name)
+        if 'com.wanwu.sdkkit.gameplatform.paysdk.view.activity.CoolPaySDKActivity' == act_name:
+            act_theme = act.get(f'{namespace}theme')
+            print('act_theme', act_theme)
+            act.set(f'{namespace}theme', '@style/ydzs_splash_translucent')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_android8_bug_fake(decompile_dir_path)
+
+def fix_fake_recharge_screen_orientation(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    activity_nodes = xml_root.findall('.//activity')
+    print(activity_nodes)
+    for activity_node in activity_nodes:
+        print(activity_node.attrib)
+        activity_name = activity_node.get(f'{namespace}name')
+        print(activity_name)
+        if 'com.wanwu.sdkkit.gameplatform.paysdk.view.activity.CoolPaySDKActivity' == activity_name:
+            activity_node.set(f'{namespace}screenOrientation', 'landscape')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_fake_recharge_screen_orientation(decompile_dir_path)
+
+def delete_logout_method():
+    insert_str_list = [
+        '\n\t.locals 0\n\n',
+        '\treturn-void\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public logout()V'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+delete_logout_method()

+ 238 - 0
script/倩女幽魂Y-小绵羊.py

@@ -0,0 +1,238 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+import xml.etree.ElementTree as ET
+print("倩女幽魂Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_xmy_recharge_screen_orientation(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    activity_nodes = xml_root.findall('.//activity')
+    print(activity_nodes)
+    for activity_node in activity_nodes:
+        print(activity_node.attrib)
+        activity_name = activity_node.get(f'{namespace}name')
+        print(activity_name)
+        if 'com.yog.kothoth.view.activity.SSRechargeActivity' == activity_name:
+            activity_node.set(f'{namespace}screenOrientation', 'landscape')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_xmy_recharge_screen_orientation(decompile_dir_path)
+
+# Android8.0闪退  Only fullscreen opaque activities can request orientation
+def fix_android8_bug(decompile_dir):
+    style_xml_path = os.path.join(decompile_dir, 'res', 'values', 'styles.xml')
+    xml_tree = ET.parse(style_xml_path)
+    xml_root = xml_tree.getroot()
+    style_roots = xml_root.findall('./style')
+    for style_root in style_roots:
+        if style_root.get('name') == 'kf_splash_translucent':
+            items = style_root.findall('./item')
+            for item in items:
+                print('item name', item.get('name'))
+                print(item.findtext('.'))
+                if item.get('name') == 'android:windowIsTranslucent':
+                    item.text = 'false'
+            xml_tree.write(style_xml_path, encoding='utf-8', xml_declaration=True)
+            break
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    act_list = xml_root.findall('.//activity')
+    for act in act_list:
+        act_name = act.get(f'{namespace}name')
+        print(act_name)
+        if 'com.yog.kothoth.view.activity.SSShoppingMallActivity' == act_name or 'com.yog.kothoth.view.activity.SSRechargeActivity' == act_name:
+            act_theme = act.get(f'{namespace}theme')
+            print('act_theme', act_theme)
+            act.set(f'{namespace}theme', '@style/kf_splash_translucent')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_android8_bug(decompile_dir_path)
+
+def delete_logout_method():
+    insert_str_list = [
+        '\n\t.locals 0\n\n',
+        '\treturn-void\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public logout()V'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+delete_logout_method()
+
+# developer_path = os.path.join(decompile_dir_path, 'assets', 'developer.properties')
+# print(developer_path)
+# with open(developer_path, 'r', encoding='utf-8') as f:
+#     smali_str_arr = f.readlines()
+#     for line in smali_str_arr:
+#         if 'isRealname' in line:
+#             smali_str_arr[smali_str_arr.index(line)] = line.replace('0', '1')
+#             break
+# with open(developer_path, 'w', encoding='utf-8') as f:
+#     f.write(''.join(smali_str_arr))
+
+# def fix_old_kupai_recharge_phone_permission_crash(decompile_dir):
+#     insert_str_list = [
+#         '\n\t.locals 1\n\n',
+#         '\tconst-string v0, ""\n\n',
+#         '\treturn-object v0\n\n']
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir):
+#         if r'com\yulong\android\paysdk\base\b\c' in dirpath and 'e.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'e.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public static b(Landroid/content/Context;)Ljava/lang/String;'
+#                 end_method_str = '.end method'
+#                 insert_str = ''.join(insert_str_list)
+#                 on_create_index = 0
+#                 insert_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         insert_index = index
+#                         print('insert_index', index)
+#                         break
+#                 print(on_create_index, insert_index)
+#                 del smali_str_arr[on_create_index + 1:insert_index]
+#                 smali_str_arr.insert(on_create_index + 1, insert_str)
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#                 break
+#
+# # 老板sdk取消登录调不起登录并且不需要延迟初始化
+# def fix_old_cancel_login_bug_no_post_delay_login(decompile_dir_path):
+#     insert_str_list = [
+#         '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+#         '\tmove-result-object v0\n\n',
+#         '\tiget-object v1, p0, Lcom/coolcloud/uac/android/api/Coolcloud$3;->val$appctx:Landroid/content/Context;\n\n',
+#         '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+#         if r'com\coolcloud\uac\android\api' in dirpath and 'Coolcloud$3.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'Coolcloud$3.smali')
+#             print(smali_path)
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+#                 end_method_str = 'Lcom/coolcloud/uac/android/api/Coolcloud;->showLog(Ljava/lang/String;)V'
+#                 insert_str = ''.join(insert_str_list)
+#                 on_create_index = 0
+#                 insert_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         insert_index = index
+#                         print('insert_index', index)
+#                         break
+#                 print(on_create_index, insert_index)
+#                 smali_str_arr.insert(insert_index + 1, insert_str)
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#
+#         if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 for line in smali_str_arr:
+#                     if '0x1f4' in line:
+#                         smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+#                         break
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#         if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'UserResult.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+#                 end_method_str = '.end method'
+#                 on_create_index = 0
+#                 insert_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         insert_index = index
+#                         print('insert_index', index)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if on_create_index < index < insert_index:
+#                         if '0x0' in value:
+#                             print(value)
+#                             smali_str_arr[index] = value.replace('0x0', '0x1')
+#                             break
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#
+#         if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public static isFastDoubleClick(J)Z'
+#                 end_method_str = '.end method'
+#                 on_create_index = 0
+#                 insert_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         insert_index = index
+#                         print('insert_index', index)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if on_create_index < index < insert_index:
+#                         if '0x1' in value:
+#                             print(value)
+#                             smali_str_arr[index] = value.replace('0x1', '0x0')
+#                             break
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#
+# fix_old_kupai_recharge_phone_permission_crash(decompile_dir_path)
+# fix_old_cancel_login_bug_no_post_delay_login(decompile_dir_path)

+ 182 - 0
script/倩女幽魂Y-朱雀.py

@@ -0,0 +1,182 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import os
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+
+print("倩女幽魂Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+    # if r'com\ydzs\framework' in dirpath and 'Userrose2$1$1.smali' in filenames:
+    #     smali_path = os.path.join(dirpath, 'Userrose2$1$1.smali')
+    #     print(smali_path)
+    #     with open(smali_path, 'r', encoding='utf-8') as f:
+    #         smali_str_arr = f.readlines()
+    #         index_str = '.method private initParams(Landroid/app/Activity;)V'
+    #         end_method_str = '.end method'
+    #         method_begin_index = 0
+    #         method_end_index = 0
+    #         for line in smali_str_arr:
+    #             if 'getRealnameStatus' in line:
+    #                 smali_str_arr[smali_str_arr.index(line)] = f'#{line}'
+    #                 break
+    #     with open(smali_path, 'w', encoding='utf-8') as f:
+    #         f.write(''.join(smali_str_arr))
+
+    if r'com\ydzs\framework\java' in dirpath and 'YDZSSDKUser.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'YDZSSDKUser.smali')
+        print(smali_path)
+        with open(smali_path, 'r', encoding='utf-8') as f:
+            smali_str_arr = f.readlines()
+            index_str = 'invoke-static {}, Lcom/ydzs/framework/SDKNativeWrapper;->nativeGetRealnameStatus()Ljava/lang/String;'
+            replace_str = '\tinvoke-static {}, Lcom/ydzs/framework/SDKNativeWrapper;->nativeGetRealnameStatus()V\n'
+            for line in smali_str_arr:
+                if index_str in line:
+                    smali_str_arr[smali_str_arr.index(line)] = replace_str
+                    break
+        with open(smali_path, 'w', encoding='utf-8') as f:
+            f.write(''.join(smali_str_arr))
+
+    if r'com\ydzs\framework' in dirpath and 'SDKNativeWrapper.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'SDKNativeWrapper.smali')
+        print(smali_path)
+        with open(smali_path, 'r', encoding='utf-8') as f:
+            smali_str_arr = f.readlines()
+            index_str = '.method public static native nativeGetRealnameStatus()Ljava/lang/String;'
+            replace_str = '.method public static native nativeGetRealnameStatus()V\n'
+            for line in smali_str_arr:
+                if index_str in line:
+                    smali_str_arr[smali_str_arr.index(line)] = replace_str
+                    break
+        with open(smali_path, 'w', encoding='utf-8') as f:
+            f.write(''.join(smali_str_arr))
+
+def fix_rose_recharge_screen_orientation(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    activity_nodes = xml_root.findall('.//activity')
+    print(activity_nodes)
+    for activity_node in activity_nodes:
+        print(activity_node.attrib)
+        activity_name = activity_node.get(f'{namespace}name')
+        print(activity_name)
+        if 'com.wanwu.sdkkit.gameplatform.activity.RechargeActivity' == activity_name:
+            activity_node.set(f'{namespace}screenOrientation', 'landscape')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_rose_recharge_screen_orientation(decompile_dir_path)
+
+def delete_logout_method():
+    insert_str_list = [
+        '\n\t.locals 0\n\n',
+        '\treturn-void\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public logout()V'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+delete_logout_method()
+
+def fix_android8_bug_rose(decompile_dir):
+    style_xml_path = os.path.join(decompile_dir, 'res', 'values', 'styles.xml')
+    xml_tree = ET.parse(style_xml_path)
+    xml_root = xml_tree.getroot()
+    style_roots = xml_root.findall('./style')
+    for style_root in style_roots:
+        if style_root.get('name') == 'ydzs_splash_translucent':
+            items = style_root.findall('./item')
+            for item in items:
+                print('item name', item.get('name'))
+                print(item.findtext('.'))
+                if item.get('name') == 'android:windowIsTranslucent':
+                    item.text = 'false'
+            xml_tree.write(style_xml_path, encoding='utf-8', xml_declaration=True)
+            break
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    act_list = xml_root.findall('.//activity')
+    for act in act_list:
+        act_name = act.get(f'{namespace}name')
+        print(act_name)
+        if 'com.wanwu.sdkkit.gameplatform.activity.RechargeActivity' == act_name:
+            act_theme = act.get(f'{namespace}theme')
+            print('act_theme', act_theme)
+            act.set(f'{namespace}theme', '@style/ydzs_splash_translucent')
+            xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+            break
+
+fix_android8_bug_rose(decompile_dir_path)
+# def fix_old_kupai_recharge_phone_permission_crash(decompile_dir):
+#     insert_str_list = [
+#         '\n\t.locals 1\n\n',
+#         '\tconst-string v0, ""\n\n',
+#         '\treturn-object v0\n\n']
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir):
+#         if r'com\yulong\android\paysdk\base\b\c' in dirpath and 'e.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'e.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public static b(Landroid/content/Context;)Ljava/lang/String;'
+#                 end_method_str = '.end method'
+#                 insert_str = ''.join(insert_str_list)
+#                 on_create_index = 0
+#                 insert_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         insert_index = index
+#                         print('insert_index', index)
+#                         break
+#                 print(on_create_index, insert_index)
+#                 del smali_str_arr[on_create_index + 1:insert_index]
+#                 smali_str_arr.insert(on_create_index + 1, insert_str)
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#                 break
+#
+# fix_old_kupai_recharge_phone_permission_crash(decompile_dir_path)

Разлика између датотеке није приказан због своје велике величине
+ 175 - 0
script/元气骑士Y-小绵羊.py


Разлика између датотеке није приказан због своје велике величине
+ 73 - 0
script/元气骑士Y-朱雀.py


+ 47 - 0
script/元气骑士前传Y-fake.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("元气骑士前传Y-fake")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 83 - 0
script/元气骑士前传Y-小绵羊.py

@@ -0,0 +1,83 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("元气骑士前传Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+
+def fix_kf_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/kf/framework/KFApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/kf/framework/KFApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\kf\framework' in dirpath and 'KFApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'KFApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/kf/framework/KFApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_kf_application_getinstance_null_bug(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 47 - 0
script/元气骑士前传Y-朱雀.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("元气骑士前传Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 129 - 0
script/光明冒险Y-小绵羊.py

@@ -0,0 +1,129 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("光明冒险Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# developer_path = os.path.join(decompile_dir_path, 'assets', 'developer.properties')
+# print(developer_path)
+# with open(developer_path, 'r', encoding='utf-8') as f:
+#     smali_str_arr = f.readlines()
+#     for line in smali_str_arr:
+#         if 'isRealname' in line:
+#             smali_str_arr[smali_str_arr.index(line)] = line.replace('0', '1')
+#             break
+# with open(developer_path, 'w', encoding='utf-8') as f:
+#     f.write(''.join(smali_str_arr))
+
+# 老板sdk取消登录调不起登录并且不需要延迟初始化
+def fix_old_cancel_login_bug_no_post_delay_login(decompile_dir_path):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/coolcloud/uac/android/api/Coolcloud$3;->val$appctx:Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\coolcloud\uac\android\api' in dirpath and 'Coolcloud$3.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'Coolcloud$3.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/coolcloud/uac/android/api/Coolcloud;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_old_cancel_login_bug_no_post_delay_login(decompile_dir_path)

+ 37 - 0
script/光明冒险Y-朱雀.py

@@ -0,0 +1,37 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("光明冒险Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+#     if r'com\ydzs\framework' in dirpath and 'Userrose2$1$1.smali' in filenames:
+#         smali_path = os.path.join(dirpath, 'Userrose2$1$1.smali')
+#         print(smali_path)
+#         with open(smali_path, 'r', encoding='utf-8') as f:
+#             smali_str_arr = f.readlines()
+#             index_str = '.method private initParams(Landroid/app/Activity;)V'
+#             end_method_str = '.end method'
+#             method_begin_index = 0
+#             method_end_index = 0
+#             for line in smali_str_arr:
+#                 if 'getRealnameStatus' in line:
+#                     smali_str_arr[smali_str_arr.index(line)] = f'{line}'
+#                     break
+#         with open(smali_path, 'w', encoding='utf-8') as f:
+#             f.write(''.join(smali_str_arr))
+

+ 30 - 0
script/光明勇士Y-小绵羊.py

@@ -0,0 +1,30 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("光明勇士Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+developer_path = os.path.join(decompile_dir_path, 'assets', 'developer.properties')
+print(developer_path)
+with open(developer_path, 'r', encoding='utf-8') as f:
+    smali_str_arr = f.readlines()
+    for line in smali_str_arr:
+        if 'isRealname' in line:
+            smali_str_arr[smali_str_arr.index(line)] = line.replace('1', '0')
+            break
+with open(developer_path, 'w', encoding='utf-8') as f:
+    f.write(''.join(smali_str_arr))

+ 187 - 0
script/全明星激斗Y-小绵羊.py

@@ -0,0 +1,187 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("全明星激斗Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+for dirpath,dirnames,filenames in os.walk(decompile_dir_path):
+    if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+        print(smali_path)
+        with open(smali_path, 'r') as f:
+            smali_str_arr = f.readlines()
+            for line in smali_str_arr:
+                if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                    smali_str_arr[smali_str_arr.index(line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+        with open(smali_path,'w') as f:
+            f.write(''.join(smali_str_arr))
+
+    if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+        smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+        print(smali_path)
+        with open(smali_path, 'r') as f:
+            smali_str_arr = f.readlines()
+            for line in smali_str_arr:
+                if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                    smali_str_arr[smali_str_arr.index(line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+        with open(smali_path,'w') as f:
+            f.write(''.join(smali_str_arr))
+
+for dirpath,dirnames,filenames in os.walk(decompile_dir_path):
+    if r'com\yog\kothoth\utils' in dirpath and 'RequestParamUtil.smali' in filenames:
+        file_path = os.path.join(dirpath, 'RequestParamUtil.smali')
+        with open(file_path, 'r', encoding='utf-8') as f:
+            line_arr = f.readlines()
+            encode_str = 'invoke-static {p1, v0, v1}, Lcom/hjr/gameplatform/aes/AESUtil;->encode(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;'
+            for line in line_arr:
+                if encode_str in line:
+                    line_arr[line_arr.index(line)] = line.replace('Lcom/hjr/gameplatform/aes/AESUtil', 'Lcom/kf/framework/util/AESUtil')
+                    break
+        with open(file_path, 'w', encoding='utf-8') as f:
+            f.write(''.join(line_arr))
+
+    if r'com\yog\kothoth\data' in dirpath and 'JsonResult.smali' in filenames:
+        file_path = os.path.join(dirpath, 'JsonResult.smali')
+        with open(file_path, 'r', encoding='utf-8') as f:
+            line_arr = f.readlines()
+            decode_str = 'invoke-static {p0, v0, v1}, Lcom/hjr/gameplatform/aes/AESUtil;->decode(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;'
+            for line in line_arr:
+                if decode_str in line:
+                    line_arr[line_arr.index(line)] = line.replace('Lcom/hjr/gameplatform/aes/AESUtil', 'Lcom/kf/framework/util/AESUtil')
+                    break
+        with open(file_path, 'w', encoding='utf-8') as f:
+            f.write(''.join(line_arr))
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+def fix_gson_conflict_with_xmy_bug():
+    decompile_gson_path = os.path.join(decompile_dir_path, 'smali', 'com/google/gson')
+    print('decompile smali gson path:', decompile_gson_path)
+    if os.path.exists(decompile_gson_path):
+        shutil.rmtree(decompile_gson_path)
+
+    shutil.copytree(r'D:\special_problem\gson冲突\全明星激斗\com\google\gson', decompile_gson_path)
+
+def fix_alipay_conflict_with_xmy_bug():
+    decompile_alipay_path = os.path.join(decompile_dir_path, 'smali', 'com/alipay')
+    print('decompile smali alipay path:', decompile_alipay_path)
+    if os.path.exists(decompile_alipay_path):
+        shutil.rmtree(decompile_alipay_path)
+
+    shutil.copytree(r'D:\special_problem\alipay冲突\全明星激斗\com\alipay', decompile_alipay_path)
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)
+fix_gson_conflict_with_xmy_bug()
+fix_alipay_conflict_with_xmy_bug()

+ 29 - 0
script/全明星激斗Y-朱雀.py

@@ -0,0 +1,29 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("全明星激斗Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_alipay_conflict_bug():
+    decompile_alipay_path = os.path.join(decompile_dir_path, 'smali', 'com/alipay')
+    print('decompile smali alipay path:', decompile_alipay_path)
+    if os.path.exists(decompile_alipay_path):
+        shutil.rmtree(decompile_alipay_path)
+
+    shutil.copytree(r'D:\special_problem\alipay冲突\全明星激斗\com\alipay', decompile_alipay_path)
+
+fix_alipay_conflict_bug()

+ 119 - 0
script/全民口袋麻将Y-小绵羊.py

@@ -0,0 +1,119 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("全民口袋麻将Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 82 - 0
script/全民江湖Y-小绵羊.py

@@ -0,0 +1,82 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("全民江湖Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def copy_new_sdk_delay_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_smali_kf()
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)
+
+def fix_kf_not_show_fubiao_permission(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity.smali'),
+                        htprotect_dir_path)
+        if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity$1.smali' in filenames:
+            htprotect_dir_path = dirpath
+            print(htprotect_dir_path)
+            shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity$1.smali'),
+                        htprotect_dir_path)
+
+
+fix_kf_not_show_fubiao_permission(decompile_dir_path)

+ 265 - 0
script/全民泡泡超人Y-FAKE.py

@@ -0,0 +1,265 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("全民泡泡超人Y-FAKE")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31():
+    game_dir = sys.argv[2]
+    yb_decode_path = r'D:\work\game_yb_fake'
+    aapt2_output_dir = r'D:\work\output'
+    game_name = ''
+    for name in os.listdir(game_dir):
+        if '小绵羊' not in name and '朱雀' not in name and '九狐' not in name and 'FAKE' not in name:
+            game_name = name
+            print(game_name)
+    if game_name == '':
+        raise Exception('让客服放入原包')
+    yb_path = os.path.join(game_dir, game_name)
+    print(yb_path)
+    cmd_decode_yb = f'apktool d {yb_path} -f -o {yb_decode_path} --only-main-classes'
+    os.system(cmd_decode_yb)
+    # 用原包中的abc_screen_simple、abc_screen_content_include、abc_action_menu_item_layout.xml替换小绵包中的
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_content_include.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_action_menu_item_layout.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    # 将原包中的values-v31和color-v31拷贝到xmy\res目录下
+    # shutil.copytree(os.path.join(yb_decode_path,'res','color-v31'),os.path.join(decompile_dir_path,'res','color-v31'))
+    # shutil.copytree(os.path.join(yb_decode_path,'res','values-v31'),os.path.join(decompile_dir_path,'res','values-v31'))
+    #删除drawable-v4、mipmap-v4等含有v4的文件夹
+    for res_dir_name in os.listdir(os.path.join(decompile_dir_path, 'res')):
+        if 'v4' in res_dir_name and ('drawable' in res_dir_name or 'mipmap' in res_dir_name):
+            drawable_v4_path = os.path.join(decompile_dir_path, 'res', res_dir_name)
+            print('delete:', drawable_v4_path)
+            shutil.rmtree(drawable_v4_path)
+    #
+    # colors_xml_path = os.path.join(decompile_dir_path, 'res', 'values-v31', 'colors.xml')
+    # xml_tree = ET.parse(colors_xml_path)
+    # xml_root = xml_tree.getroot()
+    # color_roots = xml_root.findall('./color')
+    # for style_root in color_roots:
+    #     style_root.text = '@android:color/white'
+    # xml_tree.write(colors_xml_path, encoding='utf-8', xml_declaration=True)
+
+    if not os.path.exists(aapt2_output_dir):
+        os.makedirs(aapt2_output_dir)
+        print("make dir:", aapt2_output_dir)
+    # aapt2不支持中文路径,拷贝渠道包res到output
+    shutil.copytree(os.path.join(decompile_dir_path, "res"), os.path.join(aapt2_output_dir, "res"))
+    # 重新编译资源
+    channel_apk_res_path = os.path.join(aapt2_output_dir, "res")
+    aapt2_res_zip_path = os.path.join(aapt2_output_dir, "res.zip")
+    cmd_aapt2_compile = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe compile --dir {channel_apk_res_path} -o {aapt2_res_zip_path} -v'
+    print(cmd_aapt2_compile)
+    os.system(cmd_aapt2_compile)
+    aapt2_apk_path = os.path.join(aapt2_output_dir, "aapt.apk")
+    cmd_aapt2_link = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe link {aapt2_res_zip_path} -I F:\Android\as_sdk\platforms\android-30\android.jar -o {aapt2_apk_path} --manifest {os.path.join(decompile_dir_path, "AndroidManifest.xml")} -v'
+    print(cmd_aapt2_link)
+    os.system(cmd_aapt2_link)
+    cmd_decode_output_apk = rf'apktool d {os.path.join(aapt2_output_dir, "aapt.apk")} -f -o {os.path.join(aapt2_output_dir, "aapt")} --only-main-classes'
+    print(cmd_decode_output_apk)
+    os.system(cmd_decode_output_apk)
+
+    yb_public_path = os.path.join(yb_decode_path, "res", "values", "public.xml")
+    build_public_path = os.path.join(aapt2_output_dir, "aapt", "res", "values", "public.xml")
+    apk_path = decompile_dir_path
+    cmd_run_refresh_resource = rf'python F:\python_learn\day_1\learn\refresh_resource_qmpp_rose.py {yb_public_path} {build_public_path} {apk_path}'
+    print(cmd_run_refresh_resource)
+    os.system(cmd_run_refresh_resource)
+    shutil.copy(build_public_path, os.path.join(decompile_dir_path, "res", "values"))
+
+    shutil.rmtree(aapt2_output_dir)
+    shutil.rmtree(yb_decode_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\kingsoft\shiyou\omnisdk\api' in dirpath and 'OmniApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "OmniApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+
+namespace = '{http://schemas.android.com/apk/res/android}'
+ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+xml_tree = ET.parse(manifest_path)
+xml_root = xml_tree.getroot()
+application_node = xml_root.find('./application')
+print(application_node)
+application_name = application_node.get(f'{namespace}name')
+print(application_name)
+# 修改extractNativeLib
+application_node.set(f'{namespace}extractNativeLibs', 'true')
+request_storage_name = application_node.get(f'{namespace}requestLegacyExternalStorage')
+print(request_storage_name)
+if request_storage_name is None:
+    application_node.set(f'{namespace}requestLegacyExternalStorage', 'true')
+xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+
+
+# #改方法返回值为true
+# def change_is_show_privacy():
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+#         if r'com\kingsoft\shiyou\omnisdk\project' in dirpath and 'ExtensionsKt.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'ExtensionsKt.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public static final isShowedPrivacyAgreement()Z'
+#                 end_method_str = 'return'
+#                 on_create_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         print('insert_index', index)
+#                         # smali_str_arr.insert(index, add_instance_str)
+#                         print(value)
+#                         print(re.findall(r'[v|p]\d', value))
+#                         var_list = re.findall(r'[v|p]\d', value)
+#                         if len(var_list) > 0:
+#                             var_name = re.findall(r'[v|p]\d', value)[0]
+#                             insert_str = f'\tconst/4 {var_name}, 0x1\n\n'
+#                             smali_str_arr.insert(index, insert_str)
+#                         break
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#                 break
+
+r_regex_str = r'sget[^\n]*R\$layout[^\n]*I|sget[^\n]*R\$id[^\n]*I|sget[^\n]*R\$drawable[^\n]*I|sget[^\n]*R\$string[^\n]*I|sget[^\n]*R\$array[^\n]*I|sget[^\n]*R\$bool[^\n]*I|sget[^\n]*R\$integer[^\n]*I'
+
+def replace_resource(d_dir):
+    for dirpath, dirnames, filenames in os.walk(d_dir):
+        if r'androidx\startup' in dirpath or r'androidx\work\impl' in dirpath or r'com\snyu\ddcr' in dirpath \
+                or r'com\kingsoft\shiyou\omnisdk\project\ui' in dirpath or r'com\sharry\lib\album' in dirpath:
+            for smali_file in filenames:
+                smali_file_path = os.path.join(dirpath, smali_file)
+                print(smali_file_path)
+                findRSmaliAndReplace(smali_file_path, r_regex_str)
+                #   attachBaseContext提前赋值
+        if r'com\ydzs\framework' in dirpath and 'YDZSApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YDZSApplication.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_index_str = r'.method public attachBaseContext(Landroid/content/Context;)V'
+                resume_insert_str = '\n\tsput-object p0, Lcom/ydzs/framework/YDZSApplication;->application:Landroid/content/Context;\n\n'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_index_str in value:
+                        smali_str_arr.insert(index + 2, resume_insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+def findRSmaliAndReplace(smali_file_path, regex_str):
+    with open(smali_file_path, 'r') as f:
+        smali_str = f.read()
+        pattern = re.compile(regex_str)
+        resource_arr = pattern.findall(smali_str)
+        for r_str in resource_arr:
+            virtual_name = r_str[r_str.index(' ') + 1:r_str.index(',')]
+            print(virtual_name)
+            resource_type = r_str[r_str.index('R$') + 2:r_str.index(';')].capitalize()
+            print(resource_type)
+            resource_name = r_str[r_str.index('->') + 2:r_str.index(':')]
+            print(resource_name)
+            new_r_str = "const-string %s, \"%s\"\n\n\tinvoke-static {%s}, Lcom/ydzs/framework/MommyUtils;->get%sId(Ljava/lang/String;)I\n\n\tmove-result %s" % (
+                virtual_name, resource_name, virtual_name, resource_type, virtual_name)
+            print(new_r_str)
+            smali_str = smali_str.replace(r_str, new_r_str)
+    with open(smali_file_path, 'w') as f:
+        f.write(smali_str)
+def change_min_sdk_version(decompile_dir_path):
+    # 修改minSdkVersion
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    sdk_info['minSdkVersion'] = '24'
+    print(sdk_info)
+    file.close()
+    with open(yaml_path, 'w', encoding='utf-8') as f:
+        yaml.dump(yaml_result, f)
+def add_resource_method_rose(resource_type):
+    insert_str_list = [
+        f'\n\t.method public static get{resource_type.capitalize()}Id(Ljava/lang/String;)I\n\n',
+        '\t.locals 3\n\n',
+        '\tinvoke-static {}, Lcom/ydzs/framework/YDZSApplication;->getApplication()Landroid/content/Context;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tinvoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;\n\n',
+        '\tmove-result-object v0\n\n',
+        f'\tconst-string v1, "{resource_type}"\n\n',
+        '\tinvoke-static {}, Lcom/ydzs/framework/YDZSApplication;->getApplication()Landroid/content/Context;\n\n',
+        '\tmove-result-object v2\n\n',
+        '\tinvoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String;\n\n',
+        '\tmove-result-object v2\n\n',
+        '\tinvoke-virtual {v0, p0, v1, v2}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I\n\n',
+        '\tmove-result p0\n\n',
+        '\treturn p0\n',
+        '.end method\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\ydzs\framework' in dirpath and 'MommyUtils.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'MommyUtils.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                insert_str = ''.join(insert_str_list)
+                smali_str_arr.append(insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+#替换application
+add_resource_method_rose('bool')
+replace_application_verify_rose_bug(decompile_dir_path)
+
+# change_is_show_privacy()
+replace_resource(decompile_dir_path)
+change_min_sdk_version(decompile_dir_path)
+decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31()

+ 358 - 0
script/全民泡泡超人Y-小绵羊.py

@@ -0,0 +1,358 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import os
+import re
+import shutil
+import sys
+import xml.etree.ElementTree as ET
+
+import yaml
+
+print("全民泡泡超人Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# def decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31():
+#     game_dir = sys.argv[2]
+#     yb_decode_path = r'D:\work\game_yb'
+#     game_name = ''
+#     if not os.path.exists(yb_decode_path):
+#         for name in os.listdir(game_dir):
+#             if '小绵羊' not in name and '朱雀' not in name and '九狐' not in name:
+#                 game_name = name
+#                 print(game_name)
+#         if game_name == '':
+#             raise Exception('让客服放入原包')
+#         yb_path = os.path.join(game_dir, game_name)
+#         print(yb_path)
+#         cmd_decode_yb = f'apktool d {yb_path} -f -o {yb_decode_path} --only-main-classes'
+#         os.system(cmd_decode_yb)
+#     else:
+#         print('yb_decode_path is exists', yb_decode_path)
+#     # 用原包中的abc_screen_simple、abc_screen_content_include、abc_action_menu_item_layout.xml替换小绵包中的
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_content_include.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_action_menu_item_layout.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#
+#     yb_public_path = os.path.join(yb_decode_path, "res", "values", "public.xml")
+#     build_public_path = os.path.join(decompile_dir_path,  "res", "values", "public.xml")
+#     cmd_run_refresh_resource = rf'python F:\python_learn\day_1\learn\refresh_resource_qmpp.py {yb_public_path} {build_public_path} {decompile_dir_path}'
+#     print(cmd_run_refresh_resource)
+#     os.system(cmd_run_refresh_resource)
+#
+#     shutil.rmtree(yb_decode_path)
+
+def decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31():
+    game_dir = sys.argv[2]
+    yb_decode_path = r'D:\work\game_yb_xmy'
+    aapt2_output_dir = r'D:\work\output'
+    game_name = ''
+    for name in os.listdir(game_dir):
+        if '小绵羊' not in name and '朱雀' not in name and '九狐' not in name and 'FAKE' not in name:
+            game_name = name
+            print(game_name)
+    if game_name == '':
+        raise Exception('让客服放入原包')
+    yb_path = os.path.join(game_dir, game_name)
+    print(yb_path)
+    cmd_decode_yb = f'apktool d {yb_path} -f -o {yb_decode_path} --only-main-classes'
+    os.system(cmd_decode_yb)
+    # 用原包中的abc_screen_simple、abc_screen_content_include、abc_action_menu_item_layout.xml替换小绵包中的
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_content_include.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_action_menu_item_layout.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    # 将原包中的values-v31和color-v31拷贝到xmy\res目录下
+    # shutil.copytree(os.path.join(yb_decode_path,'res','color-v31'),os.path.join(decompile_dir_path,'res','color-v31'))
+    # shutil.copytree(os.path.join(yb_decode_path,'res','values-v31'),os.path.join(decompile_dir_path,'res','values-v31'))
+    #删除drawable-v4、mipmap-v4等含有v4的文件夹
+    for res_dir_name in os.listdir(os.path.join(decompile_dir_path, 'res')):
+        if 'v4' in res_dir_name and ('drawable' in res_dir_name or 'mipmap' in res_dir_name):
+            drawable_v4_path = os.path.join(decompile_dir_path, 'res', res_dir_name)
+            print('delete:', drawable_v4_path)
+            shutil.rmtree(drawable_v4_path)
+    #
+    # colors_xml_path = os.path.join(decompile_dir_path, 'res', 'values-v31', 'colors.xml')
+    # xml_tree = ET.parse(colors_xml_path)
+    # xml_root = xml_tree.getroot()
+    # color_roots = xml_root.findall('./color')
+    # for style_root in color_roots:
+    #     style_root.text = '@android:color/white'
+    # xml_tree.write(colors_xml_path, encoding='utf-8', xml_declaration=True)
+
+    if not os.path.exists(aapt2_output_dir):
+        os.makedirs(aapt2_output_dir)
+        print("make dir:", aapt2_output_dir)
+    # aapt2不支持中文路径,拷贝渠道包res到output
+    shutil.copytree(os.path.join(decompile_dir_path, "res"), os.path.join(aapt2_output_dir, "res"))
+    # 重新编译资源
+    channel_apk_res_path = os.path.join(aapt2_output_dir, "res")
+    aapt2_res_zip_path = os.path.join(aapt2_output_dir, "res.zip")
+    cmd_aapt2_compile = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe compile --dir {channel_apk_res_path} -o {aapt2_res_zip_path} -v'
+    print(cmd_aapt2_compile)
+    os.system(cmd_aapt2_compile)
+    aapt2_apk_path = os.path.join(aapt2_output_dir, "aapt.apk")
+    cmd_aapt2_link = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe link {aapt2_res_zip_path} -I F:\Android\as_sdk\platforms\android-30\android.jar -o {aapt2_apk_path} --manifest {os.path.join(decompile_dir_path, "AndroidManifest.xml")} -v'
+    print(cmd_aapt2_link)
+    os.system(cmd_aapt2_link)
+    cmd_decode_output_apk = rf'apktool d {os.path.join(aapt2_output_dir, "aapt.apk")} -f -o {os.path.join(aapt2_output_dir, "aapt")} --only-main-classes'
+    print(cmd_decode_output_apk)
+    os.system(cmd_decode_output_apk)
+
+    yb_public_path = os.path.join(yb_decode_path, "res", "values", "public.xml")
+    build_public_path = os.path.join(aapt2_output_dir, "aapt", "res", "values", "public.xml")
+    apk_path = decompile_dir_path
+    cmd_run_refresh_resource = rf'python F:\python_learn\day_1\learn\refresh_resource_qmpp_rose.py {yb_public_path} {build_public_path} {apk_path}'
+    print(cmd_run_refresh_resource)
+    os.system(cmd_run_refresh_resource)
+    shutil.copy(build_public_path, os.path.join(decompile_dir_path, "res", "values"))
+
+    shutil.rmtree(aapt2_output_dir)
+    shutil.rmtree(yb_decode_path)
+
+# def decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31():
+#     game_dir = sys.argv[2]
+#     yb_decode_path = r'D:\work\game_yb'
+#     aapt2_output_dir = r'D:\work\output'
+#     game_name = ''
+#     for name in os.listdir(game_dir):
+#         if '小绵羊' not in name and '朱雀' not in name:
+#             game_name = name
+#             print(game_name)
+#     if game_name == '':
+#         raise Exception('让客服放入原包')
+#     yb_path = os.path.join(game_dir, game_name)
+#     print(yb_path)
+#     cmd_decode_yb = f'apktool d {yb_path} -f -o {yb_decode_path} --only-main-classes'
+#     os.system(cmd_decode_yb)
+#     # 用原包中的abc_screen_simple、abc_screen_content_include、abc_action_menu_item_layout.xml替换小绵包中的
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_content_include.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_action_menu_item_layout.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#     # 将原包中的values-v31和color-v31拷贝到xmy\res目录下
+#     shutil.copytree(os.path.join(yb_decode_path,'res','color-v31'),os.path.join(decompile_dir_path,'res','color-v31'))
+#     shutil.copytree(os.path.join(yb_decode_path,'res','values-v31'),os.path.join(decompile_dir_path,'res','values-v31'))
+#     #删除drawable-v4、mipmap-v4等含有v4的文件夹
+#     for res_dir_name in os.listdir(os.path.join(decompile_dir_path, 'res')):
+#         if 'v4' in res_dir_name and ('drawable' in res_dir_name or 'mipmap' in res_dir_name):
+#             drawable_v4_path = os.path.join(decompile_dir_path, 'res', res_dir_name)
+#             print('delete:', drawable_v4_path)
+#             shutil.rmtree(drawable_v4_path)
+#     #
+#     colors_xml_path = os.path.join(decompile_dir_path, 'res', 'values-v31', 'colors.xml')
+#     xml_tree = ET.parse(colors_xml_path)
+#     xml_root = xml_tree.getroot()
+#     color_roots = xml_root.findall('./color')
+#     for style_root in color_roots:
+#         style_root.text = '@android:color/white'
+#     xml_tree.write(colors_xml_path, encoding='utf-8', xml_declaration=True)
+#
+#     if not os.path.exists(aapt2_output_dir):
+#         os.makedirs(aapt2_output_dir)
+#         print("make dir:", aapt2_output_dir)
+#     # aapt2不支持中文路径,拷贝渠道包res到output
+#     shutil.copytree(os.path.join(decompile_dir_path, "res"), os.path.join(aapt2_output_dir, "res"))
+#     # 重新编译资源
+#     channel_apk_res_path = os.path.join(aapt2_output_dir, "res")
+#     aapt2_res_zip_path = os.path.join(aapt2_output_dir, "res.zip")
+#     cmd_aapt2_compile = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe compile --dir {channel_apk_res_path} -o {aapt2_res_zip_path} -v'
+#     print(cmd_aapt2_compile)
+#     os.system(cmd_aapt2_compile)
+#     aapt2_apk_path = os.path.join(aapt2_output_dir, "aapt.apk")
+#     cmd_aapt2_link = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe link {aapt2_res_zip_path} -I F:\Android\as_sdk\platforms\android-30\android.jar -o {aapt2_apk_path} --manifest {os.path.join(decompile_dir_path, "AndroidManifest.xml")} -v'
+#     print(cmd_aapt2_link)
+#     os.system(cmd_aapt2_link)
+#     cmd_decode_output_apk = rf'apktool d {os.path.join(aapt2_output_dir, "aapt.apk")} -f -o {os.path.join(aapt2_output_dir, "aapt")} --only-main-classes'
+#     print(cmd_decode_output_apk)
+#     os.system(cmd_decode_output_apk)
+#
+#     yb_public_path = os.path.join(yb_decode_path, "res", "values", "public.xml")
+#     build_public_path = os.path.join(aapt2_output_dir, "aapt", "res", "values", "public.xml")
+#     apk_path = decompile_dir_path
+#     cmd_run_refresh_resource = rf'python F:\python_learn\day_1\learn\refresh_resource.py {yb_public_path} {build_public_path} {apk_path}'
+#     print(cmd_run_refresh_resource)
+#     os.system(cmd_run_refresh_resource)
+#     shutil.copy(build_public_path, os.path.join(decompile_dir_path, "res", "values"))
+#
+#     shutil.rmtree(aapt2_output_dir)
+#     shutil.rmtree(yb_decode_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_kf_replace_application(line):
+    return '.super Lcom/kf/framework/KFApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/kf/framework/KFApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/kf/framework/KFApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/kf/framework/KFApplication;->onCreate()V' in line
+
+def replace_application_verify_xmy_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\kingsoft\shiyou\omnisdk\api' in dirpath and 'OmniApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "OmniApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_kf_replace_application(line) and 'Lcom/kf/framework/KFApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/kf/framework/KFApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/kf/framework/KFApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+
+
+namespace = '{http://schemas.android.com/apk/res/android}'
+ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+xml_tree = ET.parse(manifest_path)
+xml_root = xml_tree.getroot()
+application_node = xml_root.find('./application')
+print(application_node)
+application_name = application_node.get(f'{namespace}name')
+print(application_name)
+# 修改extractNativeLib
+application_node.set(f'{namespace}extractNativeLibs', 'true')
+request_storage_name = application_node.get(f'{namespace}requestLegacyExternalStorage')
+print(request_storage_name)
+if request_storage_name is None:
+    application_node.set(f'{namespace}requestLegacyExternalStorage', 'true')
+xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+
+#改方法返回值为true
+def change_is_show_privacy():
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\kingsoft\shiyou\omnisdk\project' in dirpath and 'ExtensionsKt.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'ExtensionsKt.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static final isShowedPrivacyAgreement()Z'
+                end_method_str = 'return'
+                on_create_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        print('insert_index', index)
+                        # smali_str_arr.insert(index, add_instance_str)
+                        print(value)
+                        print(re.findall(r'[v|p]\d', value))
+                        var_list = re.findall(r'[v|p]\d', value)
+                        if len(var_list) > 0:
+                            var_name = re.findall(r'[v|p]\d', value)[0]
+                            insert_str = f'\tconst/4 {var_name}, 0x1\n\n'
+                            smali_str_arr.insert(index, insert_str)
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+r_regex_str = r'sget[^\n]*R\$layout[^\n]*I|sget[^\n]*R\$id[^\n]*I|sget[^\n]*R\$drawable[^\n]*I|sget[^\n]*R\$string[^\n]*I|sget[^\n]*R\$array[^\n]*I|sget[^\n]*R\$bool[^\n]*I|sget[^\n]*R\$integer[^\n]*I'
+
+def replace_resource(d_dir):
+    for dirpath, dirnames, filenames in os.walk(d_dir):
+        if r'androidx\startup' in dirpath or r'androidx\work\impl' in dirpath or r'com\snyu\ddcr' in dirpath:
+            for smali_file in filenames:
+                smali_file_path = os.path.join(dirpath, smali_file)
+                print(smali_file_path)
+                findRSmaliAndReplace(smali_file_path, r_regex_str)
+                #   attachBaseContext提前赋值
+        if r'com\kf\framework' in dirpath and 'KFApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'KFApplication.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_index_str = r'.method public attachBaseContext(Landroid/content/Context;)V'
+                resume_insert_str = '\n\tsput-object p0, Lcom/kf/framework/KFApplication;->application:Landroid/content/Context;\n\n'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_index_str in value:
+                        smali_str_arr.insert(index + 2, resume_insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+def findRSmaliAndReplace(smali_file_path, regex_str):
+    with open(smali_file_path, 'r') as f:
+        smali_str = f.read()
+        pattern = re.compile(regex_str)
+        resource_arr = pattern.findall(smali_str)
+        for r_str in resource_arr:
+            virtual_name = r_str[r_str.index(' ') + 1:r_str.index(',')]
+            print(virtual_name)
+            resource_type = r_str[r_str.index('R$') + 2:r_str.index(';')].capitalize()
+            print(resource_type)
+            resource_name = r_str[r_str.index('->') + 2:r_str.index(':')]
+            print(resource_name)
+            new_r_str = "const-string %s, \"%s\"\n\n\tinvoke-static {%s}, Lcom/kf/framework/MommyUtils;->get%sId(Ljava/lang/String;)I\n\n\tmove-result %s" % (
+                virtual_name, resource_name, virtual_name, resource_type, virtual_name)
+            print(new_r_str)
+            smali_str = smali_str.replace(r_str, new_r_str)
+    with open(smali_file_path, 'w') as f:
+        f.write(smali_str)
+def change_min_sdk_version(decompile_dir_path):
+    # 修改minSdkVersion
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    sdk_info['minSdkVersion'] = '24'
+    print(sdk_info)
+    file.close()
+    with open(yaml_path, 'w', encoding='utf-8') as f:
+        yaml.dump(yaml_result, f)
+def add_resource_method_xmy(resource_type):
+    insert_str_list = [
+        f'\n\t.method public static get{resource_type.capitalize()}Id(Ljava/lang/String;)I\n\n',
+        '\t.locals 3\n\n',
+        '\tinvoke-static {}, Lcom/kf/framework/KFApplication;->getApplication()Landroid/content/Context;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tinvoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;\n\n',
+        '\tmove-result-object v0\n\n',
+        f'\tconst-string v1, "{resource_type}"\n\n',
+        '\tinvoke-static {}, Lcom/kf/framework/KFApplication;->getApplication()Landroid/content/Context;\n\n',
+        '\tmove-result-object v2\n\n',
+        '\tinvoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String;\n\n',
+        '\tmove-result-object v2\n\n',
+        '\tinvoke-virtual {v0, p0, v1, v2}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I\n\n',
+        '\tmove-result p0\n\n',
+        '\treturn p0\n',
+        '.end method\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\kf\framework' in dirpath and 'MommyUtils.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'MommyUtils.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                insert_str = ''.join(insert_str_list)
+                smali_str_arr.append(insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+#替换application
+add_resource_method_xmy('bool')
+replace_application_verify_xmy_bug(decompile_dir_path)
+# change_is_show_privacy()
+replace_resource(decompile_dir_path)
+change_min_sdk_version(decompile_dir_path)
+decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31()
+
+
+
+

+ 293 - 0
script/全民泡泡超人Y-朱雀.py

@@ -0,0 +1,293 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import os
+import re
+import shutil
+import sys
+import xml.etree.ElementTree as ET
+
+import yaml
+
+print("全民泡泡超人Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# def decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31():
+#     game_dir = sys.argv[2]
+#     yb_decode_path = r'D:\work\game_yb'
+#     game_name = ''
+#     if not os.path.exists(yb_decode_path):
+#         for name in os.listdir(game_dir):
+#             if '小绵羊' not in name and '朱雀' not in name:
+#                 game_name = name
+#                 print(game_name)
+#         if game_name == '':
+#             raise Exception('让客服放入原包')
+#         yb_path = os.path.join(game_dir, game_name)
+#         print(yb_path)
+#         cmd_decode_yb = f'apktool d {yb_path} -f -o {yb_decode_path} --only-main-classes'
+#         os.system(cmd_decode_yb)
+#     else:
+#         print('yb_decode_path is exists', yb_decode_path)
+#     # 用原包中的abc_screen_simple、abc_screen_content_include、abc_action_menu_item_layout.xml替换小绵包中的
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_content_include.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#     shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_action_menu_item_layout.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+#
+#     yb_public_path = os.path.join(yb_decode_path, "res", "values", "public.xml")
+#     build_public_path = os.path.join(decompile_dir_path,  "res", "values", "public.xml")
+#     cmd_run_refresh_resource = rf'python F:\python_learn\day_1\learn\refresh_resource_qmpp_rose.py {yb_public_path} {build_public_path} {decompile_dir_path}'
+#     print(cmd_run_refresh_resource)
+#     os.system(cmd_run_refresh_resource)
+
+def decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31():
+    game_dir = sys.argv[2]
+    yb_decode_path = r'D:\work\game_yb_rose'
+    aapt2_output_dir = r'D:\work\output'
+    game_name = ''
+    for name in os.listdir(game_dir):
+        if '小绵羊' not in name and '朱雀' not in name and '九狐' not in name and 'FAKE' not in name:
+            game_name = name
+            print(game_name)
+    if game_name == '':
+        raise Exception('让客服放入原包')
+    yb_path = os.path.join(game_dir, game_name)
+    print(yb_path)
+    cmd_decode_yb = f'apktool d {yb_path} -f -o {yb_decode_path} --only-main-classes'
+    os.system(cmd_decode_yb)
+    # 用原包中的abc_screen_simple、abc_screen_content_include、abc_action_menu_item_layout.xml替换小绵包中的
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_simple.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_screen_content_include.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    shutil.copy(os.path.join(yb_decode_path, "res", 'layout', 'abc_action_menu_item_layout.xml'), os.path.join(decompile_dir_path, "res", 'layout'))
+    # 将原包中的values-v31和color-v31拷贝到xmy\res目录下
+    # shutil.copytree(os.path.join(yb_decode_path,'res','color-v31'),os.path.join(decompile_dir_path,'res','color-v31'))
+    # shutil.copytree(os.path.join(yb_decode_path,'res','values-v31'),os.path.join(decompile_dir_path,'res','values-v31'))
+    #删除drawable-v4、mipmap-v4等含有v4的文件夹
+    for res_dir_name in os.listdir(os.path.join(decompile_dir_path, 'res')):
+        if 'v4' in res_dir_name and ('drawable' in res_dir_name or 'mipmap' in res_dir_name):
+            drawable_v4_path = os.path.join(decompile_dir_path, 'res', res_dir_name)
+            print('delete:', drawable_v4_path)
+            shutil.rmtree(drawable_v4_path)
+    #
+    # colors_xml_path = os.path.join(decompile_dir_path, 'res', 'values-v31', 'colors.xml')
+    # xml_tree = ET.parse(colors_xml_path)
+    # xml_root = xml_tree.getroot()
+    # color_roots = xml_root.findall('./color')
+    # for style_root in color_roots:
+    #     style_root.text = '@android:color/white'
+    # xml_tree.write(colors_xml_path, encoding='utf-8', xml_declaration=True)
+
+    if not os.path.exists(aapt2_output_dir):
+        os.makedirs(aapt2_output_dir)
+        print("make dir:", aapt2_output_dir)
+    # aapt2不支持中文路径,拷贝渠道包res到output
+    shutil.copytree(os.path.join(decompile_dir_path, "res"), os.path.join(aapt2_output_dir, "res"))
+    # 重新编译资源
+    channel_apk_res_path = os.path.join(aapt2_output_dir, "res")
+    aapt2_res_zip_path = os.path.join(aapt2_output_dir, "res.zip")
+    cmd_aapt2_compile = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe compile --dir {channel_apk_res_path} -o {aapt2_res_zip_path} -v'
+    print(cmd_aapt2_compile)
+    os.system(cmd_aapt2_compile)
+    aapt2_apk_path = os.path.join(aapt2_output_dir, "aapt.apk")
+    cmd_aapt2_link = rf'F:\Android\as_sdk\build-tools\30.0.2\aapt2.exe link {aapt2_res_zip_path} -I F:\Android\as_sdk\platforms\android-30\android.jar -o {aapt2_apk_path} --manifest {os.path.join(decompile_dir_path, "AndroidManifest.xml")} -v'
+    print(cmd_aapt2_link)
+    os.system(cmd_aapt2_link)
+    cmd_decode_output_apk = rf'apktool d {os.path.join(aapt2_output_dir, "aapt.apk")} -f -o {os.path.join(aapt2_output_dir, "aapt")} --only-main-classes'
+    print(cmd_decode_output_apk)
+    os.system(cmd_decode_output_apk)
+
+    yb_public_path = os.path.join(yb_decode_path, "res", "values", "public.xml")
+    build_public_path = os.path.join(aapt2_output_dir, "aapt", "res", "values", "public.xml")
+    apk_path = decompile_dir_path
+    cmd_run_refresh_resource = rf'python F:\python_learn\day_1\learn\refresh_resource_qmpp_rose.py {yb_public_path} {build_public_path} {apk_path}'
+    print(cmd_run_refresh_resource)
+    os.system(cmd_run_refresh_resource)
+    shutil.copy(build_public_path, os.path.join(decompile_dir_path, "res", "values"))
+
+    shutil.rmtree(aapt2_output_dir)
+    shutil.rmtree(yb_decode_path)
+
+def isNeedReplaceApplicationLine(line):
+    return '.super Landroid/app/Application;' in line \
+           or 'invoke-direct {p0}, Landroid/app/Application;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Landroid/app/Application;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Landroid/app/Application;->onCreate()V' in line
+
+def is_rose_replace_application(line):
+    return '.super Lcom/ydzs/framework/YDZSApplication;' in line \
+           or 'invoke-direct {p0}, Lcom/ydzs/framework/YDZSApplication;-><init>()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->attachBaseContext(Landroid/content/Context;)V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onConfigurationChanged(Landroid/content/res/Configuration;)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onLowMemory()V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onTerminate()V' in line \
+           or 'invoke-super {p0, p1}, Lcom/ydzs/framework/YDZSApplication;->onTrimMemory(I)V' in line \
+           or 'invoke-super {p0}, Lcom/ydzs/framework/YDZSApplication;->onCreate()V' in line
+
+def replace_application_verify_rose_bug(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\kingsoft\shiyou\omnisdk\api' in dirpath and 'OmniApplication.smali' in filenames:
+            application_path = os.path.join(dirpath, "OmniApplication.smali")
+            print(application_path)
+            with open(application_path, "r") as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if not is_rose_replace_application(line) and 'Lcom/ydzs/framework/YDZSApplication' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Lcom/ydzs/framework/YDZSApplication',
+                                                                                'Landroid/app/Application')
+                    if isNeedReplaceApplicationLine(line):
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('Landroid/app/Application',
+                                                                                'Lcom/ydzs/framework/YDZSApplication')
+            with open(application_path, "w") as f:
+                f.write(''.join(smali_str_arr))
+
+
+namespace = '{http://schemas.android.com/apk/res/android}'
+ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+xml_tree = ET.parse(manifest_path)
+xml_root = xml_tree.getroot()
+application_node = xml_root.find('./application')
+print(application_node)
+application_name = application_node.get(f'{namespace}name')
+print(application_name)
+# 修改extractNativeLib
+application_node.set(f'{namespace}extractNativeLibs', 'true')
+request_storage_name = application_node.get(f'{namespace}requestLegacyExternalStorage')
+print(request_storage_name)
+if request_storage_name is None:
+    application_node.set(f'{namespace}requestLegacyExternalStorage', 'true')
+xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+
+
+# #改方法返回值为true
+# def change_is_show_privacy():
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+#         if r'com\kingsoft\shiyou\omnisdk\project' in dirpath and 'ExtensionsKt.smali' in filenames:
+#             smali_path = os.path.join(dirpath, 'ExtensionsKt.smali')
+#             with open(smali_path, 'r', encoding='utf-8') as f:
+#                 smali_str_arr = f.readlines()
+#                 index_str = '.method public static final isShowedPrivacyAgreement()Z'
+#                 end_method_str = 'return'
+#                 on_create_index = 0
+#                 for line in smali_str_arr:
+#                     if index_str in line:
+#                         on_create_index = smali_str_arr.index(line)
+#                         print('on_create_index', on_create_index, line)
+#                         break
+#                 for index, value in enumerate(smali_str_arr):
+#                     if index > on_create_index and end_method_str in value:
+#                         print('insert_index', index)
+#                         # smali_str_arr.insert(index, add_instance_str)
+#                         print(value)
+#                         print(re.findall(r'[v|p]\d', value))
+#                         var_list = re.findall(r'[v|p]\d', value)
+#                         if len(var_list) > 0:
+#                             var_name = re.findall(r'[v|p]\d', value)[0]
+#                             insert_str = f'\tconst/4 {var_name}, 0x1\n\n'
+#                             smali_str_arr.insert(index, insert_str)
+#                         break
+#             with open(smali_path, 'w', encoding='utf-8') as f:
+#                 f.write(''.join(smali_str_arr))
+#                 break
+
+r_regex_str = r'sget[^\n]*R\$layout[^\n]*I|sget[^\n]*R\$id[^\n]*I|sget[^\n]*R\$drawable[^\n]*I|sget[^\n]*R\$string[^\n]*I|sget[^\n]*R\$array[^\n]*I|sget[^\n]*R\$bool[^\n]*I|sget[^\n]*R\$integer[^\n]*I'
+
+def replace_resource(d_dir):
+    for dirpath, dirnames, filenames in os.walk(d_dir):
+        if r'androidx\startup' in dirpath or r'androidx\work\impl' in dirpath or r'com\snyu\ddcr' in dirpath \
+                or r'com\kingsoft\shiyou\omnisdk\project\ui' in dirpath or r'com\sharry\lib\album' in dirpath:
+            for smali_file in filenames:
+                smali_file_path = os.path.join(dirpath, smali_file)
+                print(smali_file_path)
+                findRSmaliAndReplace(smali_file_path, r_regex_str)
+                #   attachBaseContext提前赋值
+        if r'com\ydzs\framework' in dirpath and 'YDZSApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YDZSApplication.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_index_str = r'.method public attachBaseContext(Landroid/content/Context;)V'
+                resume_insert_str = '\n\tsput-object p0, Lcom/ydzs/framework/YDZSApplication;->application:Landroid/content/Context;\n\n'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_index_str in value:
+                        smali_str_arr.insert(index + 2, resume_insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+def findRSmaliAndReplace(smali_file_path, regex_str):
+    with open(smali_file_path, 'r') as f:
+        smali_str = f.read()
+        pattern = re.compile(regex_str)
+        resource_arr = pattern.findall(smali_str)
+        for r_str in resource_arr:
+            virtual_name = r_str[r_str.index(' ') + 1:r_str.index(',')]
+            print(virtual_name)
+            resource_type = r_str[r_str.index('R$') + 2:r_str.index(';')].capitalize()
+            print(resource_type)
+            resource_name = r_str[r_str.index('->') + 2:r_str.index(':')]
+            print(resource_name)
+            new_r_str = "const-string %s, \"%s\"\n\n\tinvoke-static {%s}, Lcom/ydzs/framework/MommyUtils;->get%sId(Ljava/lang/String;)I\n\n\tmove-result %s" % (
+                virtual_name, resource_name, virtual_name, resource_type, virtual_name)
+            print(new_r_str)
+            smali_str = smali_str.replace(r_str, new_r_str)
+    with open(smali_file_path, 'w') as f:
+        f.write(smali_str)
+def change_min_sdk_version(decompile_dir_path):
+    # 修改minSdkVersion
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    sdk_info['minSdkVersion'] = '24'
+    print(sdk_info)
+    file.close()
+    with open(yaml_path, 'w', encoding='utf-8') as f:
+        yaml.dump(yaml_result, f)
+def add_resource_method_rose(resource_type):
+    insert_str_list = [
+        f'\n\t.method public static get{resource_type.capitalize()}Id(Ljava/lang/String;)I\n\n',
+        '\t.locals 3\n\n',
+        '\tinvoke-static {}, Lcom/ydzs/framework/YDZSApplication;->getApplication()Landroid/content/Context;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tinvoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;\n\n',
+        '\tmove-result-object v0\n\n',
+        f'\tconst-string v1, "{resource_type}"\n\n',
+        '\tinvoke-static {}, Lcom/ydzs/framework/YDZSApplication;->getApplication()Landroid/content/Context;\n\n',
+        '\tmove-result-object v2\n\n',
+        '\tinvoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String;\n\n',
+        '\tmove-result-object v2\n\n',
+        '\tinvoke-virtual {v0, p0, v1, v2}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I\n\n',
+        '\tmove-result p0\n\n',
+        '\treturn p0\n',
+        '.end method\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\ydzs\framework' in dirpath and 'MommyUtils.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'MommyUtils.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                insert_str = ''.join(insert_str_list)
+                smali_str_arr.append(insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+#替换application
+add_resource_method_rose('bool')
+replace_application_verify_rose_bug(decompile_dir_path)
+
+# change_is_show_privacy()
+replace_resource(decompile_dir_path)
+change_min_sdk_version(decompile_dir_path)
+decode_yb_and_del_v4_and_copy_yb_res_and_modify_colors_v31()
+
+
+
+

+ 38 - 0
script/全能斗士Y-FAKE.py

@@ -0,0 +1,38 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("全能斗士Y-FAKE")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_cleartexttraffic():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}usesCleartextTraffic')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}usesClearextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+    elif etract_value is None:
+        application_node.set(f'{namespace}usesCleartextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+
+fix_cleartexttraffic()

+ 68 - 0
script/全能斗士Y-小绵羊.py

@@ -0,0 +1,68 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("全能斗士Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_cleartexttraffic():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}usesCleartextTraffic')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}usesClearextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+    elif etract_value is None:
+        application_node.set(f'{namespace}usesCleartextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+
+fix_cleartexttraffic()
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)

+ 72 - 0
script/全能斗士Y-朱雀.py

@@ -0,0 +1,72 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("全能斗士Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_cleartexttraffic():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}usesCleartextTraffic')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}usesClearextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+    elif etract_value is None:
+        application_node.set(f'{namespace}usesCleartextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_cleartexttraffic()
+
+def fix_ydzs_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/ydzs/framework/YDZSApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/ydzs/framework/YDZSApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\ydzs\framework' in dirpath and 'YDZSApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YDZSApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/ydzs/framework/YDZSApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_ydzs_application_getinstance_null_bug(decompile_dir_path)

+ 94 - 0
script/兽王降临Y-小绵羊.py

@@ -0,0 +1,94 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("兽王降临Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)
+
+def copy_new_sdk_delay_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_smali_kf()
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)

+ 48 - 0
script/兽王降临Y-朱雀.py

@@ -0,0 +1,48 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("兽王降临Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 65 - 0
script/冒险与召唤Y-小绵羊.py

@@ -0,0 +1,65 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("冒险与召唤Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def copy_new_sdk_delay_fail_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成延迟还是不行就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_fail_smali_kf()
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)

+ 207 - 0
script/凡人神将传Y-小绵羊.py

@@ -0,0 +1,207 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("凡人神将传Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_permit_clearTextTraffic():
+    # namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'res','xml','gr_network_security_config.xml')
+    if not os.path.exists(manifest_path):
+        return
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('.//base-config')
+    print('base-config: ',application_node)
+    base_config_value = application_node.get(f'cleartextTrafficPermitted')
+    if base_config_value is not None and base_config_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'cleartextTrafficPermitted', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_permit_clearTextTraffic()
+
+
+def fix_cleartexttraffic():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}usesCleartextTraffic')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}usesClearextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+    elif etract_value is None:
+        application_node.set(f'{namespace}usesCleartextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_cleartexttraffic()
+
+def copy_new_sdk_delay_smali_kf():
+    promoter_path = os.path.join(decompile_dir_path,'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派快发初始化未完成就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_smali_kf()
+
+def fix_kf_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/kf/framework/KFApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/kf/framework/KFApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\kf\framework' in dirpath and 'KFApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'KFApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/kf/framework/KFApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_kf_application_getinstance_null_bug(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)

+ 109 - 0
script/凡人神将传Y-朱雀.py

@@ -0,0 +1,109 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("凡人神将传Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_permit_clearTextTraffic():
+    # namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'res','xml','gr_network_security_config.xml')
+    if not os.path.exists(manifest_path):
+        return
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('.//base-config')
+    print('base-config: ',application_node)
+    base_config_value = application_node.get(f'cleartextTrafficPermitted')
+    if base_config_value is not None and base_config_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'cleartextTrafficPermitted', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_permit_clearTextTraffic()
+
+
+def fix_cleartexttraffic():
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}usesCleartextTraffic')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}usesClearextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+    elif etract_value is None:
+        application_node.set(f'{namespace}usesCleartextTraffic', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+fix_cleartexttraffic()
+
+# 拷贝新版酷派延迟
+def copy_new_sdk_delay_smali_rose():
+    promoter_path = os.path.join(decompile_dir_path, 'smali/com/yulong/sdk/promoter')
+    delay_login_path = r'D:\special_problem\新版本酷派云端初始化未完成就登录\com\yulong\sdk\promoter'
+    print(promoter_path)
+    if os.path.exists(promoter_path):
+        for file_item in os.listdir(delay_login_path):
+            print(file_item)
+            smali_file_path = os.path.join(delay_login_path, file_item)
+            print(smali_file_path)
+            shutil.copy(smali_file_path, promoter_path)
+    else:
+        print('promoter 不在smali文件夹')
+        # os.makedirs(promoter_path)
+        shutil.copytree(delay_login_path, promoter_path)
+
+copy_new_sdk_delay_smali_rose()
+
+def fix_ydzs_application_getinstance_null_bug(decompile_dir):
+    insert_str_list = [
+        '\n\t.locals 1\n\n',
+        '\tsget-object v0, Lcom/ydzs/framework/YDZSApplication;->application:Landroid/content/Context;\n\n',
+        '\tcheck-cast v0, Lcom/ydzs/framework/YDZSApplication;\n\n',
+        '\treturn-object v0\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\ydzs\framework' in dirpath and 'YDZSApplication.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YDZSApplication.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static getInstance()Lcom/ydzs/framework/YDZSApplication;'
+                end_method_str = '.end method'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                del smali_str_arr[on_create_index + 1:insert_index]
+                smali_str_arr.insert(on_create_index + 1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+                break
+
+fix_ydzs_application_getinstance_null_bug(decompile_dir_path)

+ 20 - 0
script/凹凸世界Y-小绵羊.py

@@ -0,0 +1,20 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("凹凸世界Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+

+ 49 - 0
script/切菜狂人Y-小绵羊.py

@@ -0,0 +1,49 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("切菜狂人Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_xmy_webview_recharge_bug(decompile_dir_path):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSRechargeActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSRechargeActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\view\activity' in dirpath and 'SSUserCenterActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'SSUserCenterActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if 'invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V' in line:
+                        smali_str_arr[smali_str_arr.index(
+                            line)] = '\t#invoke-virtual {v0}, Lcom/yog/kothoth/view/widget/AdvancedWebView;->onPause()V\n'
+
+            with open(smali_path, 'w') as f:
+                f.write(''.join(smali_str_arr))
+
+fix_xmy_webview_recharge_bug(decompile_dir_path)

+ 35 - 0
script/创造与魔法D-小绵羊.py

@@ -0,0 +1,35 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("创造与魔法D-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# def fix_kf_not_show_fubiao_permission(decompile_dir_path):
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+#
+#         if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity.smali' in filenames:
+#             htprotect_dir_path = dirpath
+#             print(htprotect_dir_path)
+#             shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity.smali'),
+#                         htprotect_dir_path)
+#         if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity$1.smali' in filenames:
+#             htprotect_dir_path = dirpath
+#             print(htprotect_dir_path)
+#             shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity$1.smali'),
+#                         htprotect_dir_path)
+#
+# fix_kf_not_show_fubiao_permission(decompile_dir_path)

+ 47 - 0
script/剑侠世界:起源Y-小绵羊.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("剑侠世界:起源Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 47 - 0
script/剑侠世界:起源Y-朱雀.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("剑侠世界:起源Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 47 - 0
script/剑侠世界:起源Y-酷派FAKE.py

@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("剑侠世界:起源Y-酷派FAKE")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def fix_install_fail_bug(decompile_dir_path):
+    namespace = '{http://schemas.android.com/apk/res/android}'
+    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
+    manifest_path = os.path.join(decompile_dir_path, 'AndroidManifest.xml')
+    xml_tree = ET.parse(manifest_path)
+    xml_root = xml_tree.getroot()
+    application_node = xml_root.find('./application')
+    etract_value = application_node.get(f'{namespace}extractNativeLibs')
+    if etract_value is not None and etract_value == 'false':
+        # 修改extractNativeLib
+        application_node.set(f'{namespace}extractNativeLibs', 'true')
+        xml_tree.write(manifest_path, encoding='utf-8', xml_declaration=True)
+
+    yaml_path = os.path.join(decompile_dir_path, 'apktool.yml')
+    file = open(yaml_path, 'r', encoding='utf-8')
+    yaml_result = yaml.load(file, Loader=yaml.BaseLoader)
+    sdk_info = yaml_result['sdkInfo']
+    yaml_result['packageInfo']['renameManifestPackage'] = None
+    print(sdk_info)
+    if int(sdk_info['targetSdkVersion']) > 29:
+        sdk_info['targetSdkVersion'] = '29'
+        print(sdk_info)
+        file.close()
+        with open(yaml_path, 'w', encoding='utf-8') as f:
+            yaml.dump(yaml_result, f)
+
+fix_install_fail_bug(decompile_dir_path)

+ 175 - 0
script/剑灭逍遥Y-小绵羊.py

@@ -0,0 +1,175 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("剑灭逍遥Y-小绵羊")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+# 新版sdk取消登录调不起登录
+def modify_cancel_login_and_fubiao(decompile_dir):
+    insert_str_list = [
+        '\n\tinvoke-static {}, Lcom/yog/kothoth/YogSDK;->getInstance()Lcom/yog/kothoth/YogSDK;\n\n',
+        '\tmove-result-object v0\n\n',
+        '\tiget-object v1, p0, Lcom/yulong/sdk/promoter/PromoterGameAuthApi$4;->val$activity:Landroid/app/Activity;\n\n',
+        '\tcheck-cast v1, Landroid/content/Context;\n\n',
+        '\tinvoke-virtual {v0, v1}, Lcom/yog/kothoth/YogSDK;->login(Landroid/content/Context;)V\n\n']
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi$4.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi$4.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = r'sdk\u767b\u9646\u5931\u8d25:'
+                end_method_str = 'Lcom/yulong/sdk/promoter/PromoterGameAuthApi;->showLog(Ljava/lang/String;)V'
+                insert_str = ''.join(insert_str_list)
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                print(on_create_index, insert_index)
+                smali_str_arr.insert(insert_index+1, insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth\floatwindow' in dirpath and 'YogFloatWindow.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogFloatWindow.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                for line in smali_str_arr:
+                    if '0x1f4' in line:
+                        smali_str_arr[smali_str_arr.index(line)] = line.replace('0x1f4', '0xa')
+                        break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+        if r'com\yog\kothoth\data\bean' in dirpath and 'UserResult.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'UserResult.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public constructor <init>(ZLjava/lang/String;)V'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x0' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x0', '0x1')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+        if r'com\yog\kothoth' in dirpath and 'YogSDKSelf.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'YogSDKSelf.smali')
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                index_str = '.method public static isFastDoubleClick(J)Z'
+                end_method_str = '.end method'
+                on_create_index = 0
+                insert_index = 0
+                for line in smali_str_arr:
+                    if index_str in line:
+                        on_create_index = smali_str_arr.index(line)
+                        print('on_create_index', on_create_index, line)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if index > on_create_index and end_method_str in value:
+                        insert_index = index
+                        print('insert_index', index)
+                        break
+                for index, value in enumerate(smali_str_arr):
+                    if on_create_index < index < insert_index:
+                        if '0x1' in value:
+                            print(value)
+                            smali_str_arr[index] = value.replace('0x1', '0x0')
+                            break
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+# modify_cancel_login_and_fubiao(decompile_dir_path)
+
+def add_lifecycle_method_for_xmy_fubiao(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\xzg\x3dgame' in dirpath and 'X3DGameActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'X3DGameActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_index_str = r'.method public onResume()V'
+                resume_protected_index_str = r'.method protected onResume()V'
+                resume_insert_str = '\n\tinvoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onResume()V\n\n'
+                pause_insert_str = '\n\tinvoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onPause()V\n\n'
+                pause_index_str = r'.method public onPause()V'
+                pause_protected_index_str = r'.method protected onPause()V'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_index_str in value or resume_protected_index_str in value:
+                        smali_str_arr.insert(index+2, resume_insert_str)
+                    if pause_index_str in value or pause_protected_index_str in value:
+                        smali_str_arr.insert(index+2, pause_insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+add_lifecycle_method_for_xmy_fubiao(decompile_dir_path)
+
+# def fix_kf_not_show_fubiao_permission(decompile_dir_path):
+#     for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
+#
+#         if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity.smali' in filenames:
+#             htprotect_dir_path = dirpath
+#             print(htprotect_dir_path)
+#             shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity.smali'),
+#                         htprotect_dir_path)
+#         if r'com\kfsdk\wake' in dirpath and 'SplashKFActivity$1.smali' in filenames:
+#             htprotect_dir_path = dirpath
+#             print(htprotect_dir_path)
+#             shutil.copy(os.path.join(r'D:\special_problem\首次安装未获取悬浮窗权限问题\xmy', 'SplashKFActivity$1.smali'),
+#                         htprotect_dir_path)
+#
+# fix_kf_not_show_fubiao_permission(decompile_dir_path)
+
+def del_lifecycle_method_for_xmy_promtor(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\yulong\sdk\promoter' in dirpath and 'PromoterGameAuthApi.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'PromoterGameAuthApi.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_str = 'invoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onResume()V'
+                pause_str = 'invoke-static {}, Lcom/kf/framework/SDKPluginWrapper;->onPause()V'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_str in value or pause_str in value:
+                        smali_str_arr[index] = f'#{value}'
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+del_lifecycle_method_for_xmy_promtor(decompile_dir_path)

+ 42 - 0
script/剑灭逍遥Y-朱雀.py

@@ -0,0 +1,42 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import sys
+import json
+import os
+import re
+import shutil
+import subprocess
+import xml.etree.ElementTree as ET
+import zipfile
+
+import win32api
+import win32con
+import yaml
+print("剑灭逍遥Y-朱雀")
+print(sys.argv)
+decompile_dir_path = sys.argv[1]
+print(decompile_dir_path)
+
+def add_lifecycle_method_for_rose_fubiao(decompile_dir):
+    for dirpath, dirnames, filenames in os.walk(decompile_dir):
+        if r'com\xzg\x3dgame' in dirpath and 'X3DGameActivity.smali' in filenames:
+            smali_path = os.path.join(dirpath, 'X3DGameActivity.smali')
+            print(smali_path)
+            with open(smali_path, 'r', encoding='utf-8') as f:
+                smali_str_arr = f.readlines()
+                resume_index_str = r'.method public onResume()V'
+                resume_protected_index_str = r'.method protected onResume()V'
+                resume_insert_str = '\n\tinvoke-static {}, Lcom/ydzs/framework/SDKPluginWrapper;->onResume()V\n\n'
+                pause_insert_str = '\n\tinvoke-static {}, Lcom/ydzs/framework/SDKPluginWrapper;->onPause()V\n\n'
+                pause_index_str = r'.method public onPause()V'
+                pause_protected_index_str = r'.method protected onPause()V'
+                for index, value in enumerate(smali_str_arr):
+                    if resume_index_str in value or resume_protected_index_str in value:
+                        smali_str_arr.insert(index+2, resume_insert_str)
+                    if pause_index_str in value or pause_protected_index_str in value:
+                        smali_str_arr.insert(index+2, pause_insert_str)
+            with open(smali_path, 'w', encoding='utf-8') as f:
+                f.write(''.join(smali_str_arr))
+
+add_lifecycle_method_for_rose_fubiao(decompile_dir_path)

+ 0 - 0
script/劲舞时代Y-小绵羊.py


Неке датотеке нису приказане због велике количине промена