The next time something tries to use whatever memory or function it overroad, it would pick up your version instead.
The point about algorithms stands - it's not that programs don't contain any because a machine interprets them. I'm referring to the simple fact that program code can be expressed as a flow diagram - but try doing that with a CAD file. You can't, it's declarative in nature, not a series of steps and decisions.
Some changes are easy and reliable; if you need to add a new condition or a few instructions, you can build your new basic block of instructions elsewhere and then atomically insert a jump to that basic block (which then jumps back to the correct post-insertion point).
Others are hard; if you need to add a new variable to some state that's being tracked, then you have to find a way to know when it's a safe time during execution to make that change, and you might have had to wrap accesses to that state in RCU gadgets.
It takes expertise, but it's doable and satisfying when you manage it!