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 - gastonp

#21
Gracias a todos, voy a poner en practica sus metodos.
Gracias tena por tu solucion para registrar el total commander, muy bueno!! ;-)
Un saludo
#22
Hola, queria saber que metodo utilizan ustedes para encontrar la CALL desde la que se llama a una nag en Delphi (no de un programa en particular, sino en general). He leido varios tutos de la pagina de Ricardo Narvaja, y he estado practicando crackeando algunos programitas en Delphi pero siempre tengo este problema.
El metodo de poner un bp en GetCapture no siempre me funciona, al igual que el de ejecutar el programa con CTRL+F8 y supuestamente el Olly se detiene en la CALL de la nag.
Si busco en DeDe o IDR la direccion del metodo Show de la nag y pongo un bp ahi, recorro todo el procedimiento con F8 hasta el RET y la nag tampoco aparece.
¿Hay alguna forma de detectar exactamente cual es la CALL que hace aparecer la nag?
#23
Cita de: LSL en  3 Julio 2010, 10:18 AM
si con el IDR guardas un archivo MAP, que luego en el olly lo cargas con el plugin MapConv.dll, tendras mucha información interesante trazando con el olly.

Gracias LSL no sabia eso de los archivos MAP. La verdad que la diferencia es bastante.

Cita de: tincopasan
parece por lo que describis lo mismo que hace el totalcommander, en la pagina de Ricardo narvaja hay un tutorial de como activarlo, o sea sacando la nag (no me acuerdo el número de tutorial pero seguro es despues del 900) claro que si el que estas mirando esta empacado primero tenes que sacar el packer. ese tutorial lo escribio tincopasan jeje el titulo es algo como totalcommander para newbies

Read more: http://foro.elhacker.net/post.html;quote=1479353;topic=298311.0;num_replies=11;sesc=157e27acb2b986024a4befbfedb9aed0#ixzz0sgQOSe73

Asi es tincopasan, solo que una versión mas nueva que la de tu tutorial. Acabo de ver tu tuto y pude cracker el que tengo yo sin ningun problema. Es identico al de tu tute, aunque no logro entender como te diste cuenta de cual es la CALL que comprueba si estas registrado.

Cita de: tena

esta
http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/901-1000/978-TotalCommander7paranewbies_tincopasan.rar

Gracias tena
#24
Te agradezco tu ayuda ctlon, pero para los que recien comenzamos hacer un injerto no es tan sencillo. Te comento que en realidad no me interesa usar este programa, lo baje para practicar y ahora quiero crackearlo para aprender como se hace en estos casos.
Probe haciendo lo que vos decis: puse un bp ShowWindow, cuando para para mostrar la nag lo hace desde una call en 0041811E. Modifique el push que especifica como es mostrada la ventana para que no la muestre, pero me encontre con un problema.
Seguí ejecutando el programa con f9 sin quitar el bp y encontre que se vuelve a llamar a ShowWindow desde la call de 0041811E pero esta vez para que muestre la ventana principal de la aplicacion, por lo que si modifico el push como lo hice despues no me muestra la nag pero tampoco me muestra la ventana principal, olly me dice que se esta ejecutando la aplicacion pero no hay ninguna ventana en pantalla.
Voy a seguir probando a ver si encuentro otro modo.
#25
Con el IDR si lo puedo ver LSL, pero esta bastante complicado.
Una duda ctlon: en caso de querer hacer un injerto, ¿cómo se cuál es el nombre de la clase? A la API ShowWindow se le pasa como parámetro el handle de la ventana (Olly muetra en el stack el handle y el nombre de la clase pero no se de donde lo saca), ¿tendria que usar la API FindWindow primero para encontrar el handle de la clase tnagnastyscreen?
#26
Necesitaria que me den una mano para quitar las nags del siguiente programa:

http://rapidshare.com/files/404280967/tcm755r3.rar

Segun el RDG es un InnoSetup y un analisis mas profundo revela que esta hecho en Delphi 6/7.
Al ejecutar la aplicacion aparece una nag que dice que no estoy registrado (sin ningun boton) la cual desaparece en un par de segundos y aparece otra que dice que es un programa shareware y que para ingresar presione uno de los 3 botones que aparecen debajo (el numero de boton a presionar cambia cada vez que ingresamos).

