summaryrefslogtreecommitdiff
path: root/extract_decoded_executable/extractor.c
diff options
context:
space:
mode:
authorstderr64 <stderr64@null.net>2026-08-02 23:25:46 +0300
committerstderr64 <stderr64@null.net>2026-08-02 23:25:46 +0300
commit93bf2805ba66b628d0187637c85f86f2ae7eb4a1 (patch)
treed33b2879182966a22f694532cf306ce7e3145b5e /extract_decoded_executable/extractor.c
parent2e2d8c94e2355e6beae219cb3b7a0684ef1f1aa1 (diff)
downloadexperiments-93bf2805ba66b628d0187637c85f86f2ae7eb4a1.tar.gz
experiments-93bf2805ba66b628d0187637c85f86f2ae7eb4a1.tar.zst
Added RNG based encryption to the code to extract binary from define value
Diffstat (limited to 'extract_decoded_executable/extractor.c')
-rw-r--r--extract_decoded_executable/extractor.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/extract_decoded_executable/extractor.c b/extract_decoded_executable/extractor.c
index 3a53536..5bda48d 100644
--- a/extract_decoded_executable/extractor.c
+++ b/extract_decoded_executable/extractor.c
@@ -1,9 +1,25 @@
#include <stdlib.h>
#include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
#include <errno.h>
#include <unistd.h>
+#include <math.h>
#include <fcntl.h>
#include <string.h>
+#include "rng.h"
+
+void decrypt_decoded_bytes( unsigned char *encrypted_bytes, size_t byte_count ){
+ unsigned char dec_key[256];
+ memset( (void*)&dec_key, 0, sizeof(dec_key) );
+ size_t recv_key_size = 0;
+ for ( ; recv_key_size < 256; recv_key_size++ )
+ dec_key[recv_key_size] = (unsigned char)get_random_int( 1, 255 );
+ size_t c_byte = 0;
+ for ( ; c_byte < byte_count; c_byte++ )
+ encrypted_bytes[c_byte] = encrypted_bytes[c_byte] ^ dec_key[byte_count % 255];
+ return;
+}
void extract_contained_binary(){
double bin_hex_div = (double)strlen((const char*)BIN_HEX) / 2;
@@ -33,6 +49,7 @@ void extract_contained_binary(){
}
decoded_bytes[dec_byte_pos] = decoded_byte;
}
+ decrypt_decoded_bytes( decoded_bytes, hex_byte_count );
int out_fd = open( "/tmp/test_output_binary", O_RDWR | O_CREAT, 0755 );
if ( out_fd == -1 ){
fprintf( stderr, "Error: failed to open /tmp/test_output_binary for writing: %s\n", strerror(errno) );
@@ -52,6 +69,7 @@ void extract_contained_binary(){
}
int main( int argc, char *const *args ){
+ init_rng();
extract_contained_binary();
return 0;
}