You'r not reading the pointer to where it points to.
Read up some basics on pointer and you should understand them better.
Code:DWORD dwAddy; ReadProcessMemory( hProcess, (PVOID)0x00246954, &dwAddy, 4, 0 ); WriteProcessMemory( hProcess, (PVOID)( dwAddy + 0x14C ), &value, 4, 0 );