Depending on how the emulator is implemented, one of the offsets (probably the last one) might be ridiculously big.
I'd go about this by looking at the code that accesses the address. I can probably find the first offset by reading the assembly. If you don't know assembly, this obviously isn't an option.
I guess you could increase the maximum offset value to something ridiculous (think megabytes) and severely limit the max level (2, maybe 3), but I don't know how long such a scan might take.
(ignore the person above me who said something about nr of threads scanning- that's simply the number of threads CE uses to scan for pointers) _________________
I don't know where I'm going, but I'll figure it out when I get there.
"ESI" is a general purpose register. What makes it special is if it's the base register in an instruction that accesses an address you're interested in. e.g. "mov eax,[esi+3C]".
There are plenty of tutorials online (search "x64 tutorial"), but you'll need to take what you read with a grain of salt. Many people who write tutorials, despite however good their intentions may be, don't have the knowledge or experience to be teaching. Stephen Chapman was one of those people last I saw him years ago - I hope he's gotten better, he's a kind person.
Places you can go for correct information are limited and generally aren't intended for beginners. Intel's / AMD's software developer's guides/manuals are good, but definitely aren't easy to understand with no prior knowledge. You'll find the instruction set references from these guides/manuals mirrored online. e.g. here:
https://www.felixcloutier.com/x86/
Those manuals aren't really practical for understanding assembly, either. They're really low-level and tend to leave out concepts and conventions of how the things it describes are to be used: e.g. calling conventions.
Another thing is to simply look at assembly generated by good compilers along with the corresponding source code. There are web apps which make this very easy to do.
https://godbolt.org/
Not every game you encounter will have assembly generated by a good compiler- plenty of bad JIT implementations out there, and interpreted code is just awful. By their nature, emulators generally aren't good examples to learn from.
If you want to learn from free and open sources of information, I'd recommend looking at random tutorials online (with an open mind), look at good examples of assembly that does meaningful stuff (godbolt aka compiler explorer), and consult an instruction set reference when you get confused about what an instruction does. _________________
I don't know where I'm going, but I'll figure it out when I get there.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum