Update entry.cpp
void function calling shit
This commit is contained in:
@@ -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<FuncPtr>(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<T>) {
|
||||
auto func = reinterpret_cast<void(__stdcall*)(Args...)>(NtCompareSigningLevels);
|
||||
func(args...);
|
||||
pdfwkrnl.write_virtual_memory(qword_swap, &qword_original, sizeof(uint64_t)); // swap back
|
||||
return T{};
|
||||
}
|
||||
else {
|
||||
auto func = reinterpret_cast<FuncPtr>(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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user