Yes, you have to know how the base-class operates in order to override in the derived class -- this is why inheritance is a form of coupling (one class requires intimate knowledge of what the other does internally).
Recently, I have started to try and keep my inheritance coupling to a minimum: making protected properties backed by private variables and providing template pattern methods where a 'BeforeAction()' and an 'AfterAction()' virtual method are provided to override, rather than overriding the main method itself. This makes me design the derived and base classed to be less intimate.
This should mean that changes to the base or derived classes are less likely to impact the rest of the inheritance hierarchy. So far I haven't kept any metrics so I don't know if the effort is worth it yet. I guess time will tell ...
Herbie