struct NetHost {
uint32 m_Port; //! Port if TCP/IP. If zero, it uses the default.
wchar_t m_sBindToAddr[MAX_HOSTIP_LEN]; // specifies the IP address to bind to. If empty, binds to all
uint32 m_dwFlags;
uint32 m_dwMaxConnections;
wchar_t m_sName[MAX_NETSESSIONNAME_LEN];
bool m_bHasPassword;
uint8 m_nGameType;
};
class NetSession {
public:
NetSession() {Clear();}
virtual ~NetSession() {}
void Clear() {
m_dwFlags = 0;
m_dwMaxConnections = 0;
m_dwCurConnections = 0;
m_Ping = 0;
m_sName[0] = 0;
m_bHasPassword = false;
m_HostIP[0] = 0;
m_HostPort = NO_HOST_PORT;
m_pNext = NULL;
m_nGameType = 0;
}
uint32 m_dwFlags;
LTGUID m_guidApp;
LTGUID m_guidInst;
uint32 m_dwMaxConnections;
uint32 m_dwCurConnections;
uint32 m_Ping; //! Ping time in milliseconds.
/*!
Host info. 0 length string and NO_HOST_PORT if not on TCP/IP.
*/
wchar_t m_HostIP[MAX_HOSTIP_LEN];
uint32 m_HostPort;
wchar_t m_sName[MAX_NETSESSIONNAME_LEN];
bool m_bHasPassword;
uint8 m_nGameType;
NetSession *m_pNext;
};
class StartGameRequest
{
public:
enum
{
kInvalidSocket = -1,
};
public:
StartGameRequest()
{
m_Type = STARTGAME_NORMAL;
m_WorldName[0] = '\0';
m_TCPAddress[0] = '\0';
m_pGameInfo = NULL;
m_GameInfoLen = 0;
m_pNetSession = NULL;
m_pClientData = NULL;
m_ClientDataLen = 0;
m_nSocket = ( uint32 )kInvalidSocket;
}
int m_Type;
char m_WorldName[MAX_SGR_STRINGLEN];
uint32 m_nSocket;
char m_TCPAddress[MAX_SGR_STRINGLEN];
NetSession *m_pNetSession;
NetHost m_HostInfo;
void *m_pGameInfo;
uint32 m_GameInfoLen;
void *m_pClientData;
uint32 m_ClientDataLen;
};
---------------------------------------------------------------------------------------------------------------
Code:
--------------------------------------------------------------------------------------------------------------------------------
void __cdecl StartGame(StartGameRequest* pRequest)
{
_asm
{
MOV ECX, DWORD PTR DS:[377A0198]
MOV EDX, DWORD PTR DS:[ECX]
MOV EDX, DWORD PTR DS:[EDX+80]
PUSH pRequest
CALL EDX
}
}


, quando se abre dlls como essa para debug a primeira coisa que se deve olhar é funções que não deviam estar presentes como InternetOpen, InternetOpenUrl, InternetReadFile, GetVolumeInformation etc... leia msdn para mais informações sobre essas apis.