Modules The modules are specified in App's command 2. There is a byte[40] header of sorts that describes the module. The byte[40] can be broken down into { int 'auth' short unk short locale - EU or US (apparently SB for s2 modules) byte[32] moduleId } After this header there is a short, use currently unknown, and then after the short is the data passed into the modules packet handler, which is the 3rd function (starting from 1) in the modules vftable. It is up to the module to decide how to handle this data. Password.dll Performs account data verification, uses SRP6a with SHA256 as the hashing function If verification successful, stores the byte[64] sessionKey to the buffer with id 0xB6E372AE. Battle.net.dll checks this in sub_3C919E40 and sends an error packet if the data is not there Hashes: 23451d428a1671e27635e923e9acfd6f8a883acb1f8e6b2a4152f037e5841594 - Password.dll, Augustus 5a22ce74646016952737205c0ae4f9a55cfa69e1aa1ef4469d5aa74f3dcdbb1b - Password.dll, Vesuvious Data: byte opcode The data that follows depends on the opcode Opcodes: 0 - S-C: Battlenet::Client::Stalker::ChallengeResponse Contents: byte[32] m_accountSalt byte[32] m_passwordSalt byte[128] m_serverChallenge 1 - S-C: Probably a reconnect challenge Contents: byte[32] m_passwordSalt byte[128] m_serverChallenge 2 - C-S: Battlenet::Client::Stalker::ProofRequest Contents: byte[128] m_clientChallenge byte[32] m_clientProof 3 - S-C: Battlenet::Client::Stalker::ProofResponse::Result::Success Contents: byte[32] m_serverProof 4 - S-C: Battlenet::Client::Stalker::ProofResponse::Result::Failed (this may also be opcode 2, S-C) Contents byte m_reason - maybe byte? dunno Thumbprint.dll Performs some other kind of verification. Reads buffer id 0xF8AC9F37 (16 bytes) from battle.net.dll, then creates a sha512 hash of those 16 bytes and the string "Thumbprint.IPv6". Then uses this buffer and performs RSA verification using the exponent/modulus hardcoded in the module. Note that the modulus's are different between the Augustus/Vesuvious branches If verification successful, stores a 1 to buffer with id 0xA2057DF4. Battle.net.dll reads this and sends a packet if value != 1, sub_3C919E40 Hashes: 36b27cd911b33c61730a8b82c8b2495fd16e8024fc3b2dde08861c77a852941c - Augustus 61292e01a368a60a91d4f8d6903fd5968de21bdab8fdc8f36ca0a05cc11bab53 - Vesuvious Data: byte[512]