Esto es lo jice hasta ahora:

  • Quise abrila con el DeDe y primero me dice que es una aplicacion D2 :huh: y luego al querer procesarla me da un error de puntero invalido y ahi termina
  • Con el IDR si pude abrirlo y encontre la nag: se llama tnagnastyscreen (tambien la pude encontrar con un editor de recursos, pero si la elimino no arranca la aplicacion)
  • Puse un bp en el evento show de la nag, olly se detiene ahi, recorro todo el evento hasta salir y la nag todavia no aparece. Tambien probe poniendo en ret al inicio de la rutino pero no me funciono
  • Probe con el metodo de poner un bp en la api getcapture como se explica en el tute nº 838 de la pagina de Ricardo Narvaja pero el programa no se detiene al mostrar la nag
  • Probe ejecutandolo con ctrl+f8 como explica lisa & el alquimista en sus teorias pero tampoco funciono

Por lo que pude ver el programa busca un archivo de licencia para ver si estamos registrados pero dicha rutina escapa a mis conocimientos. Tambien creo que las 2 nags que aparecen al principio son controladas por la misma rutina (creo que son un solo form que muestra u oculta unos controles determinados segun la ocasion).
Les agradeceria que me dieran una mano asi depaso aprendo como eliminar este tipo de nags.
Gracias
#27
Citar
Cita de: gastonp en Hoy a las 03:48
¿ como llegaste a saber que la rutina de 00F99640 es la que controla el periodo de prueba?
Adelanté la fecha de windows para ver el mensaje que salía al haber caducado. Luego puse un punto de ruptura en rtcMsgBox y vi que procedimiento era el que lo llamaba.

Saludos.

Hice lo mismo que vos PeterPunk77 pero al romper en rtcMsgBox no lo hace dentro de la rutina de 00F99640. Al principio me fije en la pila para ver a donde regresaba (las rutinas que habian llamado a esta) y no sabia muy bien como encararlo hasta que me di cuenta de que en la pila estaba el texto de que se modifico la fecha en el reloj del sistema y una direccion de retorno. Segui bajando en el stack hasta que encontre una direccion de retorno debajo de la cual ya no estaba ese mensaje y casualmente esa direccion de retorno estaba dentro de la rutina que vos mencionas. Todo esto es para preguntarte si es asi como se debe llegar a ese punto o si hay otra forma de hacerlo.

Citar
Con esos dos parches el programa ya da no caduca ni muestra el texto. Pero podemos quitar esa ventanita que al arrancar nos dice que nos quedan 30 días. Y ésta es la línea donde comienza el procedimiento que nos muestra dicha nag:
Código

012A5060     55                     PUSH EBP

y basta, nuevamente, con convertir esa línea en un RET (0xC3)

Y si queréis que no os salga la ventana que pregunta qué tipo de versión queremos evaluar (por cierto yo no noto diferencia entre ellas), podéis nopear estas líneas:
Código

012A6A42     E8 09020000            CALL 012A6C50
012A6A47     3BC6                   CMP EAX,ESI
012A6A49     7F 15                  JG SHORT 012A6A60

¿Como rompes en esas ventanas para saber desde donde son llamadas, ya que por lo que veo no son MessageBox?

Gracias
#28
jaja mucho mas facil que estar parchando saltos  :laugh: !! Gracias PeterPunk77, solo tengo una duda: ¿ como llegaste a saber que la rutina de 00F99640 es la que controla el periodo de prueba?
El comienzo de la rutina dice que viene de un jump de 005516E8 pero en esa direccion solo esta el jump y una instruccion sub.
Gracias de nuevo, a vos y a todos los del foro por tomarse la molestia de enseñarnos a nosotros los que recien empezamos.
Un saludo
#29
Estuve buscando las cadenas de texto y siguiendolas pude hacer las siguientes modificaciones:


012A6A3C   .  FF15 4C114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaOnErro>;  MSVBVM60.__vbaOnError
012A6A42   .  E8 09020000   CALL IDFlow.012A6C50
012A6A47   .  3BC6          CMP EAX,ESI
012A6A49      7F 15         JG SHORT IDFlow.012A6A60
012A6A4B   .  E8 00E90B00   CALL IDFlow.01365350                      ;  mensaje trial over
012A6A50   .  8975 E0       MOV DWORD PTR SS:[EBP-20],ESI
012A6A53   .  FF15 30114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaExitPr>;  MSVBVM60.__vbaExitProc
012A6A59   .  68 D56A2A01   PUSH IDFlow.012A6AD5
012A6A5E   .  EB 74         JMP SHORT IDFlow.012A6AD4
012A6A60   >  C745 E0 FFFFF>MOV DWORD PTR SS:[EBP-20],-1


cambiando el salto JG de 012A6A49 por un JMP podemos seguir usandolo despues de los 30 dias.

Para sacar el texto de Trial version en la impresión:


