diff --git a/.gitignore b/.gitignore index d47cc9c..051dc49 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ x64/Debug/VX-API.exe *.pdb .vs/VX-API/v17/.suo +.vs/VX-API/v17/DocumentLayout* *.vsidx *.db *.db-shm diff --git a/README.md b/README.md index 749197b..6e55ef8 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ You're free to use this in any manner you please. You do not need to use this en | Function Name | Original Author | | ------------- | --------------- | | GetLastErrorFromTeb | smelly__vx | +| GetLastErrorFromOffset | d4ytox | | GetLastNtStatusFromTeb | smelly__vx | | RtlNtStatusToDosErrorViaImport | ReactOS | | GetLastErrorFromTeb | smelly__vx | diff --git a/VX-API/GetLastErrorFromOffset.cpp b/VX-API/GetLastErrorFromOffset.cpp new file mode 100644 index 0000000..9dc6de2 --- /dev/null +++ b/VX-API/GetLastErrorFromOffset.cpp @@ -0,0 +1,10 @@ +#include "Win32Helper.h" + +DWORD GetLastErrorFromOffset(VOID) +{ +#ifdef _WIN64 + return (DWORD)__readgsqword(0x68); +#else + return __readfsdword(0x34); +#endif +} diff --git a/VX-API/VX-API.vcxproj b/VX-API/VX-API.vcxproj index 6b63a1d..5c6cb17 100644 --- a/VX-API/VX-API.vcxproj +++ b/VX-API/VX-API.vcxproj @@ -187,6 +187,7 @@ + diff --git a/VX-API/VX-API.vcxproj.filters b/VX-API/VX-API.vcxproj.filters index 41366c2..eb99758 100644 --- a/VX-API/VX-API.vcxproj.filters +++ b/VX-API/VX-API.vcxproj.filters @@ -840,6 +840,9 @@ Source Files\Proxied Functions + + Source Files\Error Handling + diff --git a/VX-API/Win32Helper.h b/VX-API/Win32Helper.h index 3e161ab..4bc7b1f 100644 --- a/VX-API/Win32Helper.h +++ b/VX-API/Win32Helper.h @@ -135,6 +135,7 @@ BOOL ExtractFilesFromCabIntoTargetA(LPCSTR CabFile, LPCSTR OutputDirectory); ERROR HANDLING *******************************************/ DWORD GetLastErrorFromTeb(VOID); +DWORD GetLastErrorFromOffset(VOID); NTSTATUS GetLastNtStatusFromTeb(VOID); VOID SetLastErrorInTeb(_In_ DWORD ErrorCode); VOID SetLastNtStatusInTeb(_In_ NTSTATUS Status);