Both works the same way. While the usual AdBlockers block all ad-related servers/IPs, you can do the same for selected ones.
Provided your device is rooted, you can block their specific IPs via your
hosts file. Just add the server name one per line, and send it to an "invalid" URL such as e.g.
0.0.0.0. An example entry would look like:
Of course this would mean you have to figure out the URL of the ads displayed. Here apps like OS Monitor might prove helpful, as they show all open network connections:
OS Monitor: Open connections and WhoIs information (source: Google Play)
When such an ad is displayed, immediately open the connection tab in OS Monitor and check the list. The first screenshot1 shows the app in charge is displayed along with the corresponding entry. The status column will most likely hold either *CLOSE_WAIT*, *LAST_ACK*, or (less likely) ESTABLISHED. Tap the entry which seems fitting to get the WhoIs information2. On that page you see the hostname right on top ("DNS"), which is what you then put into your
/system/etc/hosts file as described above.
Don't forget to clear the app's cache afterwards, as otherwise cached ads might still be displayed. Continue until you caught them all :)
Another solution is available for certain providers (at least here in Germany): Opt-Out of provider billing, either completely or for given companies. Of course you still need to pay your contract (that's not what is meant here), but you should no longer be automatically charged for ads etc. via your phone bill. Which does not mean nobody might scare you with accuses of a subscription you "bought" -- but that would no longer work for those ads.