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.
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).
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."
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!
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
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.
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!
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.
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!
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
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!
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.
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
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?
prueba con BP sobre la api EnableWindow
http://winapi.conclase.net/curso/index.php?fun=EnableWindow
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
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.
Lo miro y te cuento qué tal....
Saludos!
probaste con un editor de recursos?
Cita de: tincopasan en 7 Octubre 2009, 04:20 AM
probaste con un editor de recursos?
Te voy a seguir por todos lados.... mandalo!!!!!!!! ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
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
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,
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"
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!
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.
Repito una pregunta vieja sobre este tema:
Alguien conoce si la version demo posee el código para salvar e imprimir?
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
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!
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.
Pues las variables que cambias con ese método, son las que carga del archivo ovl.
Si cambias el ovl, cambias las variables :)
Saludos!
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.