Ingenieria Inversa

Iniciado por jolypc, 15 Agosto 2009, 22:53 PM

0 Miembros y 1 Visitante están viendo este tema.

jolypc

Ya he probado con editor de recursos y las opciones que necesito se muestran "Enable" tambien he atacado por la API enablemenuitem y tampoco he logrado nada relevante; principalmente con la version demo. Desde mi modesta opinion: Creo que desactiva las opciones en tiempo de ejecución, en este tema tambien le he seguido la pista mediante el ID que tienen las opciones y que encontré con el editor de recursos pero sin resultados aún, ya que no encuentro donde me desactiva las opciones.

Les explico que me estoy iniciando en el tema y no conozco las interioridades de la programación. Todo lo que he logrado ha sido leyendo tutoriales que bajé de la pagina de Ricardo Narvaja y otros sitios.

Repito mis únicos logros:

versión Demo:
Evitar que caduque al año, sin tener que ingresar un código.
Que abra archivos realizados en otras versiones.

Versión oficial:
Que arranque sin la llave de Hardware o mochila.

A los interesados en ayudarme, bajen las versiones a través de los link que publiqué en mensajes anteriores, echenle un vistazo y aunque sea, enseñenme una pista por donde atacar.

Esta es mi dirección de correo:

jolypc@gmail.com

LSL

Hola jolypc, no son pocos los logros que as conseguido, el que la sigue la consigue.

te doy una pista de donde se habilitan ciertas opciones:

00402DF0  /$  8B81 84070000 MOV EAX,DWORD PTR DS:[ECX+784]
00402DF6  \.  C3            RETN
00402DF7      CC            INT3
00402DF8      CC            INT3
00402DF9      CC            INT3
00402DFA      CC            INT3
00402DFB      CC            INT3
00402DFC      CC            INT3
00402DFD      CC            INT3
00402DFE      CC            INT3
00402DFF      CC            INT3
00402E00  /$  E8 8B120800   CALL EasyPowe.00484090
00402E05  |.  8A80 A8070000 MOV AL,BYTE PTR DS:[EAX+7A8]
00402E0B  \.  C3            RETN
00402E0C      CC            INT3
00402E0D      CC            INT3
00402E0E      CC            INT3
00402E0F      CC            INT3
00402E10  /$  E8 7B120800   CALL EasyPowe.00484090
00402E15  |.  8A80 A7070000 MOV AL,BYTE PTR DS:[EAX+7A7]
00402E1B  \.  C3            RETN
00402E1C      CC            INT3
00402E1D      CC            INT3
00402E1E      CC            INT3
00402E1F      CC            INT3
00402E20  /$  E8 6B120800   CALL EasyPowe.00484090
00402E25  |.  8A80 A3070000 MOV AL,BYTE PTR DS:[EAX+7A3]
00402E2B  \.  C3            RETN
00402E2C      CC            INT3
00402E2D      CC            INT3
00402E2E      CC            INT3
00402E2F      CC            INT3
00402E30  /$  E8 5B120800   CALL EasyPowe.00484090
00402E35  |.  8A80 A4070000 MOV AL,BYTE PTR DS:[EAX+7A4]
00402E3B  \.  C3            RETN
00402E3C      CC            INT3
00402E3D      CC            INT3
00402E3E      CC            INT3
00402E3F      CC            INT3
00402E40  /$  E8 4B120800   CALL EasyPowe.00484090
00402E45  |.  8A80 A2070000 MOV AL,BYTE PTR DS:[EAX+7A2]
00402E4B  \.  C3            RETN
00402E4C      CC            INT3
00402E4D      CC            INT3
00402E4E      CC            INT3
00402E4F      CC            INT3
00402E50  /$  E8 3B120800   CALL EasyPowe.00484090
00402E55  |.  8A80 A5070000 MOV AL,BYTE PTR DS:[EAX+7A5]
00402E5B  \.  C3            RETN
00402E5C      CC            INT3
00402E5D      CC            INT3
00402E5E      CC            INT3
00402E5F      CC            INT3
00402E60  /$  E8 2B120800   CALL EasyPowe.00484090
00402E65  |.  8A80 9F070000 MOV AL,BYTE PTR DS:[EAX+79F]
00402E6B  \.  C3            RETN
00402E6C      CC            INT3
00402E6D      CC            INT3
00402E6E      CC            INT3
00402E6F      CC            INT3
00402E70  /$  E8 1B120800   CALL EasyPowe.00484090
00402E75  |.  8A80 9E070000 MOV AL,BYTE PTR DS:[EAX+79E]
00402E7B  \.  C3            RETN
00402E7C      CC            INT3
00402E7D      CC            INT3
00402E7E      CC            INT3
00402E7F      CC            INT3
00402E80  /$  E8 0B120800   CALL EasyPowe.00484090
00402E85  |.  8A80 A1070000 MOV AL,BYTE PTR DS:[EAX+7A1]
00402E8B  \.  C3            RETN
00402E8C      CC            INT3
00402E8D      CC            INT3
00402E8E      CC            INT3
00402E8F      CC            INT3
00402E90  /$  E8 FB110800   CALL EasyPowe.00484090
00402E95  |.  8A80 A6070000 MOV AL,BYTE PTR DS:[EAX+7A6]
00402E9B  \.  C3            RETN
00402E9C      CC            INT3
00402E9D      CC            INT3
00402E9E      CC            INT3
00402E9F      CC            INT3
00402EA0  /$  E8 EB110800   CALL EasyPowe.00484090
00402EA5  |.  8A80 A9070000 MOV AL,BYTE PTR DS:[EAX+7A9]
00402EAB  \.  C3            RETN
00402EAC      CC            INT3
00402EAD      CC            INT3
00402EAE      CC            INT3
00402EAF      CC            INT3
00402EB0  /$  E8 DB110800   CALL EasyPowe.00484090
00402EB5  |.  8A80 AA070000 MOV AL,BYTE PTR DS:[EAX+7AA]
00402EBB  \.  C3            RETN
00402EBC      CC            INT3
00402EBD      CC            INT3
00402EBE      CC            INT3
00402EBF      CC            INT3
00402EC0  /$  E8 CB110800   CALL EasyPowe.00484090
00402EC5  |.  8A80 9D070000 MOV AL,BYTE PTR DS:[EAX+79D]
00402ECB  \.  C3            RETN
00402ECC      CC            INT3
00402ECD      CC            INT3
00402ECE      CC            INT3
00402ECF      CC            INT3
00402ED0  /$  E8 BB110800   CALL EasyPowe.00484090
00402ED5  |.  8B80 8C070000 MOV EAX,DWORD PTR DS:[EAX+78C]
00402EDB  \.  C3            RETN
00402EDC      CC            INT3
00402EDD      CC            INT3
00402EDE      CC            INT3
00402EDF      CC            INT3
00402EE0  /$  E8 AB110800   CALL EasyPowe.00484090
00402EE5  |.  8B80 90070000 MOV EAX,DWORD PTR DS:[EAX+790]
00402EEB  \.  C3            RETN



en esos mov, se mueven a AL bytes 00 y 01, (00 No y 01 Yes)

ojo, no en todos tienen que ser 01 paa habilitar, es cuestion de que vayas probando en que mejoras o empeoras las opciones, por ejemplo en uno en vez de habilitado es el numero del limite de item, si lo dejas a 0 es unlimited.

ya tienes por donde seguir, lo correcto seria mirar que crea o lleva a esos lugares de memoria los valores 00 y 01 de donde luego se leen, para atacar si podemos en la raiz,
Saludos.

LSL.

jolypc

Hola, LSL. Muchisimas gracias por ayudarme en este tema y tambien le agradezco a todos los que se interesaron y tambien aportaron su granito de arena, pero esto no puede quedarse así y esto va para tí LSL:

Necesito que me comentes vía correo (jolypc@gmail.com) como encontraste la zona donde se habilitan las opciones; vaya, hazme un pequeño tutorial privado y mandamelo para aprender.

Gracias a ustedes lo logré; aunque tirando alguna piedras al trozo de código que publicó LSL. Sé que estas cosas no se hacen así pero quiero aprender; por ejemplo, una de las instrucciones que habilitan opciones es la siguiente:

MOV AL,BYTE PTR DS:[EAX+7A7]


