Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - karmany

#1241
Software / Re: Grabar audio de internet
24 Julio 2006, 21:29 PM
Lo primero, tienes que estar escuchando Radio Nacional de España.
La puedes escuchar "en linea" desde su página web:
http://www.rtve.es/rne/web/index.php
Supongo que esto ya lo sabrás, pero pon por ej. que quieres grabar Radio 5 todo noticias. Pulsas en la izquierda, seleccionas por ej. escucharlo con Windows Media y ya lo tienes:


Bueno, ahora necesitas un programa gratuito que programando, puedas grabar un determinado intervalo de tiempo..
Déjame un momento, que te busco el programa que conozco uno en VB..

#1242
Tiene muchas causas posibles...
Prueba primeramente a instalarte una versión más actual del Nero.
Has cambiado últimamente el tipo de cd's que utilizas para grabar??
#1243
"muy poca cosa queda"
no estoy de acuerdo...

En VB puedes complicarle la vida a un cracker de muchas formas..
Siempre parto del hecho de que el cracker que va a destripar el programa sabe programar en VB y tiene conocimientos medios.
La primera es no utilizar el evento click al pulsar el botón, porque esto está explicado en la mayoría de los tutes.

Una forma que veo difícil de crackear es crear un programa con bastante código ,utilizar muchos eventos, utilizar constantes y engañar con string, pues es lo primero que se mira. De este ej. ya lo comenté, podéis intentar crackear mi crackme 3.0 en ingeniería inversa y ya veréis que es muy complicado:
Crackme 3.0

Pero otra forma aún más complicada (es mi opinión) es hacer un programa como he comentado en el párrafo anterior y además modificarle el código con un editor hexadecimal para que salte a una determinada dirección de memoria dependiendo del código que le introduzcas.. hace tiempo hice un crackme muy sencillito de esto último que si te interesa lo subo..

Yo el problema que veo a todo esto es que puedes complicarte mucho la vida y hacer un programa de difícil crackeo, pero y luego qué??
Me explico: si vendieras el programa tendrías que ponerle varias contraseñas, y si poner una cuesta...
pero ya estamos ante el hecho de que si das la contraseña a una persona esa persona ya puede copiar tu programa 1000 veces y con un serial válido.!!
Lo ideal para el mercado es crear un programa que genere una protección a tu programa..ejemplos como asprotect etc, que así pueden ser distribuidos rápidamente. Al mercado no le interesa que compliques crackear un programa manualmente modificando el código como te he comentado.
#1244
A mí tampoco me dejaba, pero como dice Songoku tras reiniciar continuó la instalación sin problema..
De todos modos te mando por mensaje privado el Alcohol 1.9.502802..
#1245
Mira a ver este programa y nos cuentas..
http://www.createdvd.net/audio_dvd_creator.htm

Yo no lo he probado pero he visto en la página que te he puesto esto:
Put 5-6 Audio CDs on one DVD disc with CD audio quality.
Que viene a ser "Ponga 5-6 CDs de audio en un disco DVD con calidad de audio del CD."
Pruébalo a ver si te sirve.
#1246
Lo del SCSI, es un controlador de dispositivos que utilizan algunos progrmas para emular unidades virtuales: alcohol, daemon...

Me ha extrañado lo del mensaje y he ido a instalar yo también el 1.9.5 4212 y me ha ocurrido lo mismo que a ti.. No deja instalarlo, ni aceptando ni cancelando..

Yo pienso que todo esto viene porque está para Windows XP x64, y tú tendrás a 32 bits.:
fíjate:
http://trial.alcohol-soft.com/en/system.php


Si quieres que te funcione, instálate una versión anterior. Yo tengo la versión 1.9.5 build (2802) y funciona perfectamente.

Para que la 1.9.504212 funcione pues yo de momento no sé qué se puede hacer, pero si averiguo algo más ya te comentaré..
#1247
Hola Krnl64, mira he estado echando un vistazo al Visustin 3.11 y he sacado estas conclusiones...