010B1E31      .  FF15 80104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeOb>;  MSVBVM60.__vbaFreeObjList
010B1E37      .  83C4 1C       ADD ESP,1C
010B1E3A      .  66:85F6       TEST SI,SI
010B1E3D         0F84 D0000000 JE IDFlow.010B1F13                        ;  mensaje trial version en vista previa impresion
010B1E43      .  57            PUSH EDI
010B1E44      .  8B75 2C       MOV ESI,DWORD PTR SS:[EBP+2C]
010B1E47      .  56            PUSH ESI
010B1E48      .  8B45 28       MOV EAX,DWORD PTR SS:[EBP+28]
010B1E4B      .  50            PUSH EAX
010B1E4C      .  8B4D 24       MOV ECX,DWORD PTR SS:[EBP+24]
010B1E4F      .  51            PUSH ECX
010B1E50      .  8B55 20       MOV EDX,DWORD PTR SS:[EBP+20]


hay que cambiar el JE que esta en 010B1E3D por un JMP. Esto ultimo lo probe en la vista de impresion y funciona bien. No se si al imprimir saldra bien ya que no tengo impresora en casa para probar.

Tambien con el VB Decompiler encontre un form que se llama frmTrialPause que es el que aparece cada 30 minutos. Habria que buscar el salto para evitarlo.

Otra cosa que me llamo la atencion es que hay un form llamado frmActivation pero dentro del programa no veo ninguna opcion para registrarlo.
#30
Ingeniería Inversa / Re: Ayuda con ABViewer 7
13 Junio 2010, 19:37 PM
Gracias tena, muy bueno el tute. Siguiendolo llegue al mismo lugar que vos donde muestra la nag e invirtiendo el salto de 00A20631 evito que se muestre y pude ingresar al programa aun despues de los 45 dias de prueba.
He puesto un hardware breakpoint on write en las direcciones de memoria a las que apuntan las siguientes comparaciones que saltan la nag:

00A20637   .  80BB 62080000 00   CMP BYTE PTR DS:[EBX+862],0



00A2062A   .  80B8 DA010000 00   CMP BYTE PTR DS:[EAX+1DA],0


y he intentado modificar esas posiciones de memoria pero se me termina colgando el programa.
Tambien encontre el siguiente codigo que se ejecuta al seleccionar la opcion Acerca de ABViewer en el menu Ayuda:


008AB20C  /$  FECA          DEC DL
008AB20E  |.  74 0E         JE SHORT ABViewer.008AB21E
008AB210  |.  FECA          DEC DL                                    ;  Switch (cases 1..3)
008AB212  |.  74 1B         JE SHORT ABViewer.008AB22F
008AB214  |.  FECA          DEC DL
008AB216  |.  74 28         JE SHORT ABViewer.008AB240
008AB218  |.  FECA          DEC DL
008AB21A  |.  74 35         JE SHORT ABViewer.008AB251
008AB21C  |.  EB 43         JMP SHORT ABViewer.008AB261
008AB21E  |>  BA 6CB28A00   MOV EDX,ABViewer.008AB26C                 ;  ASCII "Unregistred"
008AB223  |.  8B80 94030000 MOV EAX,DWORD PTR DS:[EAX+394]
008AB229  |.  E8 E2D6BDFF   CALL ABViewer.00488910
008AB22E  |.  C3            RETN
008AB22F  |>  BA 80B28A00   MOV EDX,ABViewer.008AB280                 ;  ASCII "Standard"; Case 1 of switch 008AB210
008AB234  |.  8B80 94030000 MOV EAX,DWORD PTR DS:[EAX+394]
008AB23A  |.  E8 D1D6BDFF   CALL ABViewer.00488910
008AB23F  |.  C3            RETN
008AB240  |>  BA 94B28A00   MOV EDX,ABViewer.008AB294                 ;  ASCII "Professional"; Case 2 of switch 008AB210
008AB245  |.  8B80 94030000 MOV EAX,DWORD PTR DS:[EAX+394]
008AB24B  |.  E8 C0D6BDFF   CALL ABViewer.00488910
008AB250  |.  C3            RETN
008AB251  |>  BA ACB28A00   MOV EDX,ABViewer.008AB2AC                 ;  ASCII "Enterprise"; Case 3 of switch 008AB210
008AB256  |.  8B80 94030000 MOV EAX,DWORD PTR DS:[EAX+394]
008AB25C  |.  E8 AFD6BDFF   CALL ABViewer.00488910
008AB261  \>  C3            RETN                                      ;  Default case of switch 008AB210


Trate de ir llendo hacia atras para ver donde le asigna el valor a dl pero no logro entender donde lo hace.
Si bien salte el limite de tiempo de la aplicacion me gustaria que quedara registrada. Si pudieras orientarme nuevamente te lo agradeceria.
Gracias y disculpen que sea tan pesado.
Un saludo