BOOL WINAPI CreateProcessA_Detour(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
{
	WCHAR wszApplicationName[1024];
	WCHAR wszCommandLine[1024];
	WCHAR wszCurrentDirectory[1024];

	MultiByteToWideChar( CP_ACP, 0, lpApplicationName, strlen(lpApplicationName)+1, wszApplicationName, sizeof(wszApplicationName)/sizeof(wszApplicationName[0]) );
	MultiByteToWideChar( CP_ACP, 0, lpCommandLine, strlen(lpCommandLine)+1, wszCommandLine, sizeof(wszCommandLine)/sizeof(wszCommandLine[0]) );
	MultiByteToWideChar( CP_ACP, 0, lpCurrentDirectory, strlen(lpCurrentDirectory)+1, wszCurrentDirectory, sizeof(wszCurrentDirectory)/sizeof(wszCurrentDirectory[0]) );

	FixAutoplay( wszApplicationName, wszCommandLine, wszCurrentDirectory );

	return Real_CreateProcessA(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
}
예제 #2
0
파일: main.cpp 프로젝트: Jonnyliu/COMRaider
BOOL __stdcall My_CreateProcessA(LPCSTR a0,LPSTR a1,LPSECURITY_ATTRIBUTES a2,LPSECURITY_ATTRIBUTES a3,BOOL a4,DWORD a5,LPVOID a6,LPCSTR a7,struct _STARTUPINFOA* a8,LPPROCESS_INFORMATION a9)
{

	AddAddr( SCOffset() );	    

	if(!nonet){
		infomsg("Skipping CreateProcessA(%s,%s)\n", a0, a1);
		return 0;
	}

	LogAPI("CreateProcessA(%s,%s,%x,%s)\n", a0, a1, a6, a7);

    BOOL ret = 0;
    try {
        ret = Real_CreateProcessA(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
    }
	catch(...){	} 

    return ret;



}