Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C++ Windows
Good day.
 
I've made a DLL in which I export a function. I attach the DLL to a process and then I want to call that function in that process space from another process.
 
Here's the exported function:
 
__declspec(dllexport) DWORD WINAPI doSomething(LPVOID param)
{
    MessageBox(NULL, "doSomething()", "", 0);
    if (Switch::getInstance().currentStatus() == ON) {
        Switch::getInstance().switchOff();
    } else {
        Switch::getInstance().switchOn();
    }
 
    return 0;
}
 

I figured it could be done the same way you do DLL injection so I just went ahead and made a small test app like this:
 
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, TARGET_PROCESS_PID);
assert(hProcess != NULL);
 
HMODULE dllModule = LoadLibrary("Switch.dll");
assert(dllModule != NULL);
 
FARPROC functionStart = GetProcAddress(dllModule, "?doSomething@@YGKPAX@Z");
assert(functionStart != NULL);
 
assert(CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)functionStart, NULL, 0, NULL) != NULL);
 
printf("Switch toggled\n");
getchar();
 
FreeLibrary(dllModule);
CloseHandle(hProcess);
 
The idea is that instead of supplying the address of LoadLibrary (the way it's done during dll injection) to CreateRemoteThread I supply the address to my function.
 
Anyway, I inject the dll into the target process and then run the above code but the target proces crashes with 0xC0000005 error code (access violation if I'm not wrong).
 
Any ideas what's wrong?
Posted 8-May-11 11:38am
zoopp428

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Crashes where exactly?
 
You need to run this under the debugger to find the exact line it crashes on. Usually, knowing what is happening leads to a solution.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 7,903
1 Sergey Alexandrovich Kryukov 7,142
2 DamithSL 5,604
3 Manas Bhardwaj 4,986
4 Maciej Los 4,820


Advertise | Privacy | Mobile
Web02 | 2.8.1411023.1 | Last Updated 8 May 2011
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100