Wrong.
For health and mana, you read a static address and then XOR it with a value read from another static address - this is due to the encryption they added earlier this year.
For password and account number, you have to read a value (v1) from a static address (pointer to std::string pointer), read a value (v2) from v1 plus an offset (pointer to std::string buffer size), read a value (v3) from v1 plus another offset (pointer to std::string buffer). Now logic comes into play:
If v2 is less than or equal to 15, then v3 is our password/account name. If v2 is greater than 15, then we have to read another value (v4) from the address in the first four bytes of v3. Now v4 is our password/accountname.