Я запустил dtruss
для процесса, который запускает еще один: запускает League of Legends запускает основной игровой процесс с определенными аргументами, которые я не могу передать через командную строку.
Что привлекло мое внимание, так это строка вывода dtruss:
PID/THRD RELATIVE ELAPSD CPU SYSCALL(args) = return
9386/0x47dac: 19625 3013 1805 posix_spawn(0x2A634FC, 0x38A2A00, 0xB06A56E0) = 0 0
Я посмотрел справочную страницу для posix_spawn
, и он должен принять 6 аргументов. Это, по порядку, PID
, /path/to/file
, file_actions
, aatrp
, argv
и envp
.
Я проходил через GDB в то же время, что и запуск dtruss
, так что я смог проверить нужную память.
- Первый аргумент указал на 0x000024d2, который был в PID.
- Второй аргумент указывает на массив символов: путь к исполняемому файлу для LeagueofLegends
- Третий аргумент всегда указывает на одну и ту же вещь, неразборчивое строковое представление которой равно
\026l<?
Я не знаю, что с этим делать. В конечном счете, я хочу иметь возможность запускать этот процесс самостоятельно через C с моими пользовательскими аргументами, но я думаю, что первый шаг, который нужно сделать, это понять, как он вызывается системой, и каков этот третий аргумент.
Мои вопросы: что еще я могу сделать, чтобы узнать, что это за третий аргумент (?) и возможно ли то, что я пытаюсь сделать (обойти лаунчер)?
Это возможно непосредственно в командной строке Windows через
@start "" "League of Legends.exe" "8394" "LoLLauncher.exe" "" "spectator fspectate.op.gg:4081 tjJbtRLQ/HMV7HuAxWV0XsXoRB4OmFBr 1391881421 NA1"
но на Mac это просто перезапускает лаунчер.
Для контекста, я уже написал длинный (и без ответа) вопрос, описывающий все, что я сделал.
Пожалуйста, дайте мне знать, как я могу улучшить этот вопрос. Я потратил более 50 часов, пытаясь выяснить это самостоятельно, путем грубого форсирования вывода dtruss, и я почти готов сдаться.