From 71667ebd7cb4f54df6b74271b391e2559aaefbd1 Mon Sep 17 00:00:00 2001 From: Kris Kwiatkowski Date: Tue, 18 Feb 2025 08:24:27 +0000 Subject: [PATCH] WIP --- libpqscheme.ld | 2 -- libpqscheme_test.c | 1 - runner.c | 30 +++++------------------------- 3 files changed, 5 insertions(+), 28 deletions(-) diff --git a/libpqscheme.ld b/libpqscheme.ld index 0246f88..690f53b 100644 --- a/libpqscheme.ld +++ b/libpqscheme.ld @@ -9,8 +9,6 @@ SECTIONS .magic_header : { LONG(0x88DAD0F2) /* Magic header containing */ LONG(ADDR(.text)) /* Entry point */ - LONG(0x88DAD0F3) /* Magic header containing */ - LONG(ADDR(.magic_header)) /* Entry point */ } > RAM .text : { diff --git a/libpqscheme_test.c b/libpqscheme_test.c index b486936..dd444e4 100644 --- a/libpqscheme_test.c +++ b/libpqscheme_test.c @@ -1,7 +1,6 @@ #include __attribute__((section(".text"))) int cryptographic_test() { - static const uint32_t vv = 0xDEADBEEF; // Run unit tests for cryptographic scheme //while(1); // Debug loop return 7; diff --git a/runner.c b/runner.c index 5d9de45..2bdcac9 100644 --- a/runner.c +++ b/runner.c @@ -11,37 +11,17 @@ typedef int (*func_t)(); void execute_library_function() { printf("Scanning RAM...\n"); uint32_t *ptr = (uint32_t *)RAM_START; + uint32_t entry_point; while ((uint32_t)ptr < RAM_END) { if (*ptr == LIB_MAGIC) { printf("Found libpqscheme_test 0x%X!\n", ptr); - - printf("1>...%X 0x%X\n", ptr + 1, *(ptr + 1)); - printf("2>...%X 0x%X\n", ptr + 2, *(ptr + 2)); - printf("3>...%X 0x%X\n", ptr + 3, *(ptr + 3)); - - for (size_t i = 0; i < 20; i++) { - printf("%X %2X \n", (((uint8_t *)ptr) + i), - *(((uint8_t *)ptr) + i)); - } - - /* - uint32_t entry_point = *((uint32_t *)(ptr + 0x10)); - uint8_t *p = (uint8_t *)entry_point; - printf("\n"); - - func_t test_func = (func_t)entry_point; + entry_point = RAM_START + (*(ptr + 1)); + entry_point |= 1; + func_t test_func = (func_t)(entry_point); if (test_func) { - printf("Try exec...0x%X 0x%X\n", entry_point, - 0x20000034 + 0x10); - printf(">> %d\n", test_func()); + printf("Result: %d\n", test_func()); } - */ - uint32_t entry_point = (0x20000000 + 0x44) | 1; - func_t test_func = (func_t)entry_point; - printf("> Entry point\n", entry_point); - int res = test_func(); - printf(">> %d\n", res); return; } ptr++;