From 2adaa9773a096be8225582089d8cebf622030529 Mon Sep 17 00:00:00 2001 From: ALittlePatate Date: Thu, 16 Jan 2025 13:38:04 +0100 Subject: [PATCH] add: malloc and free APIs malloc doesn't work on Windows, TOFIX --- src/api.c | 15 +++++++++++++++ src/api.h | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/src/api.c b/src/api.c index 51f03ac..c028ee0 100644 --- a/src/api.c +++ b/src/api.c @@ -53,6 +53,21 @@ void api_print() { dprintf(f, "%s", address); } +void api_free() { + void *addr = (void *)state->STACK[state->STACK_IDX--]; + free_(addr); +} + +void api_malloc() { + long size = state->STACK[state->STACK_IDX--]; +#ifdef _WIN32 + state->registers->eax = 0; + return; +#else + state->registers->eax = (long long)malloc(size); +#endif +} + void api_callrawaddr() { long long address = state->STACK[state->STACK_IDX--]; diff --git a/src/api.h b/src/api.h index 888ed82..d186636 100644 --- a/src/api.h +++ b/src/api.h @@ -3,6 +3,8 @@ void api_put(); void api_print(); +void api_free(); +void api_malloc(); void api_callrawaddr(); // generated APIs here @@ -15,6 +17,8 @@ void api_GetAsyncKeyState(); static const command_t api_map[] = { {.command = "put", .fptr = api_put}, {.command = "print", .fptr = api_print}, + {.command = "malloc", .fptr = api_malloc}, + {.command = "free", .fptr = api_free}, {.command = "CallRawAddress", .fptr = api_callrawaddr}, // generated APIs here