Ok,
carga tu objetivo protegido con el propósito de
desensamblar el proceso y mirar cómo trabaja
softSENTRY. Para desensamblar usaremos SoftICE,
porque Wdasm89 parecen caerse cuando intentamos
cargar este objetivo. El archivo Protegido, y el
archivo original tiene un tamaño diferente.
Bueno, probablemente te esperarás, como hice yo,
algún encriptado y algunas variable aleatorias
en el esquema de protección dentro del objetivo.
Te vas a llevar una sorpresa.
Ahora mantén la respiración: éste es el punto
de la entrada para TODOS los ARCHIVOS PROTEGIDO:
:004B066F CC int 3
:004B0670 55 push ebp ; <----- Comenzamos aquí
:004B0671 8BEC mov ebp,esp
:004B0673 83EC48 sub esp,00000048
:004B0676 53 push ebx
:004B0677 56 push esi
:004B0678 57 push edi
:004B0679 E950000000 jmp 004B06CE
:004B067E 0000 add [eax],al
:004B0680 7006 jo 004B0688
¡Mira! Todos los archivos protegidos, tienen el
mismo modelo, con el mismo SALTO (codificado como
E950000000)!
Esto es muy útil, para nosotros; esto significa
que buscando cualquier archivo 'protegido' por
este modelo:
55 8B EC 83 EC
48 53 56 57 E9 50 00 00 00
¡Nos dará, el punto entrada del programa, y nos
dice si el programa ha sido ' protegido' con el
Esquema SoftSentry2!
Te dije que te quedarías con la boca abierta de
sorpresa.
Increíble, y muy muy tonto. El estúpido SALTO
4b6ce (muy insólito), apunta EIP a la
rutina de protección real (puedes
compréndelo fácilmente trazando por encima del
código)
.
Esta rutina salta diferente para cada tipo de '
esquema de protección' que el programador haya
seleccionado para usar:
Límite de Tiempo, salpicadura ...etc. Si la
Protección falla, aterrizarás EN 00093C9B:
00093C82: 8B4508 mov eax,[ebp][00008] ; Carga el valor correcto para pasarlo a la llamada..
00093C85: 50 push eax ; ..¡Lo empuja!..
00093C86: 68A0324B00 push 004B32A0 ; idem
00093C8B: FF156C744B00 call [0004B746C] ; Esta es la llamada[User32!UnregisterClass]
00093C91: E88A000000 call 001279B1 ; *** ¡CARGA LA FUENTE DE EL
PROGRAMA PRINCIPAL !
00093C96: E825000000 call 00127956 ; *** Esta LLAMADA, Activa EL PROGRAMA
PRINCIPAL!
00093C9B: 8B45B8 mov eax,[ebp][0FFB8]; *** ¡ATERRIZAS AQUI! Si falla
la rutina de comprobación!
; ¿Cargar el manipulador del principal?
00093C9E: 50 push eax ; preparar para la llamada
00093C9F: FF15E4734B00 call [0004B73E4] ; Esta es la LLAMADA [Kernel32!ExitProcess]
; y termina el programa
Estas
2 Llamadas en 93C91, 93C96 mantienen a los
programas COMPLETOS completamente libres de
cualquier NAG, Splash, limite de tiempo,
cualquier ' protección' que haya sido escogido
(yo lo sé, porque lo tengo ejecutado!); y si
comparas esta fuente con cualquier otro programa
protegido, verás que ambas llamadas SIEMPRE son
codificadas como:
E8 8A 00 00 00 E8 25 00 00 00
^^^^^ ^^^^^
1ª Llamada 2ª llamada
(usa un editor hex topara buscarlo)
¡Muy
bonito!.. así que el esquema de protección
trabaja como:
:MAINPROGRAM-PROTECTED
Jmp SoftSentriProtection (Siempre E950000000)
:End MAINPROGRAM-PROTECTED
:SoftSentriProtection
// Pon aquí código nag-splash-limite de tiempo //
// Hecho con SoftSentr2.007 //
IF (TrialPeriod==OK) Then
CALL LoadResouce_FullProgram (Siempre E88A000000)
CALL Run_Fullprogram (Siempre E825000000)
Else
Kernel21!CallExitprocess
:End SoftSentriProtection
¿OK?
Ahora podemos escribir un Crack General para este
increíblemente tonto Esquema de Protección
Comercial, simplemente cambiando el primer salto
(codificado como E950000000) con el código
correcto de las 2 LLAMADAS (qué, como
recuerdas, siempre era E88A000000 E825000000).
¿OK?
1) Busca por 55 8B EC 83 EC 48 53 56 57 E9 50 00 00 00
^^^^^^^^^^^^^^ ¡EL SALTO!
2) Reemplaza con E8A2040000 E83D040000 (*)
1ª llamada 2ª llamada
(*) Nota que el código de las 2 llamadas han sido recalculadas para la nueva posición
(¡Siempre lo mismo! Simplemente rastréalo una pizca en tu debugger!)
Ok,
nosotros hemos eliminado otro Esquema de'
Protección' Comercial.
Espero que entiendas el punto entero: ¡Nunca
nunca nunca uses protecciones comerciales 'usar y
listo'! Los programadores orientados
comercialmente son la casta de programadores más
inútil y tonta, ellos NUNCA podrán ofrecerte
ninguna protección real en absoluto... por el
bien de godzilla crea tus propias protecciones,
no es tan difícil después de todo, y conocerás
hasta el menor detalle de lo que estás haciendo.
|