What a service discovery system (SDS) pursues is to successfully discover the services at low costs if the qualified ones exist. However, dynamics and diversification in MANETs increases the complexity to achieve SDS’s goal. This paper develops a SDS over MANETs named SCN4M-H. To enhance system quality, SCN4M-H combines two architecture styles and provides two working modes: basic mode and volunteer mode. In the basic mode, nodes in SCN4M-H work together as peer partners, mapping and discovering the services in a P2P style, and in the volunteer mode, the nodes who declare as volunteers will play the role of servers, they are responsible for dealing with the service discovery requests targeted for the nodes within specified regions. Depending on their own states as well as their neighbors’ states, nodes in SCN4M-H can switch automatically from one mode to another. Moreover, two working modes can coexist in SCN4M-H at the same time, which enables a service discovery request to be dealt with in a locally optimal way. Some system properties are revealed and then extensive experiments are conducted. Experimental data indicate that SCN4M-H adapts well to various dynamic scenarios and shows satisfying software quality in terms of discovery success rate and corresponding costs.