I keep hearing of people who are writing "out-of-process" bots, who when I ask how they've implemented certain functionality say "I write to memory address X", or "I use BlackMagic to call engine function Y".
Protip for the retards:
As soon you actively modify the game in some way or another (through a memory write, engine call, dynamic hook, etc) YOU ARE NO LONGER OUT OF PROCESS.
The whole point of an out-of-process bot is that you stay 100% passive so that you can't be detected unless Warden starts doing its out-of-process scans again.
If you're calling engine funcs or modifying memory you've already made yourself detectable via in-process checks so you may as well just inject a DLL and stop wasting so much time (both your own and that of the people in this section) trying to stay 'passive' when you aren't.
Notes:
Anyone who knows anything about Windows programming and how various anti-cheat techniques are implemented would know there are exceptions to the above (i.e. certain memory writes are 'safe' and you can still call yourself 'passive', however most of the ones people normally use are not).
However, there are no exceptions when calling engine functions. If you're calling engine functions you're already vulnerable to a stack trace, so just inject a DLL already, being out of process is just a waste of time at that point.
Contrary to popular belief, injecting a DLL does not suddenly make you a high-risk for bans. As long as your bot is private there is no difference between an injected bot and an out-of-process bot if you're calling engine functions.