Yes, but even when you allocate from a static block, the addresses for certain objects (within that block) depend on the state of the game, which is usually non-deterministic.
So, depending on what you want to modify, you’ll probably have to do some scanning beforehand, even with static allocation - But yeah, it’s easier, because you’re searching within a known range.
The memory allocation scheme doesn’t really matter. In theory, it’s easier to find relevant memory in a static allocation scheme, but most scan tools do a lot of runtime scanning either way, so it’s really just a question of efficiency, rather than difficulty.
The core fact is: You can’t trust the client, because client memory is out of your control.
You can still make your game pretty hard to exploit, by running the simulation server-side, and treating the client as a dumb input/rendering terminal. Combine that basic approach with some well defined, enforceable limits on what kind of input is possible for a human player, and you’ll probably have a decent experience.