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 (http://www.cadsofttools.com/download/abviewer.zip)
Si pueden guiarme un poco se los agradeceria.
Un saludo
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.
Tambien puedes usar IDR (http://kpnc.org/idr32/en/ (http://kpnc.org/idr32/en/)).
Esta muy bueno y aparte, detecta las llamadas a las librerias de las ultimas versiones de Delphi.
Saludos!
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
Cita de: MCKSys Argentina en 10 Junio 2010, 21:54 PM
Tambien puedes usar IDR (http://kpnc.org/idr32/en/ (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. ;-)
fijate si te sirve para lo de la nag..
http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/801-900/838-COMO_ELIMINAR_NAGS_EN_PROGRAMAS_DELPHI.rar (http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/801-900/838-COMO_ELIMINAR_NAGS_EN_PROGRAMAS_DELPHI.rar)
slds
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
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