Even if a process re-serializes a message, unknown fields will be preserved, if using the official protobuf libraries proto2 or 3.5 and later. Only in 3.0 did they drop unknown fields, which was complete lunacy. That decision was reverted for proto 3.5.
Some of the APIs (C++ for example) provide methods to access unknown fields, in case they were only mostly unknown.