Hay varias formas de hacer esto, la más simple sería XOR los dos archivos y comprimirlos (GZIP, etc.). La teoría detrás de esto es que con suerte puede obtener una gran secuencia de ceros (las secuencias largas de los mismos valores se comprimen bien).
Puede llevar ese concepto más allá e intentar encontrar áreas de los dos archivos donde los datos son idénticos y omitirlos por completo.
Finalmente, puede utilizar la estructura de cada tipo de archivo para su ventaja. Por ejemplo, en un EXE, puede empaquetar cada método individualmente (solo los que han cambiado) y reconstituir el EXE usted mismo durante la aplicación del parche; tenga en cuenta, sin embargo, que esto es muy probable en el ámbito de la exageración y puede que no valga la pena el esfuerzo (la ganancia sobre un bdiff simple puede no justificar la complejidad adicional que podría romperse en la naturaleza). Como otro ejemplo, podría usar archivos diff para scripts.
Sin embargo, la mayoría de los sistemas de parches en la naturaleza toman la ruta más simple: simplemente empaquetan los archivos que han cambiado, no intentan empaquetar solo los cambios dentro de esos archivos (probablemente por una buena razón, la mayoría del contenido del juego ya está comprimido y crea parches contra altos niveles). la entropía o los datos comprimidos no funcionarán en absoluto ).