I have an app that was created from a follow-along tutorial. I was first using the Apache license for it until some people began to copy the code, insert ads and then redistribute the app. Would there be a license that allows for code changes but bans redistribution?
The license that you describe does not meet the Open Source Initiative’s definition of open source. According to that definition, an open source license can not restrict someone who selling a software product. You won’t find an existing open-source license that meets your criteria.
However, if you hire a lawyer with the appropriate expertise, you can have an appropriate license written.
I’m not aware of any general license that operates under such rules, since it goes against the ethos that so-called “Open Source” licenses are trying to create (q.v. the Open Source Initiative’s definition). However, freedom to modify without freedom to distribute is moderately common in commercial contracts, so it’s not a legal impossibility, and knocking up a theoretically enforceable “crayon license” that precludes redistribution whilst permitting modification doesn’t seem too hard. You could even enrich a lawyer by having one carefully drafted.
Your bigger problem is that it is functionally meaningless without any means to enforce it; the kind of unscrupulous cad that makes their pennies by slapping ads into Apache or GPL licensed code are unlikely to be deterred by a license that they know won’t be enforced.