Skip to content

Commit a87bd3d

Browse files
author
Tor Lillqvist
committed
Hook also OleCreateLink (but just for logging for now)
1 parent f2cb3d3 commit a87bd3d

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

injecteddll/injecteddll.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,24 @@ static HRESULT __stdcall myCoGetClassObject(REFCLSID rclsid, DWORD dwClsContext,
511511
return nRetval;
512512
}
513513

514+
static HRESULT WINAPI myOleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid, DWORD renderopt,
515+
LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite,
516+
LPSTORAGE pStg, LPVOID *ppvObj)
517+
{
518+
if (pGlobalParamPtr->mbVerbose)
519+
std::cout << "OleCreateLink(" << riid << ")..." << std::endl;
520+
521+
HRESULT nRetval = OleCreateLink(pmkLinkSrc, riid, renderopt, lpFormatEtc, pClientSite, pStg, ppvObj);
522+
523+
if (pGlobalParamPtr->mbVerbose)
524+
{
525+
std::cout << "...OleCreateLink(" << riid << "): " << HRESULT_to_string(nRetval) << std::endl;
526+
}
527+
528+
return nRetval;
529+
}
530+
531+
514532
static HRESULT __stdcall myDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
515533
{
516534
#ifndef _WIN64
@@ -560,6 +578,15 @@ static PROC WINAPI myGetProcAddress(HMODULE hModule, LPCSTR lpProcName)
560578
HMODULE hOle32 = GetModuleHandleW(L"ole32.dll");
561579
FunPtr pFun;
562580

581+
if (hModule == hOle32 && std::strcmp(lpProcName, "OleCreateLink") == 0)
582+
{
583+
if (pGlobalParamPtr->mbVerbose)
584+
std::cout << "GetProcAddress(ole32.dll, OleCreateLink) from "
585+
<< prettyCodeAddress(_ReturnAddress()) << std::endl;
586+
pFun.pVoid = myOleCreateLink;
587+
return pFun.pProc;
588+
}
589+
563590
if (hModule == hOle32 && std::strcmp(lpProcName, "CoCreateInstanceEx") == 0)
564591
{
565592
if (pGlobalParamPtr->mbVerbose)
@@ -702,6 +729,8 @@ static HMODULE WINAPI myLoadLibraryW(LPCWSTR lpFileName)
702729
myCoCreateInstance);
703730
hook(false, pGlobalParamPtr, hModule, lpFileName, L"ole32.dll", "CoCreateInstanceEx",
704731
myCoCreateInstanceEx);
732+
hook(false, pGlobalParamPtr, hModule, lpFileName, L"ole32.dll", "OleCreateLink",
733+
myOleCreateLink);
705734
}
706735

707736
return hModule;
@@ -757,6 +786,8 @@ static HMODULE WINAPI myLoadLibraryA(LPCSTR lpFileName)
757786
myCoCreateInstance);
758787
hook(false, pGlobalParamPtr, hModule, sWFileName.data(), L"ole32.dll", "CoCreateInstanceEx",
759788
myCoCreateInstanceEx);
789+
hook(false, pGlobalParamPtr, hModule, sWFileName.data(), L"ole32.dll", "OleCreateLink",
790+
myOleCreateLink);
760791
}
761792

762793
return hModule;
@@ -808,6 +839,8 @@ static HMODULE WINAPI innerMyLoadLibraryExW(const std::string& caller, LPCWSTR l
808839
myCoCreateInstance);
809840
hook(false, pGlobalParamPtr, hModule, lpFileName, L"ole32.dll", "CoCreateInstanceEx",
810841
myCoCreateInstanceEx);
842+
hook(false, pGlobalParamPtr, hModule, lpFileName, L"ole32.dll", "OleCreateLink",
843+
myOleCreateLink);
811844
}
812845
}
813846

@@ -880,6 +913,8 @@ static HMODULE WINAPI myLoadLibraryExA(LPCSTR lpFileName, HANDLE hFile, DWORD dw
880913
"CoCreateInstance", myCoCreateInstance);
881914
hook(false, pGlobalParamPtr, hModule, sWFileName.data(), L"ole32.dll",
882915
"CoCreateInstanceEx", myCoCreateInstanceEx);
916+
hook(false, pGlobalParamPtr, hModule, sWFileName.data(), L"ole32.dll",
917+
"OleCreateLink", myOleCreateLink);
883918
}
884919
}
885920

@@ -1096,6 +1131,9 @@ extern "C" DWORD WINAPI InjectedDllMainFunction(ThreadProcParam* pParam)
10961131
hook(false, pParam, L"msvbvm60.dll", L"ole32.dll", "CoCreateInstanceEx",
10971132
myCoCreateInstanceEx);
10981133

1134+
hook(false, pParam, L"msvbvm60.dll", L"ole32.dll", "OleCreateLink",
1135+
myOleCreateLink);
1136+
10991137
hook(false, pParam, L"msvbvm60.dll", L"ole32.dll", "CoGetClassObject", myCoGetClassObject);
11001138

11011139
if (!hook(true, pParam, L"msvbvm60.dll", L"kernel32.dll", "GetProcAddress",
@@ -1127,6 +1165,7 @@ extern "C" DWORD WINAPI InjectedDllMainFunction(ThreadProcParam* pParam)
11271165
hook(false, pParam, nullptr, L"ntdll.dll", "LdrLoadDll", myLdrLoadDll);
11281166
hook(false, pParam, nullptr, L"ole32.dll", "CoCreateInstance", myCoCreateInstance);
11291167
hook(false, pParam, nullptr, L"ole32.dll", "CoCreateInstanceEx", myCoCreateInstanceEx);
1168+
hook(false, pParam, nullptr, L"ole32.dll", "OleCreateLink", myOleCreateLink);
11301169
hook(false, pParam, nullptr, L"ole32.dll", "CoGetClassObject", myCoGetClassObject);
11311170
if (nHookedFunctions == 0)
11321171
{

0 commit comments

Comments
 (0)