diff options
Diffstat (limited to 'loader/client')
| -rw-r--r-- | loader/client/client_windows.cpp | 30 | ||||
| -rw-r--r-- | loader/client/connect.hpp | 11 | ||||
| -rw-r--r-- | loader/client/err.hpp | 3 | ||||
| -rw-r--r-- | loader/client/util.hpp | 9 |
4 files changed, 25 insertions, 28 deletions
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 |
