multi / surgery.py
webzepetoku's picture
Update surgery.py
0da74b6 verified
Raw
History Blame Contribute Delete
2.58 kB
import UnityPy
import sys
import os
def extract_assets(folder_path):
meshes = []
textures = []
for root, dirs, files in os.walk(folder_path):
for file_name in files:
file_path = os.path.join(root, file_name)
try:
env = UnityPy.load(file_path)
for obj in env.objects:
if obj.type.name == "Mesh":
meshes.append(obj.get_raw_data())
elif obj.type.name == "Texture2D":
textures.append(obj.get_raw_data())
except Exception:
continue
return meshes, textures
def inject_assets(folder_path, hp_meshes, hp_textures):
modified_any = False
for root, dirs, files in os.walk(folder_path):
for file_name in files:
file_path = os.path.join(root, file_name)
try:
env = UnityPy.load(file_path)
file_modified = False
m_idx = 0
t_idx = 0
for obj in env.objects:
if obj.type.name == "Mesh" and m_idx < len(hp_meshes):
obj.set_raw_data(hp_meshes[m_idx])
m_idx += 1
file_modified = True
modified_any = True
elif obj.type.name == "Texture2D" and t_idx < len(hp_textures):
obj.set_raw_data(hp_textures[t_idx])
t_idx += 1
file_modified = True
modified_any = True
if file_modified:
# SIMPAN FILE MENIMPA ASLINYA (UABE METHOD) AGAR CAB TETAP VALID
with open(file_path, "wb") as f:
f.write(env.file.save())
print(f"[UABE-PYTHON] 🎯 Biner {file_name} ditimpa! CAB aman!")
except Exception:
continue
return modified_any
if __name__ == "__main__":
if len(sys.argv) < 3:
sys.exit(1)
dummy_dir = sys.argv[1]
hp_dir = sys.argv[2]
print("[UABE-PYTHON] Mengambil data biner murni dari Raksasa...")
meshes, textures = extract_assets(hp_dir)
print(f"[UABE-PYTHON] Menemukan {len(meshes)} Mesh dan {len(textures)} Texture. Menyuntikkan ke Dummy...")
if inject_assets(dummy_dir, meshes, textures):
print("[SUCCESS] Operasi UABE In-Place berhasil mutlak!")
else:
print("[FAIL] Gagal melakukan modifikasi biner.")
sys.exit(1)