Created
March 19, 2023 03:05
-
-
Save ImanCol/dd99133c5487ba19500a0adb2acca4bb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import tkinter as tk | |
from tkinter import filedialog | |
import hashlib | |
import os | |
import sys | |
import ctypes | |
import subprocess | |
# Función para verificar si se tienen permisos de administrador | |
def is_admin(): | |
try: | |
return ctypes.windll.shell32.IsUserAnAdmin() | |
except: | |
return False | |
# Función para parchear el archivo DLL | |
def patch_dll(): | |
file_path = file_var.get() | |
try: | |
with open(file_path, 'rb') as file: | |
data = file.read() | |
m = hashlib.sha1() | |
m.update(data) | |
file_hash = m.hexdigest() | |
previously_patched_hash = '2241a9985e5e65b675bfa384ecc1463432418cb2' | |
if file_hash == previously_patched_hash: | |
status_label.config(text='El archivo ya ha sido parcheado previamente.') | |
else: | |
expected_hash = 'f0a7daa52e9d9f7761a1afaad45c09c9bc9e9eba' | |
if file_hash == expected_hash: | |
with open(file_path, 'r+b') as file: | |
file.seek(0x3ACD5) | |
file.write(b'\x32') | |
status_label.config(text='Archivo DLL parcheado correctamente.') | |
else: | |
status_label.config(text='El archivo no es el esperado. Busque el archivo UnityEditor.Switch.Extensions.Native.dll') | |
except IOError: | |
status_label.config(text='Error al abrir el archivo DLL.') | |
# Si no se tienen permisos de administrador, se solicitan | |
if not is_admin(): | |
args = ' '.join([f'"{arg}"' for arg in sys.argv]) | |
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, args, None, 1) | |
sys.exit() | |
# Creación de la ventana | |
root = tk.Tk() | |
root.title('Parche de archivo DLL') | |
# Creación de los elementos de la ventana | |
file_var = tk.StringVar() | |
file_label = tk.Label(root, text='Seleccione un archivo DLL: UnityEditor.Switch.Extensions.Native.dll') | |
file_label.pack() | |
file_entry = tk.Entry(root, textvariable=file_var) | |
file_entry.pack() | |
file_button = tk.Button(root, text='Buscar archivo', command=lambda: file_var.set(tk.filedialog.askopenfilename(filetypes=[('dll file', 'UnityEditor.Switch.Extensions.Native.dll')], title="Seleccione UnityEditor.Switch.Extensions.Native.dll"))) | |
file_button.pack() | |
patch_button = tk.Button(root, text='Parchear archivo', command=patch_dll) | |
patch_button.pack() | |
status_label = tk.Label(root, text='') | |
status_label.pack() | |
root.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment