Você precisa montar o sistema de arquivos. Não existe algo como “o deslocamento da versão antiga”: os arquivos podem ser fragmentados . Para modificar os dados, você precisaria encontrar os deslocamentos e tamanhos de todos os fragmentos. Seria ainda pior se a nova versão tivesse um tamanho diferente: você precisaria descobrir onde há algum espaço livre para os dados extras, e você precisaria atualizar as estruturas de dados do diretório para indicar onde os novos blocos são .
Você pode encontrar algum código para fazer isso em depuradores de sistema de arquivos, mas eles são difíceis de usar de forma confiável e geralmente não suportam escrever muito. O único código confiável e fácil de usar para modificar dados em um sistema de arquivos é o driver do sistema de arquivos, que você acessa montando o sistema de arquivos.
Alguns sistemas de arquivos (por exemplo, um recurso opcional de zfs e btrfs) têm até dados de integridade de arquivos - eles mantêm somas de verificação de arquivos ou blocos para detectar a corrupção de dados. Com esses sistemas de arquivos, se você alterar o conteúdo de um bloco de dados em um arquivo sem alterar os dados de integridade correspondentes, não poderá lê-lo, pois o arquivo estará corrompido.
Existem alguns casos em que é possível ignorar o driver para sobrescrever os dados de um arquivo sem alterar o tamanho do arquivo, por exemplo, com alguns sistemas de arquivos projetados para serem somente de leitura (isto é, você prepara o sistema de arquivos e escreve para alguma memória flash e não atualizá-lo). Se os dados forem compactados, só será viável se o tamanho compactado permanecer o mesmo, é claro. Mas de um modo geral, a montagem é o único caminho.