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); }
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; }