簡體   English   中英

創建過程時Windows如何通過ANSI命令行?

[英]How does Windows pass the ANSI command line when creating a process?

在進程初始化期間,Windows設置PEB結構 ,該結構除其他外包括結構RTL_USER_PROCESS_PARAMETERS ,該結構又指向命令行的UNICODE版本。
您也可以使用GetCommandLineW訪問它。

GetCommandLineA返回ANSI版本,並且(顯然)指向其他地址。

我的問題是,Windows是否在進程創建過程中初始化兩個版本,並且哪個數據結構(如果有的話)指向命令行的ANSI版本? 另外,除了調用GetCommandLineA之外,還有其他方法嗎?

謝謝

我在Windows 7上反匯編了Kernel32,發現在進程啟動期間,它訪問進程的PEB的Unicode命令行,並將指向該字符數據的指針存儲在GetCommandLineW()返回的變量中。 還將Unicode數據轉換為單獨的Ansi緩沖區, GetCommandLineA()返回該緩沖區到該Ansi緩沖區的指針。 據我所知,Ansi緩沖區是內核模塊專用的,它不存儲在PEB ,因此您不太可能像使用Unicode緩沖區那樣跨進程邊界訪問Ansi緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM