PDA

Ver la versión completa : crackear sofcam



@riel
07-09-2006, 02:18
Hola a tod@s.

He estado estudiando el curso de Ricardo Narvaja y creo que tengo mas o menos una idea básica del tema.
Los crack mes que vienen con el curso, pues traen su respuesta en el siguiente y he podido resolverlos de formas distintas a ellas. Pero deduzco que ese tipo de protecciones son bastante básicas para que los programadores las usen (imagino que usan trucos de seguridad mas actualizados)

En fin me gustaría, si no es mucho pedir me den una leve indicación de como empezar a crackear sofcam, que es el programa en que estoy tratando ahora de hacer algo "real".

Por favor no den una respuesta donde todo este muy "molido", quiero hacerlo por mimismo, de ante mano muchas gracias a tod@s. :)

smaug_
07-09-2006, 02:56
A ver si contactamos por mp y me pasas el sofcam e intento hacer yo algo. Aunque tendre que desempolvar lo poco que aprendi, si quieres te puedo pasar unos articulos de un libro que me compre (Cracking sin secretos) Que es bastante avanzado, la verdad yo no me entero mucho del tema aun. Pero vienen todos o casi todos los tipos de protecciones. Nos podriamos poner entre los dos, seria una excusa para volver al cracking ^^

@riel
08-09-2006, 20:50
Ok men....
De aqui puede descargarso el programa:
http://softcam.softonic.com/ie/44238

@riel
04-10-2006, 19:59
Hola gente...
Tengo un problema...

Como no me era posible introducir un serial falso para hacerle un seguimiento y tratar de hallar uno verdadero ya que el programa no te da ningún espacio donde meterlo,( sino que tienes que hacerlo conectándote al sitio Web) vi. Como única opción mantenerlo siempre en tiempo de evaluación.
Después de instalarlo adelante la fecha un año

Al pasarlo por RDG Packer Detector nos dice "Microsoft Visual C++V6.0, nada" o sea que no esta empacado.

Lo desbarate en olly y Paró con "BP SendMessageA" y me dejo en:

77D15F13 > B8 29120000 MOV EAX, 1229
77D15F18 BA 0003FE7F MOV EDX,7FFE0300
77D15F1D FFD2 CALL EDX
77D15F1F C2 0400 RETN 4
77D15F22 > 55 PUSH EBP
77D15F23 8BEC MOV EBP,ESP
77D15F25 56 PUSH ESI
77D15F26 8B75 0C MOV ESI,DWORD PTR SS:[EBP+C]
77D15F29 F7C6 0000FEFF TEST ESI,FFFE0000
77D15F2F 0F85 0AFD0200 JNZ USER32.77D45C3F
77D15F35 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]


Y como punto de retorno:

0012F344 004032D3 /CALL to SendMessageA from SoftCam.004032CD
0012F348 001702CC |hWnd = 1702CC
0012F34C 00000441 |Message = MSG(441)
0012F350 00000060 |wParam = 60
0012F354 0099AC9C \lParam = 99AC9C