1) No me ha gustado nada que se instalara desde el empaquetador de VB, esto es personal, pero ya para empezar poco se lo ha currado el programador..

2) No sé para qué quieres este programa..

3) Si te fijas al abrir el programa, sale una nag en la que abajo pone: "Demo version" "Copy, print etc..."
Pues la idea que se me ha ocurrido era ir a ver cuándo pone esa Demo version.
Normalmente, cuando se 'crea' un programa, para evitar complicaciones lo que hacen los programadores es si la versión es demo suelen poner una constante a un determinado valor. Si la versión es full, ponen esa misma constante a otro valor, y mediante comparaciones If pues ponen las limitaciones al programa.
En este programa después de investigar un poco puede que el programa entero haya sido modificado para que sea Demo, es decir, que no parta de un programa full. Puede que esto que te comento no sea tampoco cierto, pues el label puede modificarse sin problema: "Version registrada...", "version demo"...

El formulario del principio: Welcome to.... empieza en la dirección 00489B50. Aquí empieza a cargarlo todo...
Si te fijas en la dirección 00489FA3 y 00489FA8 verás que pone en la pila el "Demo version" y lo de "Copy...", pues para que no aparezca esta demo versión , puedes examinar todo desde el comienzo donde te he dicho y no hay ningun salto o comparación que evite que salga este mensaje..

No voy a analizarla más.. sólo le echado un vistazo por encima..además es posible que el programador haya borrado todo el código de la version full, me explico..
El botón copiar. En la version full te lo copia al portapapeles. En la version demo sale una nag. Probablemente, pero puedes probarlo aunque quitaras esa nag o la condición de salto, el programador puede que haya borrado lo de copiar al portapapeles...todo es investigar un poco..

Lo de rotar los diagramas, y poner cosas al azar, yo lo que haría sería hacer un programa muy sencillo en VB con una sola comparación y capturar con el SmartCheck cuando pulsas el botón Preview, que si no me equivoco es cuando genera el diagrama no?? y a partir de ahí seguir el código...

Bueno que haya suerte...

PD. No sé porqué no te marca eventos el SmartCheck porque a mí me llena la pantalla sólo con la carga del formulario..
#1248
Yo porque me enganché con tu crackme, pero voy a dejar otra temporada esto de la ingeniería inversa porque quita mucho tiempo..ahora después del tute me voy a echar una cerveza por ahí (además acaba de llover y se está fresco)..

Yo he hecho muchos crackmes en VB, los primeros ni los intentaba resolver.
Después de probar y probar, si quieres hacer uno más complicado mi consejo es que no trabajes con strings, porque si trabajas con una string de más de un caracter, se va a reflejar en la memoria y ahí es dónde se observa por dónde va el programa. Evita lo que se refleja en el Olly: Mid, len, etc...
Además buscando por todas las referencias saldrán esos caracteres y ni te digo con el programa Numega SmartCheck.
Trabaja con números y constantes, que eso engaña muchísimo.

Yo hasta hace poco quise hacer un crackme en VB, que introduciendo un serial, hiciera unas operaciones aritméticas y tras esas operaciones el resultado fuese una dirección en la que continuara el programa, es decir, con una dirección errónea que el programa diese error.. pero no lo he conseguido y de momento no pienso intentarlo más...
Bueno, un saludo, estamos en contacto..
#1249
TUTE 'Crackme1 de frankener1986' por karmany

Programas utilizados:
   -OllyDBG
   -Numega SmartCheck 6.03.
   -Ultraedit


INTRODUCCIÓN
Al ejecutar el Crackme1 de frankener1986, vemos la siguiente interfaz:


Es decir, se trata de activar el botón Comprobar Serial, introducir un nombre, un serial y pulsar Comprobar Serial.
Quiero hacer algo sencillo y no es mi intención extenderme mucho... Si algo no se entiende, preguntarme en el foro.

