Cracking
(Lucifer48)
El
Cracking es para mí una parte de algo más
general que es la ingeniería inversa (RE).
Entender ensamblador perfectamente es mortalmente
importante (los crackers siempre deben
ser coders). La lectura de varios manuales
también es importante. ¡Yo realmente también
aconsejo que pruebes algún crackmes, algunos
están asombrando así; realmente es un buen
ejercicio! Detrás de parchear, corregir, hay
otro mucho conocimiento fundamental:
matemáticas, algoritmos, los lenguajes (ASM,
C, Pascal, Java, Prolog, Caml,...)
, criptografía, OS (no sólo Windows,
prueba el Linux / Unix) ,... (de
hecho es una parte de las ciencias de
computación).
¡Conocimiento es definitivamente poder! Para
volverte un cracker actúa como un cracker.
Siempre piensa que crackers experimentados pueden
ayudarte para todo, se hizo IRC / foros / email
para eso. Nunca pierdas un día: aprende,
aprende, aprende. ¡Fascínate o muere! |
NOP Patching (+ORC)
No
uses NOP a menos que sea totalmente necesario,
ahí normalmente hay una manera mejor. Por
ejemplo podrías reemplazar 2 NOPs con un simple
INC EAX, DIC EAX o algo de ese tipo. Hay muchas
cosas para usar en lugar de un NOP que son
bastante fáciles de hallar en el código. |
Parcheando (MisterE)
Te
lo diré ahora mismo: Odio parchear. Hay
numerosas razones por qué no debes parchear,
aunque hay situaciones cuando no puedes hacer
nada más. Como cuando quieres quitar ese NAG
Screen de algún programa que no te permite
introducir un name/serial. ¡Si puedes introducir
un numero de serie o puedes registrar el programa
sin parchear, hazlo!! Si quieres parchear
podrías encontrar problemas como programas que
hacen alguna verificación de CRC o chequea
múltiples veces. Otro problema común es que los
newbies remiendan algún salto sólo antes de la
llamada a un MessageBoxA. Los programas te dicen
estás registrado, pero entretanto la única cosa
que remendaste era que el programa despliega el
mensaje de 'registered' en lugar del mensaje de
'unregistered'. |
Parcheando Archivos Empaquetados (Mister Soth)
Todo
este método, en un par de las palabras requiere
alguna planificación, pero cuando se ejecuta,
bien lo vale . Lo que nosotros estamos haciendo
es hallar el OEP (Punto de Entrada
Original), y antes de que entremos en el
programa principal, pondremos otro recorte de
código para parchear lo que nosotros queremos.
¡Si tenemos el espacio para poner simplemente el
código adentro, mejor!
Sin embargo si no tenemos el espacio, tendremos
que mirar en otra parte y redireccionar el
programa a esa situación. Al redireccionar,
asegúrate siempre que consigues la dirección
correcta, porque tendrás que parchear el archivo
EXE y poner el código en el mismo lugar EXACTO
al que el SALTO está apuntando, y esto podría
ser delicado. De nuevo, una buena manera para
hacer esto es encontrando un patrón familiar y
apuntándolo (o recordando lo que prefieras)
. |
Pensando como un cracker (rudeboy)
Se
enseña a los programadores que siempre que
tengas una tarea que va a ser hecha más de una
vez, debes crear una función para hacer esa
tarea, y simplemente LLAMAR a la función cuando
necesites realizarla.
Ahora, la mayoría programas que usan una
combinación Name / Serial verifican por lo menos
dos veces el código, una vez cuando introduces
el código, y otra vez cuando el programa se pone
en marcha. Debido a esto el programador LLAMARA
normalmente una función para probar la validez.
Y normalmente, esta función se Llamará cada vez
el código se verifica.
Así si remiendas la función que se Llama para
probar la validez de tu Numero de serie, lo
mostrará como válido siempre que el programa
haga que se compruebe.
Las técnicas empleadas aquí no sólo se aplican
para crackear programas con una combinación Name
/ Serial. No te limites pensando ' Dentro de la
caja', estas técnicas pueden usarse también con
muchos otros tipos de protecciones. Por ejemplo
muchas veces una comprobación de fecha y un NAG
Screen son hechos a través de una función. |
Herramientas (rudeboy)
No
te limites a una herramienta, usa SoftICE,
W32DASM, IDAS, y cualquier otra herramienta que
tengas juntos. La información recaudada con uno
normalmente puede usarse con otro. |
|