Unreal Engine 2.5 MOBA Client -- 2

Job ID: 39941933

Budget: $250 – $750 USD

Descripción del proyecto

Busco un desarrollador/ingeniero con experiencia en reverse engineering y redes para videojuegos legacy (Unreal Engine 2.x) que nos ayude a reproducir y documentar el protocolo de conexión de un cliente de juego y permitir su ejecución en un entorno de pruebas controlado.

Contexto: dispongo de una instalación local de pruebas donde el cliente establece una conexión TCP con un servidor simulado. Ya se ha implementado un stub básico que responde al handshake inicial y permite intercambiar paquetes de prueba. El cliente procesa los primeros mensajes, pero al recibir el paquete principal (blob) toma una decisión lógica interna y cierra la conexión. El objetivo es identificar la validación exacta que causa ese cierre y permitir que el cliente continúe hasta la pantalla de lobby en el entorno de pruebas.

Objetivos principales

1. Analizar y documentar las rutinas que procesan los paquetes recibidos por el cliente y determinar la condición o comparación que provoca el cierre del socket.


2. Proponer e implementar (según el alcance acordado) una solución técnica que permita al cliente aceptar la secuencia completa de paquetes en el entorno de pruebas: esto puede incluir ajustar la estructura de las respuestas del stub, desarrollar hooks temporales, o proponer un parche documentado.


3. Validar la solución hasta lograr que el cliente avance al estado de lobby (u otro estado funcional definido), y dejar documentación clara del proceso y de los cambios realizados.



Tareas esperadas (detalladas)

Auditoría del código nativo y del flujo de red en las DLLs relevantes: localizar funciones y offsets implicados en recv/send, cola de paquetes, y la rutina que decide cerrar la sesión.

Instrumentación dinámica: establecer breakpoints, volcados de memoria de los buffers recibidos, y captura de registros/stack para reproducir y documentar la condición de fallo.

Ajustes en el servidor de pruebas (stub): definir formato exacto del paquete esperado (cabeceras, longitudes, sub-bloques, eco de ticks, posibles checksums) y modificar el stub para generar respuestas que el cliente acepte.

Si procede, proponer y, con aprobación, aplicar un método de intervención temporal (hooking, proxy DLL, parche) para neutralizar la validación durante pruebas, siempre registrando y documentando cada cambio.

Entregar un informe final con: offsets y funciones relevantes identificadas, descripción del formato del paquete correcto, código actualizado del stub (o instrucciones para reproducirlo), logs de prueba y pasos para reproducir la sesión que lleva al lobby.


Entregables esperados

Informe técnico con los hallazgos y la explicación de la causa raíz del cierre de conexión.

Stub de pruebas ajustado (o instrucciones precisas para generarlo) que permita la interacción completa hasta el lobby.

Lista de offsets / funciones observadas y recomendaciones para intervenciones (hooks/parches) si fueran necesarias.

Registros de pruebas que demuestren el flujo correcto y la reproducibilidad (logs y volcados de memoria descriptos en el informe).

Código fuente comentado de cualquier script o parche desarrollado.

Requisitos del candidato

Experiencia comprobable en C/C++ nativo y proyectos basados en Unreal Engine 2.x (o similar).

Conocimientos sólidos de WinSock / TCP a bajo nivel y depuración de red.

Manejo de herramientas de ingeniería inversa y depuración: x32dbg / IDA / Ghidra / Windbg / Visual Studio Debugger.

Experiencia construyendo o adaptando stubs/servidores de pruebas y trabajando con protocolos propietarios.

Buena documentación técnica y comunicación clara en español (o inglés, a convenir).

Proceso de selección / criterios de evaluación

Experiencia demostrable similar en proyectos legacy de videojuegos o protocolos propietarios.

Claridad en la propuesta técnica: enfoque por fases, tiempos estimados por hitos y entregables.

Buena comunicación y disposición para documentar cada paso y entregar pruebas reproducibles.