Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: centiane en 15 Noviembre 2014, 01:57 am



Título: Hola, estoy liado hasta la medula.
Publicado por: centiane en 15 Noviembre 2014, 01:57 am
Bueno, cuento mi problema.
Tengo instalado el olly y con los crackme que tienen ventana emergente no he tenido problema a la hora de crackearlos.
El problema me llega de un software el cual no tiene ninguna ventana emergente y esta programado en delphi, el muy jodido las cadenas de caracteres las pasa a no se donde al arrancar y no soy capaz de ver ninguna cadena por la que empezar a trabajar, es mas me he llevado casi una semana sin frutos y ahora por primera vez pregunto.
El software en concreto es el duptemp en version demo
http://www.dupline.com/Download/New%2014/DupTemp2Demo.zip
No se por donde seguir.

Conoceis alguna forma para atacar desde otra perpestiva que no sea buscando las cadenas donde aparecen palabras clave?
Gracias.

Una ayuda por favor.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: MCKSys Argentina en 15 Noviembre 2014, 03:12 am
Y en dónde te has trabado? Hasta dónde has podido llegar?

No has explicado los avances que has tenido...

Saludos!


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: centiane en 15 Noviembre 2014, 12:36 pm
Bueno, explico un poco hasta donde he llegado.
He cargado el ejecutable, he buscado las palabras clave como "License" "Unregistered",... despues de esto he colocado los puntos de interrupcion inmediatamente antes de la llamada a estas cadenas pero la sorpresa es que mediante un puntero a memoria aloja estas cadenas "en no se donde" siendome imposible poder seguirlas, es mas todas las cadenas de string las aloja del mismo modo, con direcionamiento indirecto(supongo).
Este proceso lo he realizado con todas las palabras clave que he podido, siempre llegando al mismo problema.
Por otro lado, he intentado de llegar a este por un texto que se lanza despues de estar en funcionamiento el programa, pero este texto no lanza ninguna ventana, simplemente aparece en la ventana de proceso.

No se que mas hacer, me tiene ofuscado.

Un saludo Att.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: _Enko en 15 Noviembre 2014, 17:50 pm
Holas, delphi utiliza su propia libreria de componentes. (Visual Componen Library, VCL)
Si bien con olly no deberias tener problemas, usando algo especifico podras ver el codigo de los forms y de sus eventos usando algo como http://kpnc.org/idr32/en/
Delphi Interactive Disassembler.

Saludos.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: centiane en 15 Noviembre 2014, 20:21 pm
Ok, gracias por responder , voy a probar a ver que tal.
He probado incluso con el DeDe para mirar un poco mas a fondo pero el software que me he propuesto creo que se me escapa de las manos.
Habia escogido este porque me parecio algo no muy complicado y me parece que se me esta atragantando.

Un saludo mirare a ver.

Gracias.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: centiane en 16 Noviembre 2014, 17:48 pm
No consigo ver nada, he utilizado el isd32, este me da el formato de formularios, eventos, librerias, etc. Pero no consigo ver la informacion referente al registro del soft.
Podria ser que el registro estubiera en el reg de windows, pues he buscado la cadena de string referntes a el nombre de usuario y compañia y no la encuentro.

Esto es lo que tengo de momento, una ayuda para seguir, por favor.
Gracias.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: MCKSys Argentina en 17 Noviembre 2014, 02:56 am
Si usas IDR (como te sugirió _Enko) podrás ver los formularios y eventos de los mismos (si el programa no tiene packer). Mirando un poco, seguro descubrirás la parte que necesitas analizar bajo Olly.

Eso te guiará para colocar BPs en Olly y así llegar rápidamente a la rutina de registración/comprobación de serial.

Saludos!


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: centiane en 17 Noviembre 2014, 13:21 pm
He estado siguiendo la ejecuccion del programa y he detectado que todos los string los envia a memoria y accede a ellos por punteros, he aqui el problema, se donde se almacena el string en cuestion, pero al ponerle un BP de acceso a estos datos no se interrumpe la ejecucion, que es lo que estoy haciendo mal.
Me explico.
Al iniciar todas las cadenas las aloja de la dirrecion 005Dxxxxxx a la direccion relativa 009Cxxxxxx
el tema es que estas direcciones son mediante punteros y no tengo ni idea donde meter el BP.

Un saludo y gracias de antemano


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: _Enko en 17 Noviembre 2014, 16:49 pm
El problema que vas a tener en olly usando programas compilados con Delphi es la estructura que utiliza el compilador.

Alunos compiladores hacen esto:

Citar
sección datos
;cadenas y variables
sección codigo
;codigo que se ejecuta
sección recursos
;sección de imagenes y demas recursos
sección importacion
;importacion de rutinas de las librerias externas

ahora, delphi no funciona asi. Tiene algo como
Citar
sección "no me acuerdo"
;recursos del form
;cadenas del procedimiento/evento
;codigo del procedimiento
;cadenas del procedimiento/evento
;cogio del procedimiento evento

O sea que las cadenas estan disparamadas a lo largo de todo el código. Teoricamente olly dbg debería de encontrarlas. Pero usando algo como IDR, puedes encontrar el form que te enteresa, la rútina y ver la direccion de memoria donde se empieza a ejecutar. Pones un breakpoint en ollydbg alli y listo :)

