И JPEG и PNG форматы являются chunk'овыми т.е. состоят из последовательных chunk'ов данных. Соответственно в оба формата можно добавлять новые chunk'и которые содержат невизуальные данные и не будут менять отображение картинки (например комментарии), но будут менять сам файл. При этом считывание файлов будет идти по-прежнему т.к. файлы данных орматов читаются chunk'ами.
Изменение можно сделать без GD, просто умея читать структуру файлов в этих форматах и умея формировать новые chunk'и. Описание форматов можно посмотреть например в википедии (JPEG и PNG).
Нельзя изменить MD5 хеш пикчи не меняя пикчу. Описанные манипуляции меняют хеш файла например для выдачи в заголовке HTTP, а не картинки.
Если задача обмануть копирайтеров, то они далеко не дураки. Сначала они распакуют файл, потом восстановят картинку и по ней будут считать MD5 либо что-то ещё.