aboutsummaryrefslogtreecommitdiff
path: root/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'client/src')
-rw-r--r--client/src/assembler/opcodes.h9
-rw-r--r--client/src/assembler/shellcode.cpp (renamed from client/src/assembler/assembler.cpp)10
-rw-r--r--client/src/assembler/shellcode.h (renamed from client/src/assembler/assembler.h)6
-rw-r--r--client/src/client/client.cpp25
-rw-r--r--client/src/client/client.h14
-rw-r--r--client/src/include.h17
-rw-r--r--client/src/main.cpp4
7 files changed, 42 insertions, 43 deletions
diff --git a/client/src/assembler/opcodes.h b/client/src/assembler/opcodes.h
deleted file mode 100644
index 5268b45..0000000
--- a/client/src/assembler/opcodes.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma once
-
-
-namespace assembler {
- enum opcodes : uint8_t {
- nop = 0x90,
- ret = 0xc3
- };
-}; \ No newline at end of file
diff --git a/client/src/assembler/assembler.cpp b/client/src/assembler/shellcode.cpp
index cf41ad1..af3160b 100644
--- a/client/src/assembler/assembler.cpp
+++ b/client/src/assembler/shellcode.cpp
@@ -1,9 +1,9 @@
#include "../include.h"
-#include "assembler.h"
+#include "shellcode.h"
-void assembler::start() {}
+void sc::start() {}
-void assembler::push(const std::vector<uintptr_t>& args) {
+void sc::push(const std::vector<uintptr_t>& args) {
if (!m_x64) {
for (auto it = args.rbegin(); it != args.rend(); ++it) {
m_assembler.push(*it);
@@ -14,9 +14,9 @@ void assembler::push(const std::vector<uintptr_t>& args) {
// 64bit impl
}
-void assembler::call(const uintptr_t addr) {}
+void sc::call(const uintptr_t addr) {}
-void assembler::end() {
+void sc::end() {
if (m_x64) {
}
diff --git a/client/src/assembler/assembler.h b/client/src/assembler/shellcode.h
index 00c7362..6fb2f61 100644
--- a/client/src/assembler/assembler.h
+++ b/client/src/assembler/shellcode.h
@@ -1,10 +1,8 @@
#pragma once
-#include <asmjit/src/asmjit/asmjit.h>
-
using namespace asmjit;
-class assembler {
+class sc {
std::vector<uint8_t> m_buf;
CodeHolder m_code;
@@ -13,7 +11,7 @@ class assembler {
bool m_x64;
public:
- assembler(const bool x64 = false) : m_x64{x64} {
+ sc(const bool x64 = false) : m_x64{x64} {
Environment env(x64 ? Environment::kArchX64 : Environment::kArchX86);
m_code.init(env);
diff --git a/client/src/client/client.cpp b/client/src/client/client.cpp
index 43ee6c7..8e71e81 100644
--- a/client/src/client/client.cpp
+++ b/client/src/client/client.cpp
@@ -2,23 +2,30 @@
#include "client.h"
void tcp::client::start(const std::string_view server_ip, const uint16_t port) {
- SSL_library_init();
+ wolfSSL_library_init();
- m_ssl_ctx = SSL_CTX_new(TLS_client_method());
+ m_ssl_ctx = wolfSSL_CTX_new(wolfTLS_client_method());
- int ret = SSL_CTX_load_verify_locations(m_ssl_ctx, "ssl/rootCA.crt", nullptr);
+ int ret = wolfSSL_CTX_load_verify_locations(m_ssl_ctx, "ssl/rootCA.crt", nullptr);
if (ret != 1) {
io::logger->error("failed to load ca.");
return;
}
- SSL_CTX_set_verify(m_ssl_ctx, SSL_VERIFY_PEER, 0);
+ wolfSSL_CTX_set_verify(m_ssl_ctx, SSL_VERIFY_PEER, 0);
+
+ WSADATA data;
+ ret = WSAStartup(MAKEWORD(2, 2), &data);
+ if (ret != 0) {
+ io::logger->error("failed to initialize WSA.");
+ return;
+ }
m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (m_socket == -1) {
io::logger->error("failed to create socket.");
return;
}
-
+
sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
@@ -32,13 +39,13 @@ void tcp::client::start(const std::string_view server_ip, const uint16_t port) {
return;
}
- m_server_ssl = SSL_new(m_ssl_ctx);
- SSL_set_fd(m_server_ssl, m_socket);
+ m_server_ssl = wolfSSL_new(m_ssl_ctx);
+ wolfSSL_set_fd(m_server_ssl, m_socket);
- ret = SSL_connect(m_server_ssl);
+ ret = wolfSSL_connect(m_server_ssl);
if (ret != 1) {
- ret = SSL_get_error(m_server_ssl, ret);
+ ret = wolfSSL_get_error(m_server_ssl, ret);
io::logger->error("secure connection failed, code {}", ret);
return;
}
diff --git a/client/src/client/client.h b/client/src/client/client.h
index 4239651..40b8e53 100644
--- a/client/src/client/client.h
+++ b/client/src/client/client.h
@@ -27,8 +27,8 @@ class client {
int m_socket;
std::atomic<bool> m_active;
- SSL* m_server_ssl;
- SSL_CTX* m_ssl_ctx;
+ WOLFSSL* m_server_ssl;
+ WOLFSSL_CTX* m_ssl_ctx;
public:
int state;
@@ -48,11 +48,11 @@ class client {
}
int write(const void* data, size_t size) {
- return SSL_write(m_server_ssl, data, size);
+ return wolfSSL_write(m_server_ssl, data, size);
}
int read(void* data, size_t size) {
- return SSL_read(m_server_ssl, data, size);
+ return wolfSSL_read(m_server_ssl, data, size);
}
int read_stream(std::vector<char>& out);
@@ -75,9 +75,9 @@ class client {
operator bool() const { return m_active; }
void shutdown() {
- close(m_socket);
- SSL_shutdown(m_server_ssl);
- SSL_free(m_server_ssl);
+ closesocket(m_socket);
+ wolfSSL_shutdown(m_server_ssl);
+ wolfSSL_free(m_server_ssl);
m_active = false;
}
diff --git a/client/src/include.h b/client/src/include.h
index fe46e5a..562b52f 100644
--- a/client/src/include.h
+++ b/client/src/include.h
@@ -1,6 +1,12 @@
#pragma once
+
+#include <windows.h>
#include <stdio.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <iphlpapi.h>
+
#include <algorithm>
#include <array>
#include <chrono>
@@ -26,16 +32,11 @@
#include <future>
#include <any>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <unistd.h>
-
#include <spdlog/fmt/fmt.h>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
-#include <openssl/ssl.h> \ No newline at end of file
+#include <wolfssl/ssl.h>
+
+#include <asmjit/src/asmjit/asmjit.h> \ No newline at end of file
diff --git a/client/src/main.cpp b/client/src/main.cpp
index cef083f..330096c 100644
--- a/client/src/main.cpp
+++ b/client/src/main.cpp
@@ -1,7 +1,7 @@
#include "include.h"
#include "util/io.h"
#include "client/client.h"
-#include "assembler/assembler.h"
+#include "assembler/shellcode.h"
int main(int argc, char* argv[]) {
io::init();
@@ -114,4 +114,6 @@ int main(int argc, char* argv[]) {
break;
}
}
+
+ std::cin.get();
}