pues me voy pa`ya y caigo en un Call que esta dentro de otro y otro y después de dar vueltas buscando sendmessagA, pues me devolví hasta salir quedar fuera de todos esos Call y fui a parar aquí:

0041A1D1 > 33C0 XOR EAX,EAX
0041A1D3 > 50 PUSH EAX
0041A1D4 . 8D4424 08 LEA EAX,DWORD PTR SS:[ESP+8]
0041A1D8 . 50 PUSH EAX
0041A1D9 . 8D8E E4180000 LEA ECX,DWORD PTR DS:[ESI+18E>
0041A1DF . E8 5C2AFFFF CALL SoftCam.0040CC40
0041A1E4 . 8B8E 081D0000 MOV ECX,DWORD PTR DS:[ESI+1D0>; |
0041A1EA . 50 PUSH EAX ; |Arg2
0041A1EB . 56 PUSH ESI ; |Arg1
0041A1EC . E8 8F80FFFF CALL SoftCam.00412280 ; \SoftCam.00412280
0041A1F1 > 8BCE MOV ECX,ESI
0041A1F3 . E8 78FBFFFF CALL SoftCam.00419D70
0041A1F8 . 8B4C24 0C MOV ECX,DWORD PTR SS:[ESP+C]
0041A1FC . 5E POP ESI
0041A1FD . F7D8 NEG EAX
0041A1FF . 1BC0 SBB EAX,EAX

Como hay un RET abajo entonces empecé a revisar todos los Call antes de este, y ahí en el primerito....

0041A1F3 . E8 78FBFFFF CALL SoftCam.00419D70

Vi:

00419D70 /$ 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00419D76 |. 6A FF PUSH -1
00419D78 |. 68 77DE4100 PUSH SoftCam.0041DE77
00419D7D |. 50 PUSH EAX
00419D7E |. 64:8925 000000>MOV DWORD PTR FS:[0],ESP
00419D85 |. 81EC A4000000 SUB ESP,0A4
00419D8B |. 56 PUSH ESI
00419D8C |. 57 PUSH EDI
00419D8D |. 6A 00 PUSH 0 ; /Title = NULL
00419D8F |. 68 40604200 PUSH SoftCam.00426040 ; |Class = "SoftCam"
00419D94 |. FF15 6CE54100 CALL DWORD PTR DS:[<&USER32.F>; \FindWindowA
00419D9A |. 85C0 TEST EAX,EAX
00419D9C |. 0F84 97000000 JE SoftCam.00419E39
00419DA2 |. 6A 00 PUSH 0 ; /lParam = 0
00419DA4 |. 6A 00 PUSH 0 ; |wParam = 0
00419DA6 |. 68 11080000 PUSH 811 ; |Message = MSG(811)
00419DAB |. 50 PUSH EAX ; |hWnd
00419DAC |. FF15 50E54100 CALL DWORD PTR DS:[<&USER32.S>; \SendMessageA
00419DB2 |. 8BF0 MOV ESI,EAX
00419DB4 |. 83CF FF OR EDI,FFFFFFFF
00419DB7 |. 3BF7 CMP ESI,EDI
00419DB9 |. 74 7E JE SHORT SoftCam.00419E39
00419DBB |. 85F6 TEST ESI,ESI
00419DBD |. 74 7A JE SHORT SoftCam.00419E39
00419DBF |. 81E6 FFFF0000 AND ESI,0FFFF
00419DC5 |. 83FE 5A CMP ESI,5A
00419DC8 |. 7E 02 JLE SHORT SoftCam.00419DCC

(un salto condicional para sendmessageA)

pongo un bp 00419d9c, le doy y cuando para, cambio JE por JMP doy f9 y listo ya no hay cartel y han salido de una vez los dos modulitos...
guarde los cambios y ahora evitar que corra el tiempo.

Para esto necesitaba trabajar en "SCVID32.dll" ( cosa que me confirmo Smaug_ A quien agradezco en el alma el haber sacado tiempo para responder mis mp. y por la información prestada )

Esta dll tela instala el programa en una carpeta llamada DRIVER donde esta el .exe

La abri con olly , "Dynamic-link library[*.dll]"
Como no podemos hacerla correr como un ejecutable me fui a las referencias y buscamos a ver que podía usar.
encontré esta "trial expired...........etc"

10013775 |. F3:AB REP STOS DWORD PTR ES:[EDI]
10013777 |. E8 0417FFFF CALL SCVid32.10004E80
1001377C |. 85C0 TEST EAX,EAX
1001377E |. 74 1E JE SHORT SCVid32.1001379E
10013780 |. E8 EB16FFFF CALL SCVid32.10004E70
10013785 |. 50 PUSH EAX ; /<%lu>
10013786 |. 8D8424 4001000>LEA EAX,DWORD PTR SS:[ESP+140] ; |
1001378D |. 68 70450310 PUSH SCVid32.10034570 ; |format = "Trial expired <code %lu>.MSG"
10013792 |. 50 PUSH EAX ; |s
10013793 |. FF15 38D20210 CALL DWORD PTR DS:[<&MSVCRT.sprintf>] ; \sprintf
10013799 |. 83C4 0C ADD ESP,0C

Ahi vemos un JE después de un CALL y un TEXT
entro al call antes del salto a ver que ay...

10004E80 /$ 8B0D CC300310 MOV ECX,DWORD PTR DS:[100330CC]
10004E86 |. B8 64000000 MOV EAX,64
10004E8B |. 3BC1 CMP EAX,ECX
10004E8D |. 1BC0 SBB EAX,EAX
10004E8F |. F7D8 NEG EAX
10004E91 \. C3 RETN

Cortita trabaja con eax que es la que llama en 10013785

coloque XOR remplazando NEG buscando que sea 1

10004E80 /$ 8B0D CC300310 MOV ECX,DWORD PTR DS:[100330CC]
10004E86 |. B8 64000000 MOV EAX,64
10004E8B |. 3BC1 CMP EAX,ECX
10004E8D |. 1BC0 SBB EAX,EAX
10004E8F 33C0 XOR EAX,EAX
10004E91 C3 RETN

Guardo los cambios y arranco softcam nuevamente.

ya quedo funcionando bien.

arregle la fecha y al querer usarlo..... ERROR OPENING FILE abro nuevamente la dll con olly, busco "error" en las referencias, para.. le doy ctrl+L y ahí esta....
me voy pa`ya y caigo en:

10013785 |. 50 PUSH EAX ; /<%lu>
10013786 |. 8D8424 4001000>LEA EAX,DWORD PTR SS:[ESP+140] ; |
1001378D |. 68 70450310 PUSH SCVid32.10034570 ; |format = "Trial expired <code %lu>.MSG"
10013792 |. 50 PUSH EAX ; |s
10013793 |. FF15 38D20210 CALL DWORD PTR DS:[<&MSVCRT.sprintf>] ; \sprintf
10013799 |. 83C4 0C ADD ESP,0C
1001379C |. EB 29 JMP SHORT SCVid32.100137C7
1001379E |> BF 58450310 MOV EDI,SCVid32.10034558 ; ASCII "Error Opening File.MSG"
100137A3 |. 83C9 FF OR ECX,FFFFFFFF
100137A6 |. 33C0 XOR EAX,EAX

Cerca de donde estábamos manipulando.
olly me dice que el salto viene de 1001377E
como este es el salto que forzamos con la fecha adelantada y funciono, creo que el problema debe de ser de antes,
Busco un ">" para irme devolviendo y ahí uno en:
10013769 |> 57 PUSH EDI
me pongo encima de el y olly me dice que es un salto de 10013743 y de 10013747
ahí encuentro un JNZ y un JZ
nopeo 10013743 y no me sirve, le devuelvo su valor original y nopeo 10001374 y listo

que do funcionando adelanto la fecha la cuadro nuevamente y funciona
""de un momento a otro dejo de funcionar y me da nuevamente error opening file""
Use otra dll ala que le había hecho los mismos cambios y funciono perfecto,
realizo nueva mente los cambios en la dll que me instala el programa y sigue con el problema

ALGUIEN SABE POR QUE?
DONDE ESTA EL ERROR?
(copare las dos dll y el resultado es que son identicas, por que funciona con una y con la otra no??????)


GRACIAS