我有一個只讀腳本,第一行關閉回顯。例如script.bat
與內容:如何忽略回顯並獲取命令執行日誌
@echo off
REM bunch of logic goes here
@echo on
是否有可能以某種方式欺騙,並得到呼應/印刷反正所有的命令? 我可以在腳本調用之前/之後調用任何東西,只是不能更改腳本代碼本身。我想這將是這樣的:
REM what can I do here?
call script.bat
REM execution log printed?
我有一個只讀腳本,第一行關閉回顯。例如script.bat
與內容:如何忽略回顯並獲取命令執行日誌
@echo off
REM bunch of logic goes here
@echo on
是否有可能以某種方式欺騙,並得到呼應/印刷反正所有的命令? 我可以在腳本調用之前/之後調用任何東西,只是不能更改腳本代碼本身。我想這將是這樣的:
REM what can I do here?
call script.bat
REM execution log printed?
做的更簡單的方法,是批處理文件設置爲只讀是複製文件,刪除@echo off
和運行復制的文件。
如果這是不可能的,你可以試試Jeb發現的buffer overflow。創建一個具有以下內容
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
(有點超過256個左括號),一個批處理文件,打開一個cmd
實例並執行它。然後,從相同的cmd
實例中,調用script.bat
。 也許如果緩衝區溢出不會干擾,您可以看到執行的命令。
在這一刻我不記得另一種方式。
注:就完成,你問什麼是技術上是可行的,但不能直接解決的。前一段時間,爲了解決關於批處理文件調用的問題,goto
命令和標籤我修補了一個cmd.exe
進程的副本,以避免何時輸出正在執行的命令的任何檢查,但此過程取決於可執行文件的確切版本。
美麗!緩衝區溢出就像一個魅力。我做了以下操作:一個腳本有256個左括號,主腳本調用cmd-overflow.bat,然後調用script-to-debug.bat,打印所有的細節。 – Andrey
這漫長的命令讀取sample.bat
行由行,每行沒有明確說@echo off
,它執行它,有效地跳過@echo off
。
@for /F "tokens=*" %a in (sample.bat) do @if NOT "%a" == "@echo off" %a
它可能不是非常適合有關閉命令呼應的偷偷摸摸的方式複雜BAT文件,但它應該在最基本的情況下工作:
'@echo off'只是禁用呼應的命令是執行,而不是命令的輸出。無論是否有@echo off,'bla bla'都可以看到。 –
@MCND對不起,這個例子過於簡單。編輯問題以反映實際意圖。 – Andrey