Hola gente como estan?
Bien aquí les traigo como desbloquear un proyecto de WinProLadder protegido por contraseña, este proyecto puede ser un proyecto guardado o estar ya grabado/subido en el PLC, como ya se sabe de marca Fatek.
Bien para empezar se abre el programa, se carga el proyecto o se conecta al plc y se intenta descargar el mismo.
Una vez abierto/descargado, solicitará el password:
Aquí escribimos cualquier numero y le damos ok.
Veremos el siguiente mensaje (No le damos a Aceptar, y abrimos OllyDbg):
Una vez abierto el Olly, attachamos el proceso, para ello vamos a la opcion File-->attach
Nos aparecerá el dialogo siguiente, donde buscamos en la lista, la instancia al proceso WinProLadder, y la atachamos:
Una vez atachado, el proceso queda pausado en la instruccion siguiente:
Aqui empezamos a darle a Ctrl+F9 hasta llegar al siguiente código:
Analizando el código anterior, llegamos a la conclusión de que esta función es la que muestra el mensaje de error de chequeo, pero no comprueba nada, por ello continuo con Ctrl+F9 para salir de la misma y llegar al siguiente código:
Una vez retornamos, nos encontramos con el código de la imagen anterior, como se puede apreciar yo recuadré tres llamadas a función, que son las que me llamaron la atención, la primera que hace referencia a "TPLCMem", la segunda a "@Controls@TControl@GetText$qqrv", y la tercera que es de la cual nosotros hemos retornado.
Bien por que las he recuadrado se preguntarán, pues porque según mis años de experiencia y mi intuición me dicen que esas dos funciones anteriores a la del mensaje son las que obtienen los datos de chequeo, y las siguientes call son de comprobaciones varias, y como se puede apreciar inmediatamente anterior a la llamada de la que retornamos, hay un pequeño trozo de código con dos saltos un JZ y un JMP como se sabe el JZ es un salto condicional en caso de ser cero y el JMP es un salto incondicional, en el caso de que el pass sea incorrecto la comparación da cero y el JZ se activa llevándonos al mensaje de error de chequeo, caso contrario va por el JMP y nos deja acceder al proyecto para edición.
An fin, prefiero hacerle caso a mi intuición (y no complicar las cosas con tanto análisis), entonces pongo dos BP uno en la primer función y otro en la segunda de las tres que resalté le doy a run al olly, acepto el mensaje de error ingreso nuevamente un pass erróneo y doy aceptar, al instante de darle aceptar el olly quiebra en el primer BP:
Una vez pase la primer call con F8 (recuadrada en la imagen anterior a la izquierda), se puede apreciar en la ventana de abajo a la derecha (Stack o Pila) una pequeña cadena de caracteres numéricos, los cuales también he resaltado con un recuadro rojo.
Sigo depurando hasta pasar el otro BP y ejecutar la segunda función misteriosa:
Al igual que en la función anterior me retorna otra cadena que guarda justo debajo de la anterior (ambas resaltadas en el recuadro rojo de abajo a la derecha), esta segunda cadena me resulta familiar, ya que es el password que he ingresado erróneamente para hacer las pruebas, con lo cual la primer cadena debería ser el password original del proyecto, realizamos la prueba y como era de esperarse, estamos en lo correcto.
Bien hemos logrado nuestro cometido, poder acceder al proyecto, así que aquí concluye este pequeño tutorial.
No duden en consultar ante cualquier duda!
En la medida que tenga tiempo y los recursos, iré realizando mas tutoriales sobre otros sistemas.
Saludos!!!