Ver Mensaje Individual
  #13  
Antiguo 08-01-2016
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Siempre puedes usar una codificación por XOR, de forma que sólo funcionará con la clave correcta y con ninguna otra. Incluso aunque usen depuración les costará.
Ese truco he usado en numerosas ocasiones con éxito. Codifico las cadenas en una app externa y luego las pego en el código. Antes de usarlas las descifro. La rutina que he usado es tipo Xor, y por tanto simétrica con la misma clave.

Expongo un ejemplo de esa rutina en delphi, esta función se ejecuta en la app externa y en la aplicación que esconde cadenas u otro tipo de dato:

Código Delphi [-]
// Rutina de encriptación Xor.
// La misma rutina encripta y desencripta.
// Source: un puntero al buffer que contiene la fuente a encriptar.
// Size: Tamaño del buffer a encriptar
// Password: clave en modo texto que se tratará como de 8 caracteres, 64 bits
// _Mod: es el módulo restante para encriptaciones parciales
// Si se encripta un buffer por partes, Mod es Size_encriptado%8
// donde Size_encriptado es el tamaño total de lo encriptado hasta ese momento.
// Mod corrige el punto de comienzo del nuevo bloque a encriptar.

procedure Crypt(Source: Pointer; Size: Cardinal; Password: PCHAR; _Mod: integer);
var
  S: PCHAR;
  len, n: integer;
begin
   S:= Source;
   len:= lstrlen(Password);
   for n:=0 to Size-1 do
   begin
     S[n]:= CHAR(integer(S[n]) xor integer(Password[_Mod mod len]));
     inc(_Mod);
   end;
end;


Saludos.
Responder Con Cita