En este caso, cada vez que el programa pasa por aquí, EAX siempre toma el mismo valor y lleva a AL a 00 ó 01 en dependencia del resultado de la suma. Lo que hice fue tantear e ir sustituyendo 7A7 por otros valores hasta que AL valiera 01 y lo encontré, pero esto no es nada inteligente de mi parte y reporta muchas horas de trabajo.

Expliquenme como hacerlo más fácil pero preferentemente vía correo.

Por otro lado siempre me quedó la duda si la version demo posee el código para salvar e imprimir. Quizas alguien podría echarle un vistazo a ambas versiones y por comparación resolver este enigma y por supuesto explicarme un poco como llegar a la zona donde se  inhabilitan estas opciones.

El propósito de esto es aprender un poco más de este maravilloso tema.

Saludos a todos.

"Que carajo, llevo seis meses trabajando en este tema y LSL lo resolvió en dos días. Usted si que sabe"

MCKSys Argentina

Hola jolypc!

Estuve mirando el programa, pero parece que ya lo has solucionado.

De todas formas, te paso algunos tips mas:

Las opciones del programa, se activan con el 2º DWORD del archivo .ovl. Por ej., si te fijas en la version Demo, el DWORD es: 0301BF08. Si miraste esa versión, ves que "casi" todas las opciones estan activadas.
Ahora, en la oficial, el DWORD es 0A130108. Ahora, si cambias, en la oficial, el DWORD a 0F01BF08, vas a activar todas las opciones.

El tema es que el programa salta diciendo que la instalacion no esta completa. Lo cual es verdad, pues has debido hacer algo mal al quitar la proteccion. Parcheando un solo salto, hice que el programa funcionara.

El tema es que seguro has hecho algo mal, pues si insertas un "relay" y luego le haces doble click para editarlo, lanza una excepcion y muere el programa. Esto pasa con AMBAS versiones.

El Item "Bus", es el 6º DWORD del archivo ovl . En la version oficial, esos datos estan cifrados usando un simple xor 56. Si miraste las ubicaciones que te ha posteado LSL, ves cuando devuelve los 500, y si cambias ese 500 por 0, entonces la cantidad es ilimitada. Ahora, 56 xor 0 = 56 por lo que si pones el DWORD en 56565656, vas a obtener bus ilimitado.

Bueno, la tarea era esa practicamente. Ahora, sigo insistiendo en que has hecho algo mal al quitar la proteccion...

Saludos!



MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


jolypc

Ok. Ya lo tengo funcionando a full, pero me había dado cuenta que cuando utilizo una de la opciones el programa debía lanzarme una excepcion y señalizarme en el esquema los errores; pero lo primero no lo hace. Es decir; que tiene razón MCKSys.

Para eliminar la proteccion me cargué un salto que manda un mensaje al usuario y esto no es correcto por que parece que otros mensajes importantes que interactuan con el usuario tambien pasaban por allí.

Reviso los ultimos consejos y luego les comento.

jolypc

Repito una pregunta vieja sobre este tema:

Alguien conoce si la version demo posee el código para salvar e imprimir?

jolypc

Esto es para MCKSys

Colega, agradezco tus consejos pero te pido que bajes un poco el nivel.
No encuentro la zona donde se trabaja con el archivo ovl y trato de abrirlo con ollydbg y tampoco puedo.

Dime si necesito otro programa para abrir el ovl.

Saludos

MCKSys Argentina

El .ovl lo abres con un editor hexadecimal (yo uso UltraEdit32, aunque puedes usar el que quieras).

Para detectar la zona donde carga las opciones desde el archivo, pon un HBPM en una de las variables que guardan las opciones. Tambien puede ser un BPM pero es mas lento.

Saludos!

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


jolypc

Hola, MCKSys, ya habilité las opciones por el método que me enseñaste de modificar el archivo ovl. Lo cierto es que reinstalé la version oficial desde cero con protección y todo, pero igual me lanza el error de "instalación incompleta". Es decir; creo que no tiene que ver en si parchee mal la protección. De todos modos funciona.
Por otro lado me quedé con una duda. me comentas que con un sólo salto resolviste el error, yo tuve que realizar seis.

Saludos,

Voy a trabajarlo ahora por el método que explica LSL. Al principio me funcionó pero ahora, luego de reinstalar: no.


MCKSys Argentina

Pues las variables que cambias con ese método, son las que carga del archivo ovl.

Si cambias el ovl, cambias las variables :)

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."