Cnass commited on
Commit
5dc6044
·
verified ·
1 Parent(s): d596d88

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -22
app.py CHANGED
@@ -46,7 +46,6 @@ async def generate_dll(
46
  subprocess.run(["/app/dumper/Il2CppDumper", binary_path, metadata_path, output_dir], capture_output=True)
47
  except subprocess.CalledProcessError: pass
48
 
49
- # YENİLİK: Artık tek bir DLL yerine tüm DLL klasörünü ZIP olarak yolluyoruz.
50
  dummy_dll_dir_1 = os.path.join(output_dir, "DummyDll")
51
  dummy_dll_dir_2 = os.path.join(output_dir, "DummyDlls")
52
  target_dir = dummy_dll_dir_1 if os.path.exists(dummy_dll_dir_1) else dummy_dll_dir_2
@@ -70,30 +69,35 @@ async def extract_dialogues(
70
  ):
71
  temp_dir = tempfile.mkdtemp()
72
  asset_path = os.path.join(temp_dir, file.filename)
73
-
74
  with open(asset_path, "wb") as f: f.write(await file.read())
75
 
76
- load_paths = [asset_path]
 
 
77
  if assembly_file:
78
  assembly_path = os.path.join(temp_dir, assembly_file.filename)
79
  with open(assembly_path, "wb") as f: f.write(await assembly_file.read())
80
 
81
- # YENİLİK: Eğer kullanıcı DummyDlls.zip yüklediyse onu aç ve içindeki TÜM DLL'leri tarat
 
 
82
  if assembly_file.filename.endswith(".zip"):
83
- dummy_dll_dir = os.path.join(temp_dir, "ExtractedDlls")
84
- os.makedirs(dummy_dll_dir, exist_ok=True)
85
  with zipfile.ZipFile(assembly_path, 'r') as zipf:
86
  zipf.extractall(dummy_dll_dir)
87
- for root, _, files in os.walk(dummy_dll_dir):
88
- for dll_file in files:
89
- if dll_file.endswith(".dll"):
90
- load_paths.append(os.path.join(root, dll_file))
91
  else:
92
- load_paths.append(assembly_path)
 
 
 
 
 
 
 
 
 
 
93
 
94
- env = UnityPy.load(*load_paths)
95
  zip_filename = os.path.join(temp_dir, f"{file.filename}_dialogues.zip")
96
-
97
  extracted_count = 0
98
  log_content = ["=== UNITYPY İŞLEM RAPORU ==="]
99
 
@@ -138,24 +142,28 @@ async def repack_dialogues(
138
  with open(asset_path, "wb") as f: f.write(await asset_file.read())
139
  with open(zip_path, "wb") as f: f.write(await mod_zip.read())
140
 
141
- load_paths = [asset_path]
 
142
  if assembly_file:
143
  assembly_path = os.path.join(temp_dir, assembly_file.filename)
144
  with open(assembly_path, "wb") as f: f.write(await assembly_file.read())
145
 
 
 
 
146
  if assembly_file.filename.endswith(".zip"):
147
- dummy_dll_dir = os.path.join(temp_dir, "ExtractedDlls")
148
- os.makedirs(dummy_dll_dir, exist_ok=True)
149
  with zipfile.ZipFile(assembly_path, 'r') as zipf:
150
  zipf.extractall(dummy_dll_dir)
151
- for root, _, files in os.walk(dummy_dll_dir):
152
- for dll_file in files:
153
- if dll_file.endswith(".dll"):
154
- load_paths.append(os.path.join(root, dll_file))
155
  else:
156
- load_paths.append(assembly_path)
 
 
 
 
 
 
 
157
 
158
- env = UnityPy.load(*load_paths)
159
  with zipfile.ZipFile(zip_path, 'r') as zipf:
160
  for file_info in zipf.infolist():
161
  filename = file_info.filename
 
46
  subprocess.run(["/app/dumper/Il2CppDumper", binary_path, metadata_path, output_dir], capture_output=True)
47
  except subprocess.CalledProcessError: pass
48
 
 
49
  dummy_dll_dir_1 = os.path.join(output_dir, "DummyDll")
50
  dummy_dll_dir_2 = os.path.join(output_dir, "DummyDlls")
51
  target_dir = dummy_dll_dir_1 if os.path.exists(dummy_dll_dir_1) else dummy_dll_dir_2
 
69
  ):
70
  temp_dir = tempfile.mkdtemp()
71
  asset_path = os.path.join(temp_dir, file.filename)
 
72
  with open(asset_path, "wb") as f: f.write(await file.read())
73
 
74
+ env = UnityPy.load(asset_path)
75
+
76
+ # EĞER KULLANICI DUMMYDLLS.ZIP YÜKLEDİYSE:
77
  if assembly_file:
78
  assembly_path = os.path.join(temp_dir, assembly_file.filename)
79
  with open(assembly_path, "wb") as f: f.write(await assembly_file.read())
80
 
81
+ dummy_dll_dir = os.path.join(temp_dir, "ExtractedDlls")
82
+ os.makedirs(dummy_dll_dir, exist_ok=True)
83
+
84
  if assembly_file.filename.endswith(".zip"):
 
 
85
  with zipfile.ZipFile(assembly_path, 'r') as zipf:
86
  zipf.extractall(dummy_dll_dir)
 
 
 
 
87
  else:
88
+ # Sadece tek bir DLL dosyasıysa onu da klasöre kopyala
89
+ import shutil
90
+ shutil.copy2(assembly_path, os.path.join(dummy_dll_dir, assembly_file.filename))
91
+
92
+ # İŞTE EKSİK OLAN O ALTIN KOD: TYPE TREE GENERATOR API
93
+ try:
94
+ from UnityPy.helpers.TypeTreeGenerator import TypeTreeGenerator
95
+ # Çıkartılan tüm DLL'lerin olduğu klasörü API'ye gösteriyoruz.
96
+ env.typetree_generator = TypeTreeGenerator(dummy_dll_dir)
97
+ except Exception as e:
98
+ pass
99
 
 
100
  zip_filename = os.path.join(temp_dir, f"{file.filename}_dialogues.zip")
 
101
  extracted_count = 0
102
  log_content = ["=== UNITYPY İŞLEM RAPORU ==="]
103
 
 
142
  with open(asset_path, "wb") as f: f.write(await asset_file.read())
143
  with open(zip_path, "wb") as f: f.write(await mod_zip.read())
144
 
145
+ env = UnityPy.load(asset_path)
146
+
147
  if assembly_file:
148
  assembly_path = os.path.join(temp_dir, assembly_file.filename)
149
  with open(assembly_path, "wb") as f: f.write(await assembly_file.read())
150
 
151
+ dummy_dll_dir = os.path.join(temp_dir, "ExtractedDlls")
152
+ os.makedirs(dummy_dll_dir, exist_ok=True)
153
+
154
  if assembly_file.filename.endswith(".zip"):
 
 
155
  with zipfile.ZipFile(assembly_path, 'r') as zipf:
156
  zipf.extractall(dummy_dll_dir)
 
 
 
 
157
  else:
158
+ import shutil
159
+ shutil.copy2(assembly_path, os.path.join(dummy_dll_dir, assembly_file.filename))
160
+
161
+ try:
162
+ from UnityPy.helpers.TypeTreeGenerator import TypeTreeGenerator
163
+ env.typetree_generator = TypeTreeGenerator(dummy_dll_dir)
164
+ except Exception as e:
165
+ pass
166
 
 
167
  with zipfile.ZipFile(zip_path, 'r') as zipf:
168
  for file_info in zipf.infolist():
169
  filename = file_info.filename