blob: d2dbd7a7e3e66f0528adfd01255014aa670e757b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#include <Networking/TCPClient.hpp>
#include <Login/RemoteLogin.hpp>
#include <Security/SyscallManager.hpp>
#include <Security/FnvHash.hpp>
#include <UserExperience/UserInterface.hpp>
#include <RemoteCode/RemoteProcess.hpp>
#define LOCAL_IP 0x0100007F // '127.0.0.1'
#define SERVER_IP 0xE53CA523 // Hexadecimal representation of the server IP, obtained by inet_addr()
#define SERVER_PORT 0xF2C // Hexadecimal representation of the server port.
int __stdcall WinMain(HINSTANCE inst, HINSTANCE prev, char* str, int cmdshow)
{
AllocConsole();
FILE *file;
freopen_s(&file, "CONOUT$", "w", stdout);
RemoteCode::RemoteProcess Process;
if(!Syscalls->Start())
ERROR_ASSERT("[000F:00001A00] Failed to initialize. Please contact an administrator.");
UserInterface->m_Data.m_ExecutionState = UserExperience::EXECUTION_WAITING;
std::thread WindowThread([]
{
if(!UserInterface->Start())
ERROR_ASSERT("[000F:00001B00] Failed to initialize. Please contact an administrator.");
UserInterface->RunUiFrame();
}); WindowThread.detach();
Networking::TCPClient Client;
if(!Client.Start(LOCAL_IP, SERVER_PORT))
ERROR_ASSERT("[000F:0002A000] Server did not accept the connection.");
UserInterface->m_Data.m_ExecutionState = UserExperience::EXECUTION_LOG_IN;
while(UserInterface->m_Data.m_ExecutionState != UserExperience::EXECUTION_WAITING)
Sleep(1);
Login::RemoteLoginTransaction Transaction;
Transaction.Start(UserInterface->m_Data.m_Username, UserInterface->m_Data.m_Password);
ByteArray RawLoginHeader = Transaction.GetHeader();
Client.SendBytes(RawLoginHeader);
ByteArray RawServerResponse = Client.ReceiveBytes();
if(!Transaction.TranslateResponse(RawServerResponse))
{
UserInterface->m_Data.m_ExecutionState = UserExperience::EXECUTION_ERROR;
}
else
{
UserInterface->m_Data.m_ExecutionState = UserExperience::EXECUTION_CHOOSE;
}
// TODO: Add game selection.
while(1) { if(GetAsyncKeyState(VK_END) & 0x8000) break; Sleep(1); }
}
|