Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-08-2011
Avatar de jose_kira_sk8
jose_kira_sk8 jose_kira_sk8 is offline
Registrado
NULL
 
Registrado: jul 2011
Posts: 9
Poder: 0
jose_kira_sk8 Va por buen camino
Post

Cita:
Empezado por oscarac Ver Mensaje
segun mi humilde opinion intentar grabar datos en un ejecutable es complicarse la vida, alguna vez vi modificar un ejecutable para que en algunos titulos aparezca otra cosa.... pero se hacia a bajo nivel con ensamblador

si quieres guardar datos que no se puedan borrar, existen muchas formas.... archivos include ocultos, registro de windows, archivos alternativos... (si borran uno te queda el otro como backup, etc), las posibilidades son muchas
te doy toda la razón , a mi también me a pasado , es algo muy complicado guardar datos en el ejecutable y casi sin sentido diría , ahí muy pocas excepciones que esto seria viable.
Responder Con Cita
  #2  
Antiguo 11-08-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si te decides a llevarlo a cabo, ten en cuenta que es probable que la mayoría de los antivirus que existen te den una alarma cuando se intente modificar un ejecutable. Digamos que es una cosas considerada como "sospechosa".
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 11-08-2011
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Gracias a todos por sus respuestas y tiempo

un gran saludo
Responder Con Cita
  #4  
Antiguo 11-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Por si fuera de utilidad, hice un ejemplo simple que guarda cifrado el numero de serie lógico del disco en el registro y luego lo recupera:
Código Delphi [-]
...

uses Registry;

(* Escribe serial en registro *)
procedure WriteRegKey(const ARootKey: HKEY; const AKey, Valor, NSer: string);
begin
  with TRegistry.Create(KEY_WRITE) do
  try
    RootKey := ARootKey;
    if not OpenKey(AKey, True) then
      raise Exception.Create('Error escribiendo el registro')
    else
    begin
      WriteString(Valor, NSer);
      CloseKey;
    end
  finally
    Free
  end
end;

(* Devuelve serial almacenado en registro *)
function ReadRegKey(const ARootKey: HKEY; const AKey, Valor: string): string;
begin
  with TRegistry.Create do
  try
    RootKey := ARootKey;
    if not OpenKey(AKey, False) then
      raise Exception.Create('Error leyendo el registro')
    else
    begin
      ReadString(Result);
      CloseKey
    end
  finally
    Free
  end
end;

(* Obtiene el número serial del disco *)
function HDSerial(const lpRootPathName: PChar): string;
var
  lpMaximumComponentLength: DWORD;
  lpFileSystemFlags: DWORD;
  lpVolumeSerialNumber: DWORD;
  lpVolumeNameBuffer:  array[0..MAX_PATH] of Char;
begin
  GetVolumeInformation(PChar(lpRootPathName),
                       @lpVolumeNameBuffer,
                       SizeOf(lpVolumeNameBuffer),
                       @lpVolumeSerialNumber,
                       lpMaximumComponentLength,
                       lpFileSystemFlags, nil, 0);
  Result := IntToHex(HiWord(lpVolumeSerialNumber),4) +
            IntToHex(LoWord(lpVolumeSerialNumber),4);
end;

(* rutina trivial de cifrado *)
procedure Cifrar(var Valor: string);
var
  i: integer;
begin
  for i:= 1 to Length(Valor) do
    Valor[i]:= Chr(((Ord(Valor[i]) xor 172)xor 15));
end;

(* Ejemplo de uso *)
procedure TForm1.Button1Click(Sender: TObject);
const
  VALOR_KEY = '\Software\Microsoft\Windows\CurrentVersion';
var
  NSer: string;
begin
  NSer:= HDSerial('C:\');                     // Obtener serial
  Label1.Caption:='Serial Original: ' + NSer; // Mostrar
  Cifrar(NSer);                               // Cifrarlo
  // Escribir serial cifrado en el registro
  //'NombreConfuso' es cualquiera que no se vislumbre como protección.
  WriteRegKey(HKEY_LOCAL_MACHINE,VALOR_KEY,'NombreConfuso',NSer);
  // Leer el serial almacenado en el registro
  NSer:= ReadRegKey(HKEY_LOCAL_MACHINE,VALOR_KEY,'NombreConfuso');
  Label2.Caption:='Serial Cifrado: ' + NSer;  // Lo que se ve en el registro
  Cifrar(NSer);                               // Descifrarlo
  Label3.Caption:= 'Serial Restaurado: '+Nser;// Mostrarlo
end;
Como es sólo un ejemplo la rutina de cifrado no es ninguna maravilla , pero se puede cambiar por la que sea.

Espero que sirva como base para mejorarlo a gusto

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-08-2011 a las 21:38:12. Razón: Acomodar identación
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar datos en Base de Datos MySQL knnibal Conexión con bases de datos 6 23-06-2011 15:36:42
Guardar valor de variables dentro del ejecutable jourdan OOP 5 19-07-2010 18:53:47
Como almacenar datos en un ejecutable droguerman Linux 1 04-04-2009 14:03:16
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Guardar carpeta en un ejecutable Drake C++ Builder 2 02-04-2006 00:08:35


La franja horaria es GMT +2. Ahora son las 19:24:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi