In addition to Warwich Allisons answer:
Make sure to use the search-function, the question has been answered before. There you'll find answers like this.
The quick solution is called EZ Replay Manager.
Arrays: You could store object positioning in arrays where you, at rewind, loop through each array backwards for the corresponding objects.
Animations: Another technique would be to record animations at runtime and play them reversed at specified events.
Later (when the asset is ready), this will be inspiring as of parts of the implementation: Physics To Animation Tool
Both techniques mentioned will also record possible stuttering, which would need some sort of interpolation technique (a lerp perhaps) between positions. You'd also have to keep track of the real time to sync the events. In addition to that (quite inconvenient problem) is that some objects have trouble rewinding, such as the particle system. Go with the EZ Replay Manager-Asset to, not only save, but rewind and fast-forward your time. ;-)