From 33dac1dfc9ece1efd2a6c260de5e7fa481b4f5e7 Mon Sep 17 00:00:00 2001 From: Cube Date: Wed, 6 Jan 2021 14:37:59 -0500 Subject: [PATCH] Added GetLongPathName APIs, which basically return the short path passed as argument. --- .gitignore | 2 ++ peloader/winapi/Paths.c | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/.gitignore b/.gitignore index fcf6377..9d1c432 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ mpclient avscript eicar.com +.gradle/ +.idea/ diff --git a/peloader/winapi/Paths.c b/peloader/winapi/Paths.c index bab53d0..8a51aa8 100644 --- a/peloader/winapi/Paths.c +++ b/peloader/winapi/Paths.c @@ -42,6 +42,32 @@ UINT WINAPI GetDriveTypeW(PWCHAR lpRootPathName) return DRIVE_FIXED; } +DWORD WINAPI GetLongPathNameA(LPCSTR lpszShortPath, + LPSTR lpszLongPath, + DWORD cchBuffer) +{ + // For now we just return the 8.3 format path as the long path + if (cchBuffer > strlen(lpszShortPath)) { + memcpy(lpszLongPath, lpszShortPath, sizeof(lpszShortPath)); + } + + return strlen(lpszShortPath); +} + +DWORD WINAPI GetLongPathNameW(LPCWSTR lpszShortPath, + LPWSTR lpszLongPath, + DWORD cchBuffer) +{ + // For now we just return the 8.3 format path as the long path + if (cchBuffer > strlen(lpszShortPath)) { + memcpy(lpszLongPath, lpszShortPath, sizeof(lpszShortPath)); + } + + return strlen(lpszShortPath); +} + DECLARE_CRT_EXPORT("GetTempPathW", GetTempPathW); DECLARE_CRT_EXPORT("GetLogicalDrives", GetLogicalDrives); DECLARE_CRT_EXPORT("GetDriveTypeW", GetDriveTypeW); +DECLARE_CRT_EXPORT("GetLongPathNameA", GetLongPathNameA); +DECLARE_CRT_EXPORT("GetLongPathNameW", GetLongPathNameW);