Ayuda con ABViewer 7

Iniciado por gastonp, 10 Junio 2010, 17:19 PM

0 Miembros y 1 Visitante están viendo este tema.

gastonp

Hola a todos, necesitaria que me orienten un poco con este programa. Soy nuevo en esto, he leido los tutos de Ricardo Narvaja y he conseguido crackear algunos programas sencillos pero se me ha puesto en la cabeza crackear este programa y la verdad que no le encuentro la vuelta.
La aplicacion esta hecha en Delphi 6/7, sin packer segun el RDG, al ingresar aparece una nag que nos dice la cantidad de dias que nos quedan disponibles y nos permite ingresar los datos para registrarnos. Una vez ingresados los datos nos aparece otra ventana que dice que reiniciemos el programa para verificar los datos del registro y se cierra.
Esto es lo que he descubierto hasta ahora: el numero de serie que ingresamos junto con nuestros datos se guardan en el REGISTRO DE WINDOWS. Poniendo un "bp RegQueryValueExA" y reiniciando el programa, se puede ver como lee mi nombre y mi mail del registro pero no logro ver donde lee el nº de serie que ingrese.
He tratado tambien de encontrar donde comienza la nag para poner un bp ahi y ver desde donde es llamada pero no lo he logrado
El programa lo pueden descargar desde aca:
http://www.cadsofttools.com/download/abviewer.zip

Si pueden guiarme un poco se los agradeceria.
Un saludo

LSL

con el DeDe puedes ver las direccion offset de los eventos, tambien con la herramienta E2A de "[RAZIEL] & Guan de Dio", puedes ver las direcciones donde comienzan los formularios, así como la de los distintos eventos que contienen.
Saludos.

LSL.

MCKSys Argentina

Tambien puedes usar IDR (http://kpnc.org/idr32/en/).

Esta muy bueno y aparte, detecta las llamadas a las librerias de las ultimas versiones de Delphi.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


gastonp

Gracias por responder tan pronto, he usado el DeDe y el IDR y encontre la nag: se llama TfrmNagScreen. Todavia no he podido registrar la aplicacion pero voy a seguir probando.
Un saludo

LSL

#4
Cita de: MCKSys Argentina en 10 Junio 2010, 21:54 PM
Tambien puedes usar IDR (http://kpnc.org/idr32/en/).

Esta muy bueno y aparte, detecta las llamadas a las librerias de las ultimas versiones de Delphi.

Saludos!

Muy bueno, y mas actualizado que el DeDe. :D

Definiciones para delphi 2009 recien salidas del horno, y se está trabajando con las definiciones para delphi 2010, que por ahora hay que esperar.

Desde aqui, muchas gracias a sus creadores, por esta magnifica herramienta, que ponen en nuestras manos gratuitamente.   ;-)
Saludos.

LSL.


tena

Como explico en el tute, buscas ese patron de bytes y estan aqui...

0046FDA9  |> \E8 0694F9FF   CALL <JMP.&user32.GetCapture>            ; [GetCapture
0046FDAE  |.  85C0          TEST EAX,EAX
0046FDB0  |.  74 11         JE SHORT ABViewer.0046FDC3
0046FDB2  |.  6A 00         PUSH 0                                   ; /lParam = 0
0046FDB4  |.  6A 00         PUSH 0                                   ; |wParam = 0
0046FDB6  |.  6A 1F         PUSH 1F                                  ; |Message = WM_CANCELMODE
0046FDB8  |.  E8 F793F9FF   CALL <JMP.&user32.GetCapture>            ; |[GetCapture
0046FDBD  |.  50            PUSH EAX                                 ; |hWnd
0046FDBE  |.  E8 A197F9FF   CALL <JMP.&user32.SendMessageA>          ; \SendMessageA
0046FDC3  |>  E8 6497F9FF   CALL <JMP.&user32.ReleaseCapture>        ; [ReleaseCapture


Te vas al inicio de esa rutina y pones un bp

0046FD38  /$  55            PUSH EBP                                 ;  GETCAPTURE
0046FD39  |.  8BEC          MOV EBP,ESP
0046FD3B  |.  83C4 E0       ADD ESP,-20
0046FD3E  |.  53            PUSH EBX
0046FD3F  |.  56            PUSH ESI
0046FD40  |.  33D2          XOR EDX,EDX


Reinicias, das run, caes ahi y te ijas en la pila a donde retorna.

0012FE6C   00A20661  RETURN to ABViewer.00A20661
0012FE70   0012FEBC  Pointer to next SEH record
0012FE74   00A206D4  SE handler


y retornamos aqui..

00A205DE   .  A1 3839A800        MOV EAX,DWORD PTR DS:[A83938]
00A205E3   .  8338 00            CMP DWORD PTR DS:[EAX],0
00A205E6   .  75 3B              JNZ SHORT ABViewer.00A20623
00A205E8   .  8BCB               MOV ECX,EBX
00A205EA   .  B2 01              MOV DL,1
00A205EC   .  A1 E4058B00        MOV EAX,DWORD PTR DS:[8B05E4]
00A205F1   .  E8 BE07E9FF        CALL ABViewer.008B0DB4
00A205F6   .  8B15 3839A800      MOV EDX,DWORD PTR DS:[A83938]                  ;  ABViewer.00A7DC68
00A205FC   .  8902               MOV DWORD PTR DS:[EDX],EAX
00A205FE   .  A1 3839A800        MOV EAX,DWORD PTR DS:[A83938]
00A20603   .  8B00               MOV EAX,DWORD PTR DS:[EAX]
00A20605   .  8998 BC030000      MOV DWORD PTR DS:[EAX+3BC],EBX
00A2060B   .  C780 B8030000 F020>MOV DWORD PTR DS:[EAX+3B8],ABViewer.00A220F0
00A20615   .  A1 3839A800        MOV EAX,DWORD PTR DS:[A83938]
00A2061A   .  8B00               MOV EAX,DWORD PTR DS:[EAX]
00A2061C   .  B2 01              MOV DL,1
00A2061E   .  E8 9910E9FF        CALL ABViewer.008B16BC
00A20623   >  A1 3839A800        MOV EAX,DWORD PTR DS:[A83938]
00A20628   .  8B00               MOV EAX,DWORD PTR DS:[EAX]
00A2062A   .  80B8 DA010000 00   CMP BYTE PTR DS:[EAX+1DA],0
00A20631   .  0F85 E3000000      JNZ ABViewer.00A2071A
00A20637   .  80BB 62080000 00   CMP BYTE PTR DS:[EBX+862],0
00A2063E   .  0F85 97000000      JNZ ABViewer.00A206DB
00A20644   .  33C0               XOR EAX,EAX
00A20646   .  55                 PUSH EBP
00A20647   .  68 D406A200        PUSH ABViewer.00A206D4
00A2064C   .  64:FF30            PUSH DWORD PTR FS:[EAX]
00A2064F   .  64:8920            MOV DWORD PTR FS:[EAX],ESP
00A20652   .  A1 3839A800        MOV EAX,DWORD PTR DS:[A83938]
00A20657   .  8B00               MOV EAX,DWORD PTR DS:[EAX]
00A20659   .  8B10               MOV EDX,DWORD PTR DS:[EAX]
00A2065B   .  FF92 FC000000      CALL DWORD PTR DS:[EDX+FC]                     ;  NAG DE REGISTRO


Donde se ven unas cuantas variables muy interezantes..

slds

gastonp

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