From e50e79673dfacd30ba4994d8a5ef75b53c817300 Mon Sep 17 00:00:00 2001 From: Samuel Tulach Date: Tue, 14 Apr 2020 17:19:30 +0200 Subject: [PATCH] second --- driver/main.c | 28 ++++++++++++++++++---------- driver/main.o | Bin 7544 -> 7920 bytes driver/memory.efi | Bin 48564 -> 49153 bytes driver/memory.so | Bin 2175744 -> 2175776 bytes 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/driver/main.c b/driver/main.c index 94e19cd..d76971d 100644 --- a/driver/main.c +++ b/driver/main.c @@ -29,13 +29,13 @@ typedef struct _DummyProtocalData{ } DummyProtocalData; // Pointers to original functions -EFI_SET_VARIABLE oSetVariable = NULL; +static EFI_SET_VARIABLE oSetVariable = NULL; // Global declarations -EFI_EVENT NotifyEvent = NULL; -EFI_EVENT ExitEvent = NULL; -BOOLEAN Virtual = FALSE; -BOOLEAN Runtime = FALSE; +static EFI_EVENT NotifyEvent = NULL; +static EFI_EVENT ExitEvent = NULL; +static BOOLEAN Virtual = FALSE; +static BOOLEAN Runtime = FALSE; // Defines used to check if call is really coming from client #define VARIABLE_NAME L"yromeMifE" // EfiMemory @@ -66,7 +66,7 @@ RunCommand(MemoryCommand* cmd) if (cmd->operation == 0) { // Same as memcpy function - CopyMem(cmd->data1, cmd->data2, cmd->size); + CopyMem(cmd->data1, cmd->data2, cmd->size); return EFI_SUCCESS; } @@ -88,13 +88,16 @@ HookedSetVariable( { // Use our hook only after we are in virtual address-space if (Virtual && Runtime) - { + { // Check of input is not null if (VariableName != NULL && VariableName[0] != CHAR_NULL && VendorGuid != NULL) - { + { // Check if GUID is correct if (CompareGuid(VendorGuid, &VariableGuid)) { + // Testing (instant bsoder 2000) + RT->ResetSystem(EfiResetCold, EFI_SUCCESS, 0, NULL); + // Check if variable name is same as our declared one // this is used to check if call is really from our program // running in the OS (client) @@ -131,6 +134,12 @@ SetVirtualAddressMapEvent( IN VOID* Context ) { + // Convert orignal SetVariable address + RT->ConvertPointer(0, &oSetVariable); + + // Convert runtime services pointer + RtLibEnableVirtualMappings(); + // Null and close the event so it does not get called again NotifyEvent = NULL; @@ -195,8 +204,7 @@ SetServicePointer( // Restore task priority level BS->RestoreTPL(Tpl); - //return OriginalFunction; - return 0; + return OriginalFunction; } // EFI driver unload routine diff --git a/driver/main.o b/driver/main.o index 1ecd6d13944a2d7448fdaf88bf427483d5633aa0..de02aa8291d96714dcf2c2055a42d641e15b2a1c 100644 GIT binary patch literal 7920 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 N{(m~aRkAnT{-5&j-!=dM delta 2645 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 delta 11642 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