Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Locura_23 en 23 Julio 2021, 03:34 am



Título: Acceder al codigo de un videojuego?
Publicado por: Locura_23 en 23 Julio 2021, 03:34 am
Buenas comunidad, siendo un completo novato en hacking, puede que esta sea una pregunta un tanto general... Como es el método para acceder al código de un videojuego ? Por ejemplo, para hacer mods, traducciones o cracks. Qué conceptos habria que investigar?
Imagino que parte del proceso es acceder al codigo fuente, reconocer el lenguaje en que esta escrito y de ahí modificarlo...


Título: Re: Acceder al codigo de un videojuego?
Publicado por: Serapis en 24 Julio 2021, 14:47 pm
No hay un 'método' genérico (por decirlo de alguna manera) que esté demarcado, cada caso sigue sus propias pautas, aunque estas si son genéricas.

Si dispones del código fuente, la modificación del mismo, no podrá llamarse 'hacking' si no programación. Y en ese sentido, 'reconocer el lenguaje en que está escrito', obviamente será preciso conocerlo si no sabes programar en tal lenguaje poco podrás hacer.

El paso básico es usar desemsambladores (de diversa índole), que básicamente te ayudan a identificar el punto exacto donde uno quiera 'meter mano' y desde ahí se requieren los conocimientos necesarios para hacer la modificación pertinente que a uno le interese. Al desemsamblar, no importa el lenguaje en que originalmente se escribió el código, normalmente el proceso de compilación suele dificultar al extremo de hacer imposible recuperar el código fuente original incluso sabiendo el lenguaje en que fue escrito, porque noralmente el compilador realiza optimizaciones que anulan el reconocimiento de la semántica de un supuesto lenguaje fuente.
Además, el caso se complica dado la diversidad de plataformas de destino... al hablar de videojuegos, necesariamenter hay que incluir las diversas plataformas que ofrecen las consolas, luego puede complicarse en exceso si el interesado desconoce por completo el hardware y el ensamblador destino donde corre el videojuego.
Aunque lo habitual es asumir que se corre en un pc...

Cada programador/equipo de programación, diseña sus propias estrategias, por lo que fácilmente un 'método' seguido para desentrañar las traducciones para un videojuego, pueden ser inútiles al tratar de aplicarlo a otro. Es esa diversidad, junto con las plataformas de destino lo que lo complican, así como el paso del tiempo (se actualizan conociendo que un sistema ha sido vulnerado, intentarán (se supone), alterarlo para hacerlo más complicado (sea o no efectivo), aunque eso lleva tiempo y  varios títulos del mismo equipo, pued epor tanto seguir pautas apenas divergentes.

Tus primeras tareas serían: conocer por encima el hardware destino, comocer el ensamblador destino, conocer los programas que puede haber (o crear tus propias herramientas, algo necesario cuando no encuentres nada al respecto) para abrir, estudiar y modificar el código, conocer la estructura y organización de los videojuegos (si sabe sprogramar videojuegos, serás capaz de reconocer o interpretar como se ha hecho qué o dónde, en qué punto debería encontrarse una llamada a...)... por ejemplo si no sabes qué es un sprite y como se guardan tales imágenes, el intento de querer cambiar una imagen específica podrá darte dolores de cabezas.

Es un mundo bastante amplio, d ela noche a la mañana, desde luego no podrás seguir un 'método', cual si fueran pasos (salvo que se refiera a un juego específico y determinado para el cual se hayan señalado los pasos para hacer tal o cual modificación... mucha gente empieza así, operando con un juego más o menos simple que le sirva de modelo para iniciarse y empezar a aplicar ingeniería inversa con sus conocimientos).

Recomiendo como algo exigible para la ingeniería inversa, conocer ensamblador y luego según en qué rama... conocimientos específicos a la misma (ingeniería inversa de videojuegos, pués conocimientos específicos sobre videojuegos, idem para S.O., ejecutables, drivers, etc...), de otro modo es perder el tiempo jugando a 'voy a cambiar esto a ver qué pasa...'
...que es la técnica más pobre y a veces la única cuando no hay info disponible de ningún tipo (caso por ejemplo de plataformas obsoletas décadas atrás y de las que no se ha conservado gran cosa o de plataformas de muy reciente aparición).


Título: Re: Acceder al codigo de un videojuego?
Publicado por: Locura_23 en 24 Julio 2021, 19:05 pm
Gracias por tu respuesta @Serapis muy informativa. Estaba tan en la oscuridad con el tema que hasta lo había puesto en la categoría hacking  :xD

Ya veo que es toda una rama nueva para aprender, muy interesante. Es cierto que los desarrolladores de videojuegos son los que más utilizan el ensamblador y tecnologías de procesador para hacer sus videojuegos  ir bien con las computadoras de esa epoca...

Crees que estudiar el lenguaje ensamblador de Intel puede ser una buena manera de comenzar? para poder orientarse a juegos de pc. Luego comence con el curso de Ricardo Narvaja que recomendaron por acá...

Saludos


Título: Re: Acceder al codigo de un videojuego?
Publicado por: BloodSharp en 24 Julio 2021, 19:40 pm
Crees que estudiar el lenguaje ensamblador de Intel puede ser una buena manera de comenzar? para poder orientarse a juegos de pc.

Si y no, depende de cuál sea la plataforma a la que el juego esté compilado, por ejemplo un juego en Unity que se lo compila con C# puede estar compilado en MSIL (https://es.wikipedia.org/wiki/Common_Intermediate_Language) y probablemente tus modificaciones vayan a estar hechas en .NET también, con excepción si el juego está hecho con IL2CPP el cuál si vas a poder desamblar con lenguaje ensamblador de Intel y grán parte hecha con C/C++...


B#


Título: Re: Acceder al codigo de un videojuego?
Publicado por: Locura_23 en 25 Julio 2021, 06:00 am
@BloodSharp entiendo,lo tendré en cuenta. Gracias por tu aporte  :) En todo caso, supongo que a medida que el juego es más actual, tiene mejor seguridad en cuanto cracks y demás no?


Título: Re: Acceder al codigo de un videojuego?
Publicado por: Serapis en 26 Julio 2021, 02:16 am
En todo caso, supongo que a medida que el juego es más actual, tiene mejor seguridad en cuanto cracks y demás no?
Esto es mucho suponer.
Se acepta que cada vez hay mejor seguridad en los videojuegos, pero es que a su vez al ir constantemente apareciendo nuevas herramientas de desarrollo (incluído el hardware), pues está sujeto a los fallos de la novedad y a los fallos de la falta de conocimiento experto del sistemam, esto es tanto más cierto cuanto más novedoso.

Resumiendo, puede afirmarse que 'el que busca encuentra...'

El programador de videojuegos no necesita saber siquiera ensamblador, pero tanto en cuanto un programa es finalmente compilado (o compilado a un código intermedio), el que intente hackear el juego/programa, necesita desemsamblar... pero si va a desemsamblar juegos si necesita tener conocimientos sobre programar videojuegos. Del mismo modo que un tornero sabe 'frabricar piezas', si además intenta modificar las de un avión, necesita entender el mecanismo sobre el que trabaja para que la pieza cumpla las condiciones adecuadas a las funciones que debe realizar la pieza y no meramente copiarla sin siquiera saber qué metales entran en su composición. Espero que el símil sea entendible.