Digamos
que restringimos un programa a un uso limitado (e.j.
25 usos) antes de que el programa se
'desactive' . As� que lancemos el
programa y observa la caja de di�logo que
educadamente te informa de cu�ntas veces has
ejecutado el programa, s�lo relanza el programa
unas cuantas veces m�s para tener una
percepci�n de lo que est� pasando.
Aproximaci�n zen aqu� (como con los ensayos
de tiempo) siente c�mo este c�digo podr�a
llevarse a cabo (e j. 19h = 25 dec). Quiz�
husmea con el editor HEX para algunos probables
bytes - sin embargo un desensamblaje
probablemente ser� tu mejor acercamiento (
espero que recordaras el texto en esa caja de
di�logo). Debes localizar f�cilmente algo
as� dentro de W32DASM:
CMP BYTE PTR [004628D4],00 <--Comprueba la 1� vez que el programa es ejecutado
JZ 0045B7D9 <--Salta la 1� vez ejecutada
CMP DWORD PTR [004628D8],1A <--Comprueba las veces ejecutadas (1A = 26dec)
JGE 0045B72A <--Salta si eres un chico malo
En
este esquema debes ver f�cilmente nuestros 2
flags importantes, 004628D4 decide si esta es la
primera ejecuci�n del programa, donde el n�mero
de veces que el programa se ha ejecutado se
marcar� como 004628D8.
Nota que el programa compara el n�mero de veces
ejecutadas con 26 en decimal, un truco menor para
enga�ar nuestra b�squeda HEX.
Debes poder ver muchas maneras de anular este
esquema, podr�as conformarte, por ejemplo, con
aumentar 1A (26) digamos a FF (255), esto es un
cambio bastante d�bil pero puede ayudarte
totalmente a evaluar el programa, o puedes "NOPear"
el JGE 0045B72A, eso anular�a el control de 26
veces de ejecuci�n completamente, o quiz�
podr�as forzar el JZ 0045B7D9 a un JMP.
�Haz el parche que mejor te sirva!
La mayor�a de los esquemas de limite de
'runtime' son similares en funcionamiento a este
y son contadores de situaci�n normalmente
bastante d�biles
(aunque a veces los programas pueden
incrementar un contador escondido dentro del
archivo del programa o en una DLL), debes
prestar particular atenci�n a direcciones que se
usan como flags y a como �stas puede ser
potencialmente mal�volas y debes de estar muy
seguro de verificar que eso no sea una direcci�n
espejo que verifica el mismo flag.
|