summaryrefslogtreecommitdiff
path: root/loader/client
diff options
context:
space:
mode:
authorboris <wzn@moneybot.cc>2018-12-12 12:30:44 +1300
committerboris <wzn@moneybot.cc>2018-12-12 12:30:44 +1300
commitec4ad61acbe9e67c5e803e0549841dc5ef5cef2a (patch)
treef30480f8c0e45b0cd2e0c5cd2f2dbccd54ec70ae /loader/client
parenta25b6f6b11a3ae44d0c3b19ba8081a3d9eb1ac5f (diff)
yas
Diffstat (limited to 'loader/client')
-rw-r--r--loader/client/client_windows.cpp30
-rw-r--r--loader/client/connect.hpp11
-rw-r--r--loader/client/err.hpp3
-rw-r--r--loader/client/util.hpp9
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