Hi, Roger.
The short and hacky answer is to make Car::setAwdMode() virtual if possible, then mock it as you described. This is obvious and I'm sure you thought of it.
The long—and personally recommended—answer is to refactor the legacy code so that it's designed better and Designed for Testability. There are lots of smells in the legacy code you described that indicate a broken object model and poor design, such as the dynamic casting to simulate a crude polymorphism. Even if you get past this current stumbling block, there will be another, maybe more painful, one following it.
Only you know the full scope and context of your situation. But if the legacy code is worth testing, it's probably worth refactoring. My experience and intuition says that the investment usually pays off. But that's all just my opinion.