Beispiel #1
0
//! Startup entry-point.
int main(int argc, char *argv[])
{
    char szMircFilename[MAX_PATH], szStunTourFilename[MAX_PATH];
    char *filepart;
    if ((!GetFullPathName("mirc.exe", sizeof(szMircFilename), szMircFilename, &filepart) &&
        !GetFullPathName("mirc32.exe", sizeof(szMircFilename), szMircFilename, &filepart)) ||
        GetFileAttributes(szMircFilename) == -1L) {
        MessageBox(NULL, "Could not locate MIRC.EXE or MIRC32.EXE executable.",
                   "Unable to start", MB_OK | MB_ICONERROR);
        return -1;
    }
    if (!GetFullPathName("stuntour.dll", sizeof(szStunTourFilename), szStunTourFilename, &filepart) ||
        GetFileAttributes(szMircFilename) == -1L) {
        MessageBox(NULL, "Could not locate STUNTOUR.DLL interception library.",
                   "Unable to start", MB_OK | MB_ICONERROR);
        return -1;
    }



    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    memset(&si, 0, sizeof(STARTUPINFO));
    memset(&pi, 0, sizeof(PROCESS_INFORMATION));
    si.cb = sizeof(STARTUPINFO);
    if (!DetourCreateProcessWithDllA(szMircFilename,
                                        NULL,
                                        NULL,
                                        NULL,
                                        FALSE,
                                        0,
                                        NULL,
                                        NULL,
                                        &si,
                                        &pi,
                                        szStunTourFilename,
                                        NULL))
    {
        MessageBox(NULL, "Unable to launch mIRC with an injected library.",
                   "Unable to start", MB_OK | MB_ICONERROR);
        return 1;
    }
    return 0;
}
Beispiel #2
0
bool injectDLL(std::string processPath, std::string dllPath) {
	STARTUPINFOA _StartupInfo;
	PROCESS_INFORMATION _Information;

	ZeroMemory(&_StartupInfo, sizeof(STARTUPINFOA));
	ZeroMemory(&_Information, sizeof(PROCESS_INFORMATION));

	_StartupInfo.cb = sizeof(STARTUPINFOA);

	TCHAR pwd[MAX_PATH];
	GetCurrentDirectory(MAX_PATH, pwd);

	if (DetourCreateProcessWithDllA(processPath.c_str(), NULL, NULL, NULL, TRUE,
		CREATE_DEFAULT_ERROR_MODE, NULL, pwd, &_StartupInfo, &_Information, dllPath.c_str(), NULL)) {
		return 1;
	} else {
		return 0;
	}
}