Typically this is done via DLL injection.
You insert a piece of custom software that poses as the graphics driver while you're running the game. Each frame, when the game tries to ask the graphics driver:
please set the texture sampler to use the tree texture and then draw this batch of triangles
...your software receives that message, records it, then ...
I'am the developer of EMS. There have been several different approaches in handling destroyed Actors with my plugin.
Fake destruction by turning the Actor off. Disable collision, tick and hide it. Just save a bool to check and turn it off again on the Actor Loaded event.
Maintain a list of Actors in your level blueprint(Or your own class) that is saved/...