我們之間,好像一個沒有明確說明的服務。
每一次互動,都像在測試一個未公開的 API──
我送出請求,你偶爾回應,更多時候只丟個沉默。
我以為這是連線建立前的 handshake,
只要耐心等待、耐心理解,就能獲得授權。
結果才發現,我早就被卡在 Pending 狀態,
Pipe 通了,卻沒有得到真正的回覆。
我像低權限的使用者,不斷嘗試透過 ˋsvcctlˋ 呼叫,
期待哪天權限能被提升,能 impersonate 成為你唯一的 SYSTEM。
但時間久了才懂──
這其實不是遊戲,而是一場沒有出口的迴圈。
是我在癡心妄想罷了!
喜歡你真的好累。
曖昧太久,就像一個永遠不會回傳結果的請求。
所以,我決定 ClosePipe(),再也不玩了。
想像它是一條「水管」,兩個程式可以透過這條管道傳紙條、送資料。
在 Windows 裡,通常長得像這樣:
A 程式寫進去「哈囉」,B 程式就能從另一頭聽到「哈囉」。
有點像兩個房間用紙杯電話在講話。
svcctl
?它是 Windows 服務控制總管(Service Control Manager, SCM)的「專用電話線」。
管理員用它來跟系統說:
「幫我啟動 A 服務」
「把 B 服務停掉」
「新加一個服務」
\\.\pipe\svcctl
就像大樓的總管櫃台,有專線可以打去要求「開電梯」or「關冷氣」。
PSEXESVC.exe
?它是 PsExec 這個遠端工具在目標電腦上臨時安裝的一個小幫手(service)。
PsExec: https://learn.microsoft.com/zh-tw/sysinternals/downloads/psexec
管理員要遠端執行指令 → PsExec 先把 PSEXESVC.exe
丟到對方電腦。
這個小幫手會被啟動,開一條自己的管道(例如 \\.\pipe\psexesvc
)。
管理端透過這條管道,送指令進去,接收執行結果。
用完就會被移除或停掉。
像是請一個臨時工來幫忙搬東西,事情做完,他就消失了。跟渣男一樣。
PsExec 想要在遠端跑程式 → 它會透過 svcctl(服務總管專線)去跟系統說:「請幫我登記一個新服務(PSEXESVC)」
系統同意後,就會看到 新服務被建立。
PSEXESVC 啟動後,自己開一條新的 Named Pipe 來做溝通。
# 我決定放棄你了,我不喜歡這種模糊不清的感覺。