Registrarse

[Otros] ROM Hacking con Python

Buenas Gente :D

Hacía mucho que no entraba por aqui por falta de tiempo y siempre quise hace un tutorial basico para los que empiezan para crear vuestras propias herramientas, en python (el lenguaje que más controlo)

-------------------------------------------------------------------------
NO SE SI ESTO VA AQUI SI NO QUE LO MUEVAN A LA SECCION DONDE VAYA
-------------------------------------------------------------------------

INSTALAR PYTHON
Por si no lo teneis instalado os voy a enseñar, es muy facil. En este tutorial trabajaré con python 3.X (concretamente 3.4 pero las versiones no cambian) aunque la mayoria de cosas deberian funcionar en python 2.X sin muchos cambios o sin ninguno

Python 3.4 --> https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi

Descargais el ejecutable (extension .msi) y lo lanzais, next next next.. listo!, si usais linux.. Suerte! Python viene preinstalado y concretamente python 3.X y python 2.X


1. Abriendo Archivos / leer / escribir

a) Como se abren archivos?

objetoArchivo = open("ruta.rom", "rb")

Con esta sentencia creamos un objeto llamado objetoArchivo el cual contiene el archivo ruta.rom y lo abre de forma ReadBytes --> Es decir que vamos a leer bytes (si quieisetamos leer texto se usa solamente "r")




b) Y asi se hace para escribir

objetoArchivo = open("ruta.rom", "wb")

Con esta sentencia creamos un objeto llamado objetoArchivo el cual contiene el archivo ruta.rom y lo abre de forma WriteBytes --> Es decir que vamos a escribir bytes (si quieisetamos escribir texto se usa solamente "w")

RESUME PARTE 1
ABRIR ARCHIVOS --> f = open(ruta, modo)
RUTA --> ejemplo 'C:\proyectos\pokemon.gba' (windows)
MODO --> 'w' (escribir texto)
'r' (leer texto)
'wb' (escribir bytes)
'rb' (leer bytes)

Una vez que acabemos de hacer cualquier cosa con el archivo tenemos que cerrar el objeto --> objetoArchivo.close()

NOTA: Ahi arriba puse f en vez de objetoArchivo porque es mucho más corto

-------------------------------------------------------------------------

2. CONVERSIONES EN PYTHON

String (texto) a hexadecimal:

import binascii
texto = "texto"
hexadec = binascii.hexlify(texto)

aqui hexadec seria -> 746578746f

Hexadecimal a string (texto):

import binascii
hexadec = b'696d706f7274' ---> 69 6D 70 6F 72 74
texto = binascii.unhexlify(hexadec)

Aqui texto seria -> "import"

Así facilmente podemos convertir texto a hexadecimal por si queremos inyectarlo en alguna parte de la rom
------------------------------------------------------------------------------------------------------------------

PD: Voy a ir ampliando este tutorial espero que os sirva :XD:
Un saludo
 
Última edición por un moderador:

Oigres

Wuɔɥo ɐ ɯuɔɥo
Respuesta: [TUTORIAL][BASICO] Rom Hacking con Python

Mola, pero... ¿no deberías completar con un poquito más? Es decir, así, tal cual, como está ahora, no sirve para nada... creo. Pero es un aportazo, gracias! Espero que sigas con este tutorial!
 
Respuesta: [TUTORIAL][BASICO] Rom Hacking con Python

Esque es de noche (en España) y no tengo muchas ganas de escribir ahora pero mañana al mediodia empezaré a ampliar y mejorar el tutorial.

:)
 
Re: [TUTORIAL][BASICO] Rom Hacking con Python

Interesante post, espero que lo amplíes y pongas el código un poco más limpio XD, yo también he hecho mis pinitos en python y más de alguna vez pensé en hacer alguna prueba con ROMs pero siempre me dio pereza XD @cosarara97 ya ha hecho bastante en el campo de python para la edición de ROMs, hizo un editor de mapas y un editor de scripts.
 
Respuesta: [TUTORIAL][BASICO] Rom Hacking con Python

Muchas Gracias Polectron :blush:
Efectivamente ya habia visto un tutorial de cosarara aunque estaba un poco desordenado y la forma de trabajar con los archivos me pareció sucia pero estaba bien de todas formas.

Como es la primera vez que hago tutoriales de rom hacking (yo vengo de la scene de 3ds donde hay que descifrar las roms y muchos tinglados mas jaja) os recomiendo que me sugirais lo que quereis que enseñe o muestre :)

Saludos!
 
Respuesta: GBA | Otros | [Básico] ROM Hacking con Python

Perdonadme la tardanza de actualizar el tutorial, he estado una semana en Londres y no he podido pasarme a actualizar

Pero ya me pongo las pilas :awesome:

Saludos!
 
Arriba