Cita:
|
Empezado por dec
Ahora bien, quedaría entonces cómo comparar el serial del usuario (por partes) con el serial correcto que hemos de generar (también por partes...)
|
Bueno, como he dicho, esta es una de las primeras cosas a hacer y que evita encontra el serial de forma trivial.
Lo siguiente es evitar comparaciones directas; Simplemente, porque no siempre se necesita encontrar el Serial, a veces basta con "Parchear".
Es decir, si yo no encuentro el Serial, pero veo tres comparaciones que dicen:
Código Delphi
[-]
if A!='aasd' then ...
if B!='khgk' then ...
if C!='grfeu' then ...
En este caso optaría por "parchear" los tres
!= por tres
=.
Ya se que el tema se va complicando, pero son cosas que hay que tener en cuenta; La mayoría de sistemas anticopia (serios) ya hechos tienen en cuenta estas cosas y muchas más...
En ese caso a la hora de comparar dos valores, podemos utilizar por ejemplo la resta para saber si da cero, funciones del tipo CHAR y Ord (aplicándolas a los dos) para no comparar los valores exactos, sumar y restar a ambos un valor,...
Aunque desde delphi parece una tontería hacer esto:
Código Delphi
[-]
if ('A' = Str[1]) then
if (char('A') = Char(Str[1])) then
Para el que está revisando el código en ensamblador supone uno o varios saltos, cosa que dificulta mucho a la hora de seguir el código (las llamadas a funciones); Pensad que si se van aplicando diferentes a cada comparación, al final la cosa se hace muy compleja para el que está revisando la pila y los registros.