QUITAR QUE RECONOZCA AL OLLY
Cuando abrí por primera vez el crackme con el Olly, apareció un messagebox de título: Je, je y que decía buen intento..
Analizando un poco el principio del código se ve claramente que el salto se produce en:
00402E72 --> JE Crackme1.00402F4B
Si salta no reconoce al olly, entonces le quito la comparación y le pongo un salto definitivo:
00402E72 --> JMP Crackme1.00402F4B
00402E77 --> NOP
Y solucionado lo del Olly.

ACTIVAR EL BOTÓN
En VB podemos desactivar el botón de dos formas: una por defecto al diseñar nuestra interfaz, en las propiedades y la otra forma es utilizando código al ejecutar el programa.
Cuando es por defecto, se puede buscar con el Olly por ej. el nombre del botón y unas líneas más abajo uno de los bits 00 se pone a 01 y el botón aparecerá activado: enabled true. Sé que esto así no se entiende, pero hacer lo que hice yo: hice un programa con un botón activado y otro con el botón desactivado y véis el código y modificáis.

En este crackme modifiqué todos los botones que vi (que hay más de uno, no sé si para despistar) y los puse activados. Pero no resultó, así que decidí abrir el programa Numega SmartCheck 6.03. (A partir de aquí NSC).
Abres el crackme con el NSC, lo ejecutas, pulsas en el + del hola_Load y se observa esto:


XDDDDDDDD.Enabled <- False (Boolean)
AQUÍ ESTÁ.. aquí en el Load del form es donde desactiva el botón.. y se ve también que pone "Comprobar Serial" un poco antes.

A la derecha podemos ver: CRACKME1ORIGINAL.EXE!000031F9
Lo de CRACKME1ORIGINAL se lo puse yo.
Bueno lo que interesa es el 31F9. Le sumamos el 400000 y queda:
4031F9 y esta es la dirección a la que voy a ir en el Olly:


Subo un poco para ver los PUSH (pone en la pila los valores) y se ve rápidamente cómo en:
004031E7 --> PUSH 0
Lo sustituyo por PUSH 1 y arreglado lo del botón..

Ahora lo que hice es crear un nuevo crackme donde no reconociera al Olly y donde estuviera activado el botón, para hacerlo todo más cómodamente, como he explicado en los dos apartados anteriores.. Utilizando para esto último el Ultraedit.

Crackearlo es fácil, pues buscando referencias llegamos rápidamente a "Enhorabuena, lo conseguiste etc...". Y de ahí solamente hay que mirar los cuatro saltos que hace el programa y modificarlos...

DESCIFRANDO LA cifrado
No lo he dicho antes pero con el NSC, se ven perfectamente las cadenas encriptadas...así que por este motivo decidí indagar desde el principio con el Olly...

Ejecuté el programa con el Olly, puse
nombre: abcd
serial: karmany
y pulsé en el botón "Comprobar serial" y caí aquí:
00403400
Analicé un poco el código y lo primero que encontré que me llamara la atención fue este código:


00403489 --> PUSH EAX
va a calcular el len de EAX, que es "abcd"

00403492 --> CMP EAX, 3
compara el len con 3

00403495 --> SETG CL
Activa un bit si es mayor..

004034B1 --> JE SHORT Crackme1.004034C5
Salta si el len del nombre es igual o menor que 3.

Es decir que el nombre tiene que tener más de 3 caracteres, y que la cifrado se hace en:
004034B7 --> CALL Crackme1.004038AO
voy a seguir esta CALL.

Me manda a dos subrutinas más y al final a una tercera que es donde lo hace todo:
004039E0 --> PUSH EBP
Este es el comienzo de la tercera subrutina..
Analizando el código llego a esto:


Donde se ve claramente un bucle.
SI toma el valor del len del nombre(lo hace un poco más arriba) y EAX=1. Cuando SI sea =0 saltará..
Este bucle lo que hace es poner el nombre al revés, es decir, abcd lo pone: dcba.
Lo puedes ver poniendo por ej. un BP en 00403BD9 y mira en EAX.

Después de esto hay una nueva llamada. Yo he entrado en ella y la he investigado. Esta llamada se repite también más abajo.
Después de probar también con varios nombres, llegué a la conclusión de que esta CALL lo que hace es codificar una cadena sumándole al valor hex. de un carácter un valor constante, y poner mediante otra call dentro de esta, el primero en mayúsculas, segundo minúsculas.. etc...
En el ej. que he puesto más abajo se entiende todo esto perfectamente.

Esta llamada es esta:
00403C1C --> CALL Crackme1.00403510
Puedes observar el resultado de esta primera CALL poniendo un BP en 00403C27 y mirando en EAX.
La cadena que utiliza es el nombre, al revés.
La constante es el len del nombre.
Me he fijado que aparecen dos cadenas dentro de esta CALL:
abcd
dcba
Después de descifrar todo ya me dí cuenta que la primera cadena abcd se le calcula el len y es la constante. La segunda cadena dcba es la que se utiliza para codificar.

Si el nombre es abcd el resultado que verás en EAX será: HgFe


Razonemos esto hasta aquí:
-Nombre: abcd
1º Le da la vuelta: dcba
2º Lo codifica sumándole el len a cada carácter:
d = 64 hex. + 4(len) = 68 que corresponde a --> h
c = 63 hex. + 4 = 67 --> g
b = 62 hex. + 4 = 66 --> f
a = 61 hex. + 4 = 65 --> e

3º Pone mayúsculas, minúsculas...
Resultado = HgFe

Continuemos...
Luego en 00403C39 Me despistó un montón el "abc". No tenía ni idea de para qué podría servir...

Y después viene otra vez la CALL Crackme1.00403510
Esta vez la constante que le suma es 3, no como antes len del nombre.
Y la cadena que utiliza es el nombre.
Me he fijado también esta vez que utiliza estas dos cadenas:
abc
abcd
Aquí me extrañé al comprobar que aparecía "abc".
(Como comento al final, y en la misma call de arriba, tras descifrar todo, supe que a la cadena abc se le calcula el len y es la constante, y la cadena abcd es la que se utiliza para codificar)

El resultado de esta segunda codificación se puede ver poniendo un BP en 00403CE5.
El resultado es DeFg.
Razonándolo igualmente:
-Nombre: abcd
1º Codifica sumándole 3.
    abcd --> defg
2º Pone mayúsculas, minúsculas.
    defg --> DeFg

Hasta aquí un resumen de lo que logré ver:
-Nombre: abcd
-Dos codificaciones: HgFe, DeFg
-Una cadena: abc

A partir de aquí, aparecen 4 saltos que nos mandan fuera del mensaje: "Enhorabuena, lo conseguiste..."
Entonces se trata únicamente de descifrar qué quieren decir esos saltos y así lograremos saber cómo codifica el serial...

Primer salto:
00403CE4 --> JNZ Crackme1.00403E59

Se ve claramente que en 00403C76 pone en pila el valor EAX, para calcularle el len.
En EAX se ve HgFe. El programa coge 4.
Después pone este 4 en memoria y seguidamente calcula el len a la cadena: DeFg. También 4.

Luego muy atentos, porque en:
00403C9A --> MOV DX, WORD PTR SS...
Lo que hace es poner en DX el valor del primer len que hemos cogido...el de HgFe que puso en memoria.
Es decir quedaría en DX el primer len y en AX el segundo len. Se entiende no?
Después en:
00403CA1 --> ADD DX,AX
Pone el DX la suma de los dos y en:
00403CAD --> ADD DX, 1
Le suma 1 a DX. El resultado de DX es por lo tanto: 9.

En este punto es donde me quedé un poco trabado.. Porque no sabía qué es lo que compara.. Sí, compara DX pero, con qué??
DX es el doble de caracteres del nombre más uno..
El problema es que no sé exactamente qué hace vbalenvar.
Aquí, frankener1986 sin quererlo me resolvió la duda, pero quise buscar la lógica.
Lo único lógico que se puede ocurrir en este momento es que el serial tenga de len=DX.
Es decir para abcd tendrá 9.. Así que volví a cambiar mi serial por: karmany12 y
Perfecto.. ya no salta.. eso era.

Segundo salto:
00403D84 JNZ Crackme1.00403E59
A primera vista se ve que utiliza la función Mid. A ver con qué...!!
Si haces un BP en la dirección 00403D1A, podrás observar que esa función Mid, lo que hace es coger los len(nombre) primeros caracteres del serial..
Ej. Nombre: abcd
      Serial:   karmany12
Cogerá : "karm"

La segunda función Mid, coge los últimos len(nombre) del serial. En este caso, lo puedes ver poniendo un BP en 0043D66. El resultado es:
"ny12"

Después en 00403D78 va a hacer una comparación de String.
Compara EAX con ECX.
Si pones un BP en 0043D78, verás que las cadenas que va a comparar son:
EAX --> "karm"
ECX --> "HgFe"
Es decir, va a comparar los cuatro primeros caracteres del serial con la primera codificación que hizo.. Eso quiere decir que mi serial karmany12 no es correcto.. Reinicio el programa pero esta vez pongo:
Nombre: abcd
Serial:    HgFeany12

Compruebo y veo que no salta!! :-). Vamos bien..

Tercer salto:
00403D96 --> JNZ Crackme1.00403E59

Muy sencillo igual.. La comparación la va a hacer entre los dos valores que ponemos en la pila: PUSH EDX y PUSH EAX.
Si ponemos un BP en 00403D92, podemos ver estos valores en la pila:
DeFg
ny12
Es decir, compara los últimos len(nombre) del serial con la segunda codificación..
Pues voy a probar de nuevo:
Nombre: abcd
Serial:    HgFeaDeFg

Pruebo y... no salta.. sigue la cosa bien, y ya solo queda un salto..

Cuarto y último salto:
Bueno, viendo el resultado del serial y viendo que el len del serial es doble más uno, lo único que se me ocurre es que este salto es para averiguar el carácter que va en medio del serial..
Repasé una y mil veces el código intentando ver  algo que me diera alguna solución, y no encontré nada... ya sólo me quedaba este último paso que es lo que puse en el foro que me quedaba...

Así que, como no sabía qué hacer hice un programa en VB y comparé un carácter utilizando la función Mid..
El programa se basa en un formulario, con un Textbox y un botón. Al pulsar el botón puse este código:

Private Sub Command1_Click()
Dim a As String
a = Text1.Text
a = Mid(a, 2, 1)
If a = "u" Then Stop
End Sub


Sencillo, muy sencillo. Escribo algo en el textbox y si el segundo carácter es una u, se detiene con un stop.
Me fui al Olly y empecé a ver dónde comparaba y dónde aparecía la "u" y por supuesto que la encontré..
Aparece cuando el programa intenta leer un valor en la memoria del programa..
Por ej. cuando pone en la pila el valor:
PUSH Proyecto1.004017D8

Para confirmarlo dumpeé la dirección 004017D8 y modifiqué la u por otra letra y el resultado fue perfecto.

Volví al crackme, e intenté ahora sí buscar dónde lee algún valor en su memoria y el único que hay es este:
00403DDF --> MOV DWORD PTR SS:[EBP-AC], Crackme1.00402930
Dumpeé esa dirección (00402930) y encontré: 2D que corresponde al carácter "-".
Por supuesto lo modifiqué para comprobarlo y fue perfecto..


Con todo esto que acabo de explicar ahora ya es muy fácil hacer el keygen..

PD. Volviendo a leer mi tute, me dije... y qué era esa cadena que había por ahí (abc)??
Viendo la solución parece que no valiera para nada!! Como expliqué más arriba en la segunda codificación la hace sumando 3 que es el len de abc!! Me lo confirmó frankener1986.

Espero que a alguien le sirva de ayuda todo esto...ya que yo lo poco que sé lo he aprendido de leer tutoriales de otras personas..y por supuesto de poner en práctica la lógica..

Un saludo..
#1250
Como veo que hace tiempo no se hace un tute de algún crackme, haré uno sencillo del tuyo, y te explico lo del botón..

Me queda solamente una cosa que se me escapa y no logro entenderla.