I agree that ethics are a luxury good, but for developers they're a pretty easily affordable one. As I said, people can have good reasons for working for bad people. But many don't.
Back when email spam was relatively new, sometimes I would track down a spammer, call them up, and ask them what they were doing. Some were apologetic! They didn't know why it was bad, or had gotten talked into something by a sleazy sales guy. But I still remember one conversation with a guy who clearly felt bad about it but wasn't going to stop because he had a family to feed.
What I hope he eventually figured out is that everybody has a family to feed, but that doesn't justify harming other people and their families. I get that in the short term people end up stuck in things where the didn't realize what was going on. for example, that's how I ended up working in financial trading for a while. But I got out. It may take them a while, but others can too.
And for those that can't figure it out or don't care? I don't want to work with them until they do. They get to make their choices, but I get to make mine.