From ec4ad61acbe9e67c5e803e0549841dc5ef5cef2a Mon Sep 17 00:00:00 2001 From: boris Date: Wed, 12 Dec 2018 12:30:44 +1300 Subject: yas --- loader/client/client_windows.cpp | 30 +++++++++++------------------- loader/client/connect.hpp | 11 ++++------- loader/client/err.hpp | 3 +-- loader/client/util.hpp | 9 +++++++++ 4 files changed, 25 insertions(+), 28 deletions(-) (limited to 'loader/client') diff --git a/loader/client/client_windows.cpp b/loader/client/client_windows.cpp index 225b37f..3f44d17 100644 --- a/loader/client/client_windows.cpp +++ b/loader/client/client_windows.cpp @@ -15,25 +15,17 @@ #include "syscall.hpp" /* - 1. Connect - 2. Send hello message - 3. Receive hello message from server, - 4. Enter and send username - 5. Enter and send password (use bcrypt or some shit idk) - 6. Send and let server check hardware id. - 7. Recieve list of games. - 8. Select game and send to server - 9. Receive space of dll. - 10. Allocate space for dll. - 11. Send base address of dll. - 12a. Server does relocations. - 12b. Server does imports. - 13. Server sends dll - 14. Client Manual maps dll - 15. Send game module list and possibly PE headers - 16. Server sends back needed module base addresses and possibly size. - 17. Call DLLMain with correct parameters (Included Base Addresses) - 18. In cheat DLLMain set up base addresses and do cheat stuff. + -> connect + -> login + -> check hwid + -> check sub + -> request game + -> network dll (no header) + -> allocate, send address to server + -> send original endscene address, send endscene pointer + -> send virtualprotect export + -> receive shellcode from server + -> write file and run shellcode */ int main( ) { // START. diff --git a/loader/client/connect.hpp b/loader/client/connect.hpp index 187e72f..2face5d 100644 --- a/loader/client/connect.hpp +++ b/loader/client/connect.hpp @@ -22,7 +22,6 @@ protocol rules: every msg must be xored first byte is the xorkey - */ namespace client @@ -54,7 +53,7 @@ namespace client } if( code != err::ERR_NONE ) { - MessageBoxA( nullptr, err::translate_err( code ), "", MB_OK ); + util::raise_error(err::translate_err(code)); return false; } @@ -73,8 +72,7 @@ namespace client sizeof( server_address ) ); if( code == -1 ) { - MessageBoxA( nullptr, err::translate_err( err::ERR_CONNECT ), "", MB_OK ); - return false; + util::raise_error(err::translate_err(err::ERR_CONNECT)); } return true; @@ -191,9 +189,8 @@ namespace client void handle( ) { auto msg = get_string( ); - if ( msg != xors( "hello" ) ) { - std::cout << "connection failed." << std::endl; - //return 0; + if ( msg != xors( "hello" ) ) { + util::raise_error(err::translate_err(err::ERR_CONNECT)); } send_msg( "hello" ); diff --git a/loader/client/err.hpp b/loader/client/err.hpp index 5a6691d..be82ad6 100644 --- a/loader/client/err.hpp +++ b/loader/client/err.hpp @@ -1,8 +1,7 @@ #pragma once #include "strings.hpp" -namespace err -{ +namespace err { enum ErrCode_t { ERR_NONE = 0, ERR_WSA = 1, diff --git a/loader/client/util.hpp b/loader/client/util.hpp index aabfd69..40255e3 100644 --- a/loader/client/util.hpp +++ b/loader/client/util.hpp @@ -30,4 +30,13 @@ namespace util MessageBoxA(0, error, xors("error"), MB_ICONERROR); ExitProcess(0); } + + using ulong_t = DWORD; + __forceinline uint32_t get_hwid() { + ulong_t hwid{ }; + + GetVolumeInformationA(xors("C:\\"), 0, 0, &hwid, 0, 0, 0, 0); + + return hwid; + } } \ No newline at end of file -- cgit v1.2.3