Busca la funcion que necesitas!

viernes, 4 de febrero de 2011

C - Reemplazar Offsets

Modifiqué mi anterior función para hacer una que reemplaze los offsets que se quieran y no nomás 1 así me evitaba hacer un bucle en un programa inecesario!

Nota: La variable final la pueden quitar y usar directamente nOffset, yo la puse para debuggear.

int ReemplazarOffsets(int pOffset,int cantidad,char *nOffset, char * archivo)
{
  FILE *fp;
  char *buffer;
  char *temp;
  char *final;
  int peso;

  fp=fopen(archivo,"rb");
  if(fp==NULL)
    return -1;
  fseek(fp,0,SEEK_END);
  peso=ftell(fp);
  rewind(fp);
  final=(char *)malloc(cantidad);
  temp=(char *)malloc(pOffset -1);
  fread(temp,pOffset-1,1,fp);
  fseek(fp,pOffset-1+cantidad,SEEK_SET);
  buffer=(char *)malloc(peso - (pOffset - 1) - cantidad);
  fread(buffer,peso - (pOffset - 1) - cantidad,1,fp);
  fclose(fp);
  final=nOffset;
  fp=fopen(archivo,"wb");
  if(fp==NULL)
    return -1;
  fwrite(temp,pOffset-1,1,fp);
  fwrite(final,cantidad,1,fp);
  fwrite(buffer,peso - (pOffset - 1) - cantidad,1,fp);
  fclose(fp);
  free(temp);
  free(buffer);
  free(final);
  return 0;
}


//uso
...
//Reemplazamos del offset 0x256 al 0x25C rellenando esos offsets con Linkgl
ReemplazarOffsets(0x256,6,"Linkgl","C:\linkgl.exe");
...

 

No hay comentarios:

Publicar un comentario