у processExplorer есть фича. он может показывать кто кого запустил. Есть приложение Soft1.exe которое делает ShellExec / CreateProcess ( ..., Soft2.exe , ...) вопрос. как Soft2.exe -у узнать что его запустил Soft1.exe ? PrevHinstance? Как?
нашел это http://www.codeproject.com/KB/threads/ParentPID.aspx спасибо кто мысленно хотел помочь... а проще есть способ?
Штука хорошая. Так отладчик палить можно,олю например. (не все процессы сканить, а конкретно взяться за родителя, а если нет доступа к нему то точно отладчик ))) )
Можно через Process32First/Process32Next Можно через ZwQuerySystemInformation В возвращаемой структуре есть PID и PPID - это соответственно идентификатор процесса и идентификатор родительского процесса Если PPID of Soft1.exe == PID soft2.exe значит sott1.exe бы запущен через soft2.exe
а как можно изменить идентификатор родительского процесса на любой другой, например на explorer.exe ? Или, перефразировав, как можно запустив дочерний процесс из своей проги, но что бы в системе дочерний процесс как бы был запущен от другого процесса? Переименовать свой процесс в explorer.exe не хочется, так как, будет выглядеть подозрительно еще один explorer.exe.
Бесполезно, т.к. хранится именно PID. Пропатчить можно из ядра, EPROCESS::InheritedFromUniqueProcessId.
beginner инжект-батюшка OpenProcss VirtualAllocEx WriteProcessMemory CreateRemoteThread Но палится наверное уже всем, чем можно
zoool ну значит лучше всего, что бы второй процесс запускался ручками неудобно конечно, ну что ж делать...
А в чём проблемма? автозапуск? подгрузи длл к эксплореру HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad