Título: Ingenieria Inversa Publicado por: jolypc en 15 Agosto 2009, 22:53 pm Poseo un programa hecho en visual C++ 7.0 en dos versiones: Oficial y Demo. Sucede que me interesa convertir la versión demo en full, pero ésta no salva ni imprime o convertir la versión oficial en una full version, ya que está limitada en que están deshabilitadas otras opciones que me interesan muchisimo. Las opciones que estoy comentando pueden ser habilitadas por la introducción de un nuevo código que no tengo. He intentado con el ollyDBG; trabajando con la version oficial, entender la rutina del código para habilitar estas opciones pero no lo he logrado y ya estoy desesperado. Tambien lo he parcheado por varios lugares y lo he empeorado, por que se me deshabilitan otras opciones. he hecho esto mismo con la versión demo y logro por parcheo habilitar las opciones de salvar e imprimir, pero no me abre la ventana correspondiente para terminar de ejecutar la acción; es decir, nada sucede. Mis preguntas son las siguientes: ¿Cuál es el comando en visualC++ para que respondan los botones? ¿Como puedo saber en visual C++ si una parte del programa(Salvar e imprimir) no está incluida en la versión demo? Si pueden aconsejarme algo más para no desfalleser, se los agradecería. Ya esto me está dando dolores de cabeza.
Título: Re: Ingenieria Inversa Publicado por: Carloswaldo en 15 Agosto 2009, 22:57 pm Es muy probable que no solo se hayan desactivado esos botones sino que tampoco se haya incluido ningún código para ellos (pues si están supuestos a no ser utilizados no tiene por qué tener un código asignado).
Título: Re: Ingenieria Inversa Publicado por: jolypc en 18 Agosto 2009, 17:33 pm Esto lo recorté de la ayuda del programa, donde se puede apreciar que introduciendo un nuevo código se pueden habilitar las opciones que faltan. Las líneas de puntos las puse intencional, ya que aquí se menciona el nombre del programa.
"It is possible to change your program options by using an authcode. For example, suppose you faxed in a purchase order for adding the new option to.............................. You will receive a fax back which gives you a code that you can input to .................... to enable the feature rather than waiting for a new program to be shipped to you. To enter a new authcode, choose Tools → Authorization Code... from the Menu bar. Type in the code as instructed in the fax. For example, here is a typical authcode: 0JC FPJ U55 VA4 KTI HSK As you type, the blanks are optional. After you click on the OK button, the new feature will be enabled. You only need to enter a new authcode once, but you should keep the fax in your files in case you ever need to re-install the program." Título: Re: Ingenieria Inversa Publicado por: MCKSys Argentina en 19 Agosto 2009, 01:08 am Hola!
Creo que lo mejor aquí, es atacar directamente esta parte del "authcode". Deberías usar Olly e ingresar códigos (como el del ejemplo) para ver qué hace el programa con ese código (cómo habilita las secciones "demo" del mismo). Según parece, hay un código para cada cosa (impresión, guardar, etc). Aunque, normalmente, deberia existir un codigo "maestro" que convierta la aplicación de demo a full. Es cuestion de usar el "ingenio inverso" (jejeje, también llamado "perverso" ;D) Bueno, cualquier cosa, pregunta que estamos para ayudar. También podrías poner el link del programa, para "verlo" mejor. Saludos! Título: Re: Ingenieria Inversa Publicado por: jolypc en 25 Agosto 2009, 17:26 pm Si colegas, todo eso está muy bien. pero para un novato como yo en estos temas a sido muy dificil, ya llevo varios meses trabajando en este programa y no he logrado nada.
Por favor respondanme las dos preguntas que hago en mi mensaje inicial para seguir adelante. Como explico en mi mensaje inicial tengo dos versiones del mismo programa; es decir, si la versión demo que poseo no tiene programada las opciones de salvar e imprimir. Pienso que puedo trabajar entonces con la versión oficial que tiene su "Authorization Code" pero tiene otras opciones que enriquecen mucho más el programa deshabilitadas. Esta es la razón por la que estoy intentando crackearlo. De todos modos cualquiera de las dos versiones que logre poner a "full total" me sirve. O puede ser tambien una fusión de ambas. Mantenganse en contacto que son los unicos que me han dado respuesta, le he escrito a Narvaja pero no me hace el minimo caso. Saludos Título: Re: Ingenieria Inversa Publicado por: LSL en 25 Agosto 2009, 19:57 pm mira si los ficheros de la version demo y la oficial no están ninguno comprimidos y si son del mismo tamaño, en caso de que la version demo sea mucho mas pequeño, olvidate de este que seguro le falta codigo interno para las cosas deshabilitadas.
dedicale todo el tiempo al ejecutable de la version oficial, busca por ejemplo en "search for -> All referenced text string" textos que indiquen una versión ú otra, (normalmente al programados le gusta indicar en la barra de titulos o en la ventana de acerca de... que estás trabajando con la versión tal ó cual, para ponerte los dientes largos, y ponles breakpoint "F2" en las zonas donde se encuentran los textos en su caso, a ver que decisiones toma para coger un texto ú otro, si encuentras con que valores ó direcciones de memoria compara previamente, mira si encuentras otros lugares que comparen con el mismo valor para habilitar la version full ó incompleta. Tambien si ejecutas desde el principio mira si encuentra donde toma la clave que tienes instalada ya que en base a la clave instalada, despues decidirá y ejecutará una configuración ú otra, con lo que podras forzar el camino bueno. Título: Re: Ingenieria Inversa Publicado por: MCKSys Argentina en 25 Agosto 2009, 21:49 pm Hola!
Vuelvo a insistirte con lo del "authcode". La mejor forma de activarlo, seria hallando ese serial. Ahora, si no lo consigues, siempre puedes parchear los saltos que trabajan con el resultado de la comprobacion. De una u otra forma, puedes hacerlo... Saludos! Título: Re: Ingenieria Inversa Publicado por: jolypc en 26 Agosto 2009, 20:32 pm Muchas gracias a LSL por sus consejos y a MCKSys por atenderme e insistirme con lo del authocode.
Acabo de revisar el tamaño de la versión demo respecto a la oficial y efectivamente, no están comprimidos y tienen una diferencia de 5MB(100 contra 95MB, más pequeña la versión demo), esto ya me lo sospechaba, pero les pregunto: ¿Cuál es el comando que generalmente se utiliza en visual C++ para trabajar con los botones del menú? Repito que ya intenté con EnableMenuItem y lo logré pero no me sale la ventana emergente, por ejemplo, para terminar de ejecutar la acción de guardar e imprimir. Las otras sugerencias que me hace LSL las realizaré en breve; aunque ya he realizado esta tarea, pero siempre es bueno insistir. Sobre lo que me comenta MCKSys de subir el programa para echarle un vistazo, para mi es dificil desde mi ubicación geografica. Tengo algunas limitaciones, "si puedo pero no debo". Si me dan otra variante que sea más pequeña de trabajar, quizas sólo el ejecutable u otra información que pueda sacarle con ollydbg; creo que sería bueno para ilustrarlos. Título: Re: Ingenieria Inversa Publicado por: MCKSys Argentina en 26 Agosto 2009, 21:54 pm Pues la idea era que subas el EXE. Siempre y cuando las DLL que importe directamente esten en el sistema. De esa forma, por lo menos, se puede hacer un analisis "estatico" del EXE (Desde Olly o IDA).
Para capturar los eventos que procesa la ventana (incluidos los eventos del menú) pon un BP en SendMessage. Aunque desde Olly puedes sacar el WindowProc de la ventana que procesa los comandos del menu y, asi, saltar al codigo que se ejecuta con el comando de menu. La eleccion es tuya. Saludos! Título: Re: Ingenieria Inversa Publicado por: jolypc en 26 Agosto 2009, 22:49 pm Vaya esto del windowproc no me lo sabía, ni siquiera lo tengo. ¿Tienes algún tutorial que me guíe para trabajar con este plugin?
Me ocuparé de subirte el ejecutable pero primero se seguiré machacandome la cabeza. Saludos Título: Re: Ingenieria Inversa Publicado por: MCKSys Argentina en 26 Agosto 2009, 23:03 pm El WindowProc no es un plugin.
Es el código "principal" de una ventana. Este código se ejecuta (en realidad es llamado por Windows) cada vez que la ventana debe procesar un evento (mouse, teclado, etc) ó para informarle a la misma de algun suceso del sistema (cerrar Windows, etc). Es muy probable que el código del comando de menú esté ahi, o sea llamado desde esa ubicacion. Para encontrar rápidamente el WindowProc, haz lo siguiente: - Dale F9 (Run) al EXE. - Ve a la ventana de Memoria (Alt + M). - Busca el proceso (columna "owner"). - Ubica la sección .text del proceso (o la que contenga el código ejecutable) y ponle un BP (F2) Si Olly no salta es ese momento, selecciona la aplicación en la barra de tareas. El BP saltará y estarás en el WindowProc de la Aplicación. Saludos! Título: Re: Ingenieria Inversa Publicado por: LSL en 27 Agosto 2009, 02:08 am jolypc, (mas ideas.. para que no hagas siempre lo mismo, si buscas resultados diferentes; como dijo alguien de cuyo nombre ahora mismo no me acuerdo ;D )
Si no lo tienes, lee este manual de nuestro maestro shaddy, "Teoría - Mensajes y Eventos en Windows", http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1001-1100/1027-Teor%c3%83%c2%ada_-_Mensajes_y_Eventos_en_Windows.zip (http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1001-1100/1027-Teor%c3%83%c2%ada_-_Mensajes_y_Eventos_en_Windows.zip) que te dará ideas de como parar el programa al pulsar sobre el botón, para ver a donde te lleva. suerte. Título: Re: Ingenieria Inversa Publicado por: jolypc en 27 Agosto 2009, 14:25 pm Gracias LSL, este manual lo había descargado hace tres días pero no lo había leído profundamente. Ahora lo revisaré y continuaré con el tema.
Saludos Título: Re: Ingenieria Inversa Publicado por: jolypc en 16 Septiembre 2009, 21:33 pm Ni modo señores,
Sólo he logrado habilitar 1 de cuatro opciones y esa ya la tenía por defecto el programa. ¿alguna otra sugerencia para habilitar opciones deshabilitadas? Título: Re: Ingenieria Inversa Publicado por: LSL en 17 Septiembre 2009, 05:49 am prueba con BP sobre la api EnableWindow
http://winapi.conclase.net/curso/index.php?fun=EnableWindow Título: Re: Ingenieria Inversa Publicado por: tena en 18 Septiembre 2009, 01:01 am Hola, sino lo puedes subir entonces pon el link de descarga por el privado
y si hay tiempo le echamos un vistazo :D slds tena Título: Re: Ingenieria Inversa Publicado por: jolypc en 6 Octubre 2009, 00:15 am Aquí les dejo el link de este programa para que le echen un vistazo:
Versión oficial: http://www.toofiles.com/es/oip/documents/rar/oficial.html Versión Demo: http://www.toofiles.com/es/oip/documents/rar/demo.html En la oficial, están desactivadas las opciones que me interesan y en el demo, están desactivadas las opciones salvar e imprimir. Título: Re: Ingenieria Inversa Publicado por: MCKSys Argentina en 6 Octubre 2009, 00:38 am Lo miro y te cuento qué tal....
Saludos! Título: Re: Ingenieria Inversa Publicado por: tincopasan en 7 Octubre 2009, 04:20 am probaste con un editor de recursos?
Título: Re: Ingenieria Inversa Publicado por: Amerikano|Cls en 7 Octubre 2009, 06:05 am probaste con un editor de recursos? Te voy a seguir por todos lados.... mandalo!!!!!!!! ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) Título: Re: Ingenieria Inversa Publicado por: jolypc en 7 Octubre 2009, 21:55 pm 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 Título: Re: Ingenieria Inversa Publicado por: LSL en 8 Octubre 2009, 09:50 am 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: Código: 00402DF0 /$ 8B81 84070000 MOV EAX,DWORD PTR DS:[ECX+784] 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, Título: Re: Ingenieria Inversa Publicado por: jolypc en 9 Octubre 2009, 18:30 pm 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" Título: Re: Ingenieria Inversa Publicado por: MCKSys Argentina en 10 Octubre 2009, 22:09 pm 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! Título: Re: Ingenieria Inversa Publicado por: jolypc en 12 Octubre 2009, 15:13 pm 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. Título: Re: Ingenieria Inversa Publicado por: jolypc en 12 Octubre 2009, 15:58 pm Repito una pregunta vieja sobre este tema:
Alguien conoce si la version demo posee el código para salvar e imprimir? Título: Re: Ingenieria Inversa Publicado por: jolypc en 13 Octubre 2009, 17:08 pm 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 Título: Re: Ingenieria Inversa Publicado por: MCKSys Argentina en 13 Octubre 2009, 19:27 pm 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! Título: Re: Ingenieria Inversa Publicado por: jolypc en 14 Octubre 2009, 20:52 pm 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. Título: Re: Ingenieria Inversa Publicado por: MCKSys Argentina en 14 Octubre 2009, 22:02 pm Pues las variables que cambias con ese método, son las que carga del archivo ovl.
Si cambias el ovl, cambias las variables :) Saludos! Título: Re: Ingenieria Inversa Publicado por: jolypc en 15 Octubre 2009, 15:20 pm Bueno, ahora sí. Objetivo logrado por ambos métodos (LSL y MCKSys). Muchas gracias a ustedes, geniales colegas y al resto que se preocupo por el tema y aportó sus sugerencias.
Un abrazo. CASO CERRADO. |