मैं dtruss
एक ऐसी प्रक्रिया पर दौड़ा जो एक और लॉन्च करती है: लीग ऑफ़ लीजेंड्स लॉन्चर मुख्य गेम प्रक्रिया को कुछ तर्कों के साथ शुरू करता है जो मैं कमांड लाइन से होकर नहीं गुजर सकता।
क्या मेरा ध्यान आकर्षित किया गया था 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 में था।
- दूसरा तर्क एक चार सरणी की ओर इशारा करता है: लीगोफ्लेगेंड्स के लिए निष्पादन योग्य मार्ग
- तीसरा तर्क हमेशा एक ही बात की ओर इशारा करता है, जिसमें से अचिंतनीय स्ट्रिंग प्रतिनिधित्व है
\026l<?
मुझे नहीं पता कि यह क्या बनाना है। अंततः मैं अपने कस्टम तर्क के साथ, सी के माध्यम से स्वयं इस प्रक्रिया को लॉन्च करने में सक्षम होना चाहता हूं, लेकिन मुझे लगता है कि ऐसा करने के लिए पहला कदम यह समझना है कि इसे सिस्टम द्वारा कैसे बुलाया जाता है, और वह तीसरा तर्क क्या है।
मेरे प्रश्न हैं: मैं यह जानने के लिए और क्या कर सकता हूं कि तीसरा तर्क क्या है (?) और क्या मैं ऐसा करने की कोशिश कर रहा हूं (लांचर को दरकिनार करना) भी संभव है?
यह सीधे विंडोज कमांड-लाइन पर, के माध्यम से संभव है,
@start "" "League of Legends.exe" "8394" "LoLLauncher.exe" "" "spectator fspectate.op.gg:4081 tjJbtRLQ/HMV7HuAxWV0XsXoRB4OmFBr 1391881421 NA1"
लेकिन मैक पर यह सिर्फ लॉन्चर को पुनः लॉन्च करता है।
संदर्भ के लिए, मैं पहले ही एक लंबा (और अनुत्तरित) प्रश्न लिख चुका हूँ जो मैंने किया है।
कृपया मुझे बताएं कि मैं इस प्रश्न को कैसे सुधार सकता हूं। मैंने 50 से अधिक घंटे बिताए हैं, अपने दम पर यह पता लगाने की कोशिश कर रहा हूं, ड्रूटस आउटपुट के माध्यम से मजबूर कर रहा हूं, और मैं बस हार मानने के लिए तैयार हूं।