MCPcopy Create free account
hub / github.com/acl-dev/acl / DetourCreateProcessWithDllExA

Function DetourCreateProcessWithDllExA

lib_fiber/cpp/src/detours/creatwth.cpp:1539–1598  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1537}
1538
1539BOOL WINAPI DetourCreateProcessWithDllExA(_In_opt_ LPCSTR lpApplicationName,
1540 _Inout_opt_ LPSTR lpCommandLine,
1541 _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
1542 _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
1543 _In_ BOOL bInheritHandles,
1544 _In_ DWORD dwCreationFlags,
1545 _In_opt_ LPVOID lpEnvironment,
1546 _In_opt_ LPCSTR lpCurrentDirectory,
1547 _In_ LPSTARTUPINFOA lpStartupInfo,
1548 _Out_ LPPROCESS_INFORMATION lpProcessInformation,
1549 _In_ LPCSTR lpDllName,
1550 _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEA pfCreateProcessA)
1551{
1552 if (pfCreateProcessA == NULL) {
1553 pfCreateProcessA = CreateProcessA;
1554 }
1555
1556 PROCESS_INFORMATION backup;
1557 if (lpProcessInformation == NULL) {
1558 lpProcessInformation = &backup;
1559 ZeroMemory(&backup, sizeof(backup));
1560 }
1561
1562 if (!pfCreateProcessA(lpApplicationName,
1563 lpCommandLine,
1564 lpProcessAttributes,
1565 lpThreadAttributes,
1566 bInheritHandles,
1567 dwCreationFlags | CREATE_SUSPENDED,
1568 lpEnvironment,
1569 lpCurrentDirectory,
1570 lpStartupInfo,
1571 lpProcessInformation)) {
1572 return FALSE;
1573 }
1574
1575 LPCSTR szDll = lpDllName;
1576
1577 if (!DetourUpdateProcessWithDll(lpProcessInformation->hProcess, &szDll, 1) &&
1578 !DetourProcessViaHelperA(lpProcessInformation->dwProcessId,
1579 lpDllName,
1580 pfCreateProcessA)) {
1581
1582 TerminateProcess(lpProcessInformation->hProcess, ~0u);
1583 CloseHandle(lpProcessInformation->hProcess);
1584 CloseHandle(lpProcessInformation->hThread);
1585 return FALSE;
1586 }
1587
1588 if (!(dwCreationFlags & CREATE_SUSPENDED)) {
1589 ResumeThread(lpProcessInformation->hThread);
1590 }
1591
1592 if (lpProcessInformation == &backup) {
1593 CloseHandle(lpProcessInformation->hProcess);
1594 CloseHandle(lpProcessInformation->hThread);
1595 }
1596

Callers

nothing calls this directly

Calls 2

DetourProcessViaHelperAFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…