Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Sustituir bytes de un binario (https://www.clubdelphi.com/foros/showthread.php?t=95000)

aguml 23-12-2020 19:04:08

Sustituir bytes de un binario
 
Buenas, quiero sustituir un byte concreto en una dirección concreta del archivo.
La cosa es que no se exactamente cómo hacer eso o si estoy obligado a volcar el archivo completo en memoria y hacer ahí los cambios.
Si es así me imagino que una buena opción es usar TMemoryStream pero no sé bien cómo hacerlo. ¿Alguna ayuda que me ponga en la buena dirección?

ecfisa 23-12-2020 19:48:45

Hola.

Código PHP:

void replaceByte(const AnsiString &aFilename, const unsigned char &Byte,
  const 
unsigned int &position)
{
  
TFileStream *stream;

  
stream = new TFileStream(aFilenamefmOpenWrite);
  try
  {
    
stream->Seek(positionsoBeginning);
    
stream->Write(&Bytesizeof(Byte));
  }
  
__finally
  
{
    
delete stream;
  }


Saludos :)

aguml 23-12-2020 20:05:03

Muchas gracias.
Eso sería para escritura en binario ¿Verdad?
Supongo que es el equivalente a fwrite de C y Write de fstream de C++ ¿No?
Otra cosa, ¿Sabes si los nuevas versiones de embarcadero ya traen alguna librería para calcular crc32, MD5 y similares?

aguml 23-12-2020 20:07:12

También recuerdo que había una función para hacer duplicado del archivo pero no recuerdo cuál. CopyFile o algo así me suena. ¿Sabrías decirme?

escafandra 24-12-2020 02:45:08

Si tienes localizado el offset del BYTE que quieres sobrescribir, puedes hacerlo sin necesidad de leer todo el fichero. Esto te lo permiten las funciones de fichero de C y la API de Windows. Si prefieres la API mira esto: SetFilePointer. Para copiar un fichero: CopyFile


Las funciones criptográficas de windows te permiten calcular el Hash MD5. Aquí tienes un ejemplo para calcular el MD5 de un fichero: GetMD5FromFile.




Saludos.


La franja horaria es GMT +2. Ahora son las 22:46:52.

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