Is there any way to cover the sensitive data, at least the CVC without
having to worry about a sticker being peeled off and stuck in an ATM
Paranoid people remove the CVC* from the card using ablation ("they scrape it off"). There is no need for the CVC to actually be on the card, provided you write it down somewhere safe and/or remember it.
For all other values, the standard protections are to cup the card in your hand as much as possible and be alert for suspicious environmental cues, such as a new fascia on the ATM. There's no golden fix.
As @RápliAndrás points out in the comment, the CVC can still be brute-forced. If this interests you, there's a fascinating paper called Does The Online Card Payment Landscape Unwittingly Facilitate Fraud that you must read. Specifically, it shows that the vulnerability to guessing operations varies from site to site, and that overall there is no systemic limit to prevent multiple sites from being used together to optimize the guessing. And not only do the card brands not have systemic limits to block CVC guessing, but many card transactions do not require the CVC to complete in any case.
But in general, people scraping the CVC are defending against a low-level physical access attack. They are making it so that the waiter that takes their card into the back room can't jot down their PAN (card number) and CVC. They are not defending against the case of an attacker who wishes to brute force card parameters given the PAN.
Remember that credit cards are not designed for security - they are designed for commerce. The entire credit card industry has a tolerance for acceptable levels of risk, which is to say, if a single-digit percent of transactions are fraudulent, then that's considered the cost of doing business. Small tweaks - such as the CVC and EMV - have been made to improve the statistics, but not to eradicate risk.
*Card Verificaton Code or Value is also known as CVC, CVV, CSC, CID, CAV, or "That number on the back of your card."