zbrush does have a certain kind of brush called a VDM brush (vector displacement) that can record undercuts. Doesn't solve teh OP problem at all, but just worth mentioning.
In zbrush you can convert a displacement map to geometry. Pretty simple, you just have to have enough subdivisions and then its a one button click. If you have a height map, that may work, or at least get you kind of started... i don't know about converting a normal map to geometry.