Multi level pointers found from Cheat Engine in code
I'm sure this is kind of stupid, but there's something really basic I'm struggling with. I don't really understand why this isn't working.
Code:
DWORD Base = (DWORD)GetModuleHandleW(0);
DWORD pointer1 = (DWORD)(*(DWORD*)(Base + 0x108D600));
I feel like this should be correct, but it's not. pointer1's address is something different. Why is this wrong? The base address from the process is added to 0x108D600. Then it's dereferenced to find the address. But it's wrong.
In cheat engine in the bottom box of the pointer values, I have "starbound.exe"+0108D600. This points to address 034C60000 in cheat engine.
"starbound.exe" is supposedly equal to something like 3F190000 or something very similar. However, if you substitute "starbound.exe" for 3F190000 (so it's 3F190000+0108D600) it does not point to the same thing. The thing that it points to is what's being pointed at in my code. What's the difference?