Otro tema, como la VCL es muy pesada y redundante, muchas veces los programas compilados en delphi estan empaquetados. No solo para protegerlos sino mas que nada para disminuir su tamaño.

Saludos.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: centiane en 20 Noviembre 2014, 20:12 pm
Tiro la toalla, no se por donde segir, esto me lleva.
He intentado llegar a los estring sin fruto.
He traceado los eventos del exe y todo apunta que al iniciar el programa este comprueba la licencia, y los demas informaciones las muestra de allocates cargados durante el arranque..
No se por donde seguir, me he metido en algo que me supera, nada que ver con los crackme o los MalwareBytes.
Si algun alma caricativa le puede hechar un vistazo y me orienta un poco se lo agradeceri enormemente, pues me esta costado muchas horas (eso si estoy cogiendo una practica con el olly que te cagas)

Un saludo Att

Gracias de antemano.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: dRak0 en 20 Noviembre 2014, 20:38 pm
El dolor es temporal, la gloria es eterna.

Frases de internet.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: MCKSys Argentina en 21 Noviembre 2014, 04:45 am
Tiro la toalla, no se por donde segir, esto me lleva.

No te enojes, pero si tiras la toalla con un Delphi 6, sin empacar, entonces deberías dedicarte a otra cosa...

Si algun alma caricativa le puede hechar un vistazo y me orienta un poco se lo agradeceri enormemente

OK. Haré un poco de caridad (por cierto es caritativa  :P):

Si abres el ejecutable con IDR, verás que el programa define una clase que maneja la licencia. No hay strings que buscar. La clase se llama TDTLicenseCheck y se encuentra en la unidad _Unit61. El método que te interesa es el Create (aunque tendrás que mirar los demás métodos/funciones para poder hacer una licencia válida.) La licencia parece que se guarda en el registro (sólo miré el proggie por encima).

Para que empieces, usa Olly 1.10. Bájate el plugin MapConv v1.4. En IDR, crea un .MAP con el comando "Tools"-"MAP generator" y cárgalo en Olly con el plugin MapConv usando la opcion "Replace label". Haz un analisis con Olly y ya con eso te podrás guiar perfectamente por el código.

Creo que con esa orientación es suficiente... ;D

pues me esta costado muchas horas

Desde mi punto de vista, este arte no requiere de muchas horas, requiere de años de estudio y determinación, mezclados con un poco de cerebro y suerte...  :)

Saludos!


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: centiane en 22 Noviembre 2014, 20:44 pm
Hola.
Gracias por la ayuda MCKSys.
En ningun momento me enojare, al contrario valoro cada comentario que me dan y sacos mis propias conclusiones, no por ello lo voy a dejar, jejeje, es mas me parece correcto que me corrijas en todos los errores que cometa, es la unica forma que tengo de subsanarlos de otro modo seguire cometiendolos pensando que es correcto.
Disculpa por mi poca experiencia en el tema, lo unico que busco es poder lograr un cometido, aunque para ello tenga que pedir ayuda a los grandes maestros y estoy contento de que me ayudes de una forma didactica.
Se que para lograr lo que pido no solo se necesitan muchas horas, tambien se necesita estudio y suerte como bien dices, pero desde mi humilde condicion (empezando desde abajo) tan solo quiero poder comprender y en un futuro ayudar a los demas como ahora lo haces tu conmigo.
Lo mas importante es que siempre se encuentra gente que te ayuda y te anima en el camino, aunque algunas veces ya sea por mi torpeza o por no observar bien, un servidor se desespera.
Hare todo lo que me dices, al pie de la letra y te contare.
De nuevo te doy las gracias por el aporte, espero dar con la solucion y si no te importa te comentare los pasos que doy, y si no consigo llegar a un buen fin intentare no molestar demasiado con preguntas de ignorancia sobre el tema.

Un saludo Att Centiane.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: centiane en 7 Febrero 2015, 22:16 pm
Hola de nuevo.
Pues despues de un tiempo liado con el susodicho programa y siguiendo los pasos que me indicastes al pie de la letra, no consigo de ver como crea la clave, he mirado y remirado todo, pero el olly al hacer trace sobre el codigo sale a una dll y se me enlupa hay.
Lo he retomado de nuevo y me estoy educando con delphy para poder avanzar en algo pero como bien decis es cuestion de estudio y dedicacion.
Me podeis dar un nuevo empujoncito para poder empezar por algo mas concreto.

Gracias.

Un saludo att Centiane.


Título: Re: Hola, estoy liado hasta la medula.
Publicado por: MCKSys Argentina en 7 Febrero 2015, 23:39 pm
Me podeis dar un nuevo empujoncito para poder empezar por algo mas concreto.

Claro:

Si abres el ejecutable con IDR, verás que el programa define una clase que maneja la licencia. No hay strings que buscar. La clase se llama TDTLicenseCheck y se encuentra en la unidad _Unit61. El método que te interesa es el Create (aunque tendrás que mirar los demás métodos/funciones para poder hacer una licencia válida.) La licencia parece que se guarda en el registro (sólo miré el proggie por encima).

